`
d2hellen
  • 浏览: 105666 次
  • 性别: Icon_minigender_1
  • 来自: 珠海
社区版块
存档分类
最新评论

一个典型的iptables防火墙配置

 
阅读更多
机房安全是必须考虑的事情。一些服务器设备必须暴露公网IP,很容易遭到攻击。配置硬件或软件防火墙,只开放可以访问的端口,拒绝其他不合法的IP的请求,包括端口扫描。甚至拒绝ping。将大大提升服务器的安全。
本脚本配置iptables,只允许北京和香港远程访问香港的服务器。但会开放web端口给任何IP访问。可以做出更严格的限制,只允许某几个IP访问。这样,规避大部分的随意的攻击。
本脚本缺省拒绝所有连接,这是必须小心的。如果用iptables -F来清空所有iptables的规则,可能导致远程无法访问服务器,必须先修改缺省规则为ACCEPT所有。所以有一种替代方法,在规则末尾增加一条drop任何包的规则。这样清除规则后,不会导致无法访问。 centos 5.2调试通过。
#!/bin/bash
# 2010.10.14 modified by zhouhh
### 1.允许内网192.168.0.0,通过内网卡的所有协议
### 2.允许北京电信、网通、电信通和香港26段共4个子网通过外网访问ssh端口,允许所有ping本机
### 3.允许任何地址,通过任何网口访问本机web端口
### 4.开放所有UDP端口
if [ $UID != 0 ]; then
	echo "must be root to run this script!"
	exit
fi
 
### 定义子网变量
 BJ_DXT=218.249.75.128/26
 BJ_DX=219.141.178.96/28
 BJ_CNC=123.127.24.128/25
 HK_26=210.211.26.0/24
 NET_LAN=192.168.1.0/24
### 定义本地IP
 IP_LAN=192.168.1.
 IP_WAN=210.211.26.
 
### 定义服务端口 
 ssh_port=60000
 web_port=80
 sip_port=5060
 
### 定义网络接口
 ETH_LAN=eth0
 ETH_WAN=eth1
 
### 定义程序及路径变量
 ipt=/sbin/iptables
 
### 具体规则
 echo "[+]Flushing all rules..."                                                                                                                            
 iptables --flush
 service iptables stop                                         
 
 echo "[+]Set default policy..."    
#缺省拒绝所有接入                                                                
 $ipt -P INPUT DROP                                                  
 $ipt -I INPUT 1 -m state --state ESTABLISHED,RELATED -j ACCEPT  
 
 $ipt -N TCP_ERR                                                                               
 $ipt -I INPUT 2 -j TCP_ERR                                                                    
 
 echo "[+]Creating rules for web port..."                                                                                               
 $ipt -A INPUT -p tcp --dport $web_port -m state --state NEW -j ACCEPT      
 
 echo "[+] accept all UDP ports..."
 $ipt -A INPUT -p udp -j ACCEPT      
 
### 允许北京和香港ping本机,其他拒绝
# ping 不限制,zhouhh comment 
# echo "[+]Creating icmp rules..."                                                                                         
# $ipt -A INPUT -i $ETH_WAN -s $BJ-DXT -p icmp --cmp-type 8 -j ACCEPT                          
# $ipt -A INPUT -i $ETH_WAN -s $BJ-DX  -p icmp --cmp-type 8 -j ACCEPT                          
# $ipt -A INPUT -i $ETH_WAN -s $BJ-CNC -p icmp --cmp-type 8 -j ACCEPT                          
# $ipt -A INPUT -i $ETH_WAN -s $HK-26  -p icmp --cmp-type 8 -j ACCEPT                          
# $ipt -A INPUT -i $ETH_WAN -p icmp -j DROP                                                   
 
 $ipt -A INPUT  -p icmp -j ACCEPT                                                   
 
###  允许内网所有IP通信                                                                                               
 echo "[+]Permit lan all..."
 $ipt -A INPUT -i $NET_LAN -s $NET_LAN -j ACCEPT                                              
 $ipt -A INPUT -i lo -j ACCEPT
 
### 其他规则start
 
### 其他规则end     
 
### 拒绝错误的TCP包                                                                                          
 echo "[+]Creating TCP rules for new chain TCP_ERR..."                                                                                               
 $ipt -I TCP_ERR 1  -p tcp --tcp-flags ALL ALL -j DROP                                       
 $ipt -I TCP_ERR 2  -p tcp --tcp-flags ALL NONE -j DROP                                      
 $ipt -I TCP_ERR 3  -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP                               
 $ipt -I TCP_ERR 4  -p tcp --tcp-flags SYN,RST SYN,RST -j DROP                               
 $ipt -I TCP_ERR 5  -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG -m limit --limit 1/s --log-prefix  "bad package"
 $ipt -I TCP_ERR 6  -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP                                 
 $ipt -I TCP_ERR 7  -p tcp ! --syn -m state --state NEW -j DROP       
 
### 允许北京和香港访问ssh端口                                                                 
 echo "[+]Creating ssh rules..."                             
 $ipt -A INPUT -i $ETH_WAN -s $BJ_DXT -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT  
 $ipt -A INPUT -i $ETH_WAN -s $BJ_DX  -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT  
 $ipt -A INPUT -i $ETH_WAN -s $BJ_CNC -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT  
 $ipt -A INPUT -i $ETH_WAN -s $HK_25  -p tcp --dport $ssh_port -m state --state NEW -j ACCEPT  
 
 
### 保存配置让规则随系统启动 
 service iptables save
分享到:
评论

相关推荐

    iptables配置

    linux系统下iptables防火墙企业典型配置。

    构筑Linux防火墙之IPtables的概念与用法

    防火墙典型的设置是有两个网卡,一个流入,一个流出。iptables读取流入和流出的数据包的报头,然后将它们与规划集(ruleset)相比较,然后将可接受的数据包从一个网卡转发至另外一个网卡。对于被拒绝的数据包,可以被...

    AFW:用于 Chef 和 Linux 的高级防火墙说明书,使用 Iptables 并在每个节点上动态配置入站和出站规则

    Chef 的高级防火墙 (afw) __A__dvanced __F__ire__W__all (AFW) 用于 Chef 和 Linux,它使用 Iptables 在节点上动态配置入站和出站规则。 AFW 广泛使用 Chef 搜索来开放对系统的访问。... 一个典型的规则如下

    Linux+Apache+Mysql+PHP典型配置.pdf

    【Linux+Apache+Mysql+PHP...理解每个组件的功能和配置选项,将有助于构建一个稳定、高效的Web服务器环境。在实际操作过程中,遇到问题应查看日志文件,如Apache的`error_log`和MySQL的`.err`文件,以定位和解决问题。

    Delphi 12 控件之CA-3.pdf

    - **配置案例**:提供几个典型的防火墙配置案例,如允许特定端口访问、限制IP访问等。 综上所述,本次作业覆盖了安全协议分析、密码学中的MD5哈希函数及其碰撞攻击、Linux防火墙配置等多个方面,旨在全面考察学生...

    cents-6.3安装配置

    在本文中,我们将详细探讨如何在Windows环境下安装配置Cents-6.3,这是一个基于Linux的发行版。首先,我们要确保拥有必要的安装文件,包括VMware Workstation虚拟机软件和CentOS-6.3的ISO镜像文件。下面是一步一步的...

    squid单网卡

    请注意,这只是一个基础配置,实际环境中还需要考虑安全性、日志记录、性能优化等问题。例如,你可能需要设置访问日志、限制带宽、阻止恶意网站等高级配置。 在配置 Squid 时,务必了解每个参数的作用,并根据实际...

    kickstart 全自动化部署安装RHEL 7.docx

    3. 配置防火墙,关闭 iptables 防火墙。 在 RHEL 7 的安装过程中,可以通过选择 HTTP、FTP、NFS 方式之一进行安装。并且, Kickstart 文件可以涵盖安装过程中可能出现的所有需要填写的参数,从而实现无人值守的安装...

    linux安全配置1.pdf

    - **防火墙配置**: 使用iptables或firewalld设置防火墙规则,限制不必要的入站和出站流量。 - **SELinux策略**: 开启并配置强制访问控制(MAC),如SELinux,以增加额外的安全层。 - **日志监控**: 定期检查`/var/...

    服务器安装与配置指南

    例如,Nginx 1.8.x 是一个相对稳定且广泛使用的版本,适用于大多数Web服务场景。 ### 二、系统配置步骤 #### 1. 系统安装与基本设置 - 安装系统后,首先需要检查并确认SELinux的状态。 - SELinux可能会影响系统的...

    CentOS6.5-LAMP配置

    **LAMP环境详解** LAMP(Linux、Apache、...通过以上步骤,你将能够成功地在CentOS 6.5上配置一个运行稳定的LAMP服务器,为网站或应用程序提供可靠的基础。记得在每个步骤后检查服务的状态和配置,确保一切正常运行。

    squid详细配置

    5. **发起连接**:Squid 使用自身的一个端口(例如 1037)向该 IP 地址的 80 端口发起连接请求,获取所需页面内容。 6. **数据传输**:Squid 收到服务器响应后,将数据传送给客户端。 7. **页面展示**:客户端浏览器...

    hadoop入门-01-集群搭建.docx

    在一个典型的4节点Hadoop集群搭建示例中,分配如下: - hdp-cluster-01:NameNode和SecondaryNameNode - hdp-cluster-02:ResourceManager - hdp-cluster-03和hdp-cluster-04:DataNode和NodeManager 搭建过程涉及...

    AIX入门与提高6

    - **问题描述**:模拟一个典型的AIX系统性能下降的场景。 - **诊断过程**:利用系统自带工具和第三方软件进行问题定位。 - **解决方案**:根据诊断结果,采取相应的措施解决问题。 ### 结论 AIX作为一种高性能的...

    .Spark编译与部署(上)--基础环境搭建

    本文档介绍了一个典型的实验环境,具体配置如下: - **主机操作系统**:Windows 64位,具有双核4线程处理器,主频2.2GHz,配备10GB内存。 - **虚拟化软件**:VMware Workstation 9.0.0,版本号为812388。 - **...

    玩透LINUX系统

    - **初始化进程**:`init`进程是第一个被内核启动的进程,它根据`/etc/inittab`文件中的配置来初始化系统服务。 - **网络配置**: - **静态IP配置**:通过编辑`/etc/sysconfig/network-scripts/ifcfg-ethX`文件...

    企业案例教学在“Linux项目实战”课程中的运用.pdf

    使用iptables构建企业的防火墙体系,熟练使用SNAT、DNAT策略提供共享上网、发布内网服务器典型网关应用;并结合Squid提供透明代理服务,构建DHCP及DHCP中继服务,为多个物理网段的局域网主机提供动态地址配置服务。 ...

    PXE&Kickstart; 安装部署实施文件

    以下是一个典型的实验环境配置示例: ##### 2.1 实验环境 - VMware Workstation 12 - CentOS release 6.5 桌面版 - 网络模式:桥接 ##### 2.2 网络配置 - DHCP/TFTP 服务器 IP:172.17.25.119 - HTTP/FTP/NFS ...

    storm集群部署手册

    - 永久性关闭防火墙:使用`chkconfig iptables off`命令。 - 即时关闭防火墙:使用`service iptables stop`命令。 **知识点10:创建统一的工作目录** - **操作指南:** - 在每台服务器上创建`/export`目录及其...

Global site tag (gtag.js) - Google Analytics