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