CentOS上的Iptable规则示例
时间:2020-03-05 15:29:30 来源:igfitidea点击:
iptable是IPv4数据包过滤和NAT的管理工具。
iptables用于设置,维护和检查Linux内核中的IPv4数据包过滤规则的表。
可以定义几个不同的表。
每个表包含许多内置链,也可以包含用户定义的链条。
每个链是可以匹配一组数据包的规则列表。
每个规则指定与匹配的数据包进行操作。
这被称为"目标",这可能是跳转到同一表中的用户定义的链。
防火墙规则指定数据包和目标的标准。
如果数据包不匹配,则将链中的下一个规则进行检查;如果它确实匹配,则下一个规则由目标的值指定,它可以是用户定义链或者特殊值之一的名称接受,删除,队列或者返回。
- 接受意味着让数据包通过。
- 下降意味着将软件包放在地板上
- 队列意味着将数据包传递给用户空间
- 返回意味着停止遍历此链条并在上一条链中的下一个规则中恢复。
共有4个链:
- 输入 - 默认链用于寻址到系统的数据包。使用此选项可打开或者关闭传入的端口和IP地址/子网
- 输出 - 当从系统生成数据包时使用默认链。使用此打开或者关闭输出端口和IP地址/子网
- 转发 - 当数据包通过另一个接口时使用默认链条。通常在将Linux设置为路由器时使用
- RH-Firewall-1输入 - 这是一个用户定义的自定义链。它由输入,输出和前链使用。
安装iptables.
我们可以通过以下命令安装iptables。
[root@vpn ~]# yum install iptables -y
检查Iptable版本:
[root@vpn ~]# iptables --version iptables v1.3.5
检查iptables状态:
[root@vpn ~]# service iptables status
启动iptables:
[root@vpn ~]# service iptables start Flushing firewall rules: [ OK ] Setting chains to policy ACCEPT: filter [ OK ] Unloading iptables modules: [ OK ]
设置iptables在启动时启动:
[root@vpn ~]# chkconfig iptables on
CentOS的默认配置文件是/etc/sysconfig/iptables。
它是通过读取此文件激活防火墙的系统脚本
宽松的规则
1)重置所有规则(f)和链(x),如果已经定义了iptables规则
#iptables -t filter -F #iptables -t filter -X
2)显示防火墙的状态
#iptables -L -n -v
3)阻止空报文
#iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
4)拒绝SYN-FLOOC攻击
#iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
5)拒绝侦交包
#iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
6)将LocalHost接口添加到防火墙过滤器
#iptables -A INPUT -i lo -j ACCEPT
7)允许Web服务器流量
#iptables -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT #iptables -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT
8)允许用户使用SMTP服务器
#iptables -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT #iptables -A INPUT -p tcp -m tcp --dport 465 -j ACCEPT
9)允许用户在他们的服务器上阅读电子邮件
允许POP3流量
#iptables -A INPUT -p tcp -m tcp --dport 110 -j ACCEPT #iptables -A INPUT -p tcp -m tcp --dport 995 -j ACCEPT
允许POP3流量
#iptables -A INPUT -p tcp -m tcp --dport 143 -j ACCEPT #iptables -A INPUT -p tcp -m tcp --dport 993 -j ACCEPT
10)允许SSH流量
#iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT
如果来自一个来源,则允许流量到SSH端口
#iptables -A INPUT -p tcp -s YOUR_IP_ADDRESS -m tcp --dport 22 -j ACCEPT
11)允许任何已建立的传出连接接收来自服务器的回复
#iptables -I INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
12)阻止IP地址
#iptables -A INPUT -s IP_ADDRESS -j DROP
13)阻止特定IP地址的端口
#iptables -A INPUT -p tcp -s IP_ADDRESS --dport PORT -j DROP
14)打开特定IP地址的端口
#iptables -A INPUT -p tcp -s IP_ADDRESS --dport PORT -j ACCEPT
15)允许特定IP地址的打印机
#iptables -A INPUT -s IP_ADDRESS -p udp -m udp --dport 631 -j ACCEPT
16)打开DNS
#iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT
17)打开MySQL端口
#iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
18)打开一系列端口(例如:7000-7100)
#iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 7000:7100 -j ACCEPT
设置所有规则后,我们需要保存规则并重新启动iptables
#service iptables save #service iptables restart