iptables是Linux中功能最为强大的防火墙软件之一,使用灵活,可以对流入和流出服务器的数据包进行很精细的控制。
在 iptables 中,规则是按照从上到下的顺序匹配的,一旦匹配到某条规则,后续的规则将不再检查。
命令选项用于指定iptables的执行方式,包括插入规则,删除规则和添加规则,常用的命令选项如下:
匹配条件用来实现更为精细和具体的条件,如网络接口名称,协议名称,源目的端口号等,高频匹配条件如下:
对于符合过滤规则或条件的数据包,需要进行相应的操作,如下:
允许外部访问指定端口(3306)
需要注意的是,使用iptables时,规则添加的顺序至关重要。
通常服务器不允许其他主机ping自己,实现方法如下:
可使用iptables封杀指定IP,关键操作如下:
要添加IP段到封停列表中,使用下面的命令:
可使用iptables封杀指定IP端口,关键操作如下:
如果要放行某些IP的1234端口,可以进行如下操作:
服务器大多需要SSH服务,iptables需要开启SSH端口,具体操作如下:
服务器大多需要访问Web服务的,可用如下规则打开Web服务访问:
对于电子邮件的发送和接收比较麻烦,这里采用默认和安全两种方式,关键操作如下:
如果是上述之外的服务,如MySQL或Postgre等,请用相应端口替换即可。
需要的端口和协议都开启了,最后就需要iptables绝对拒绝上面规则之外的数据包内容,参考操作如下:
或直接
你可以使用iptables-persistent
软件包来实现iptables规则在开机时自动加载。
以下是设置iptables自定义规则开机自动加载的步骤:
iptables-persistent
软件包:/etc/iptables/rules.v4
和/etc/iptables/rules.v6
是IPv4和IPv6的规则文件,你可以根据需要选择其一或两者都配置。例如,使用以下命令备份iptables规则到IPv4规则文件:启用iptables规则的自动加载:
重启系统以验证规则是否成功自动加载:
在系统重新启动后,iptables规则应该会自动加载。可以使用以下命令来检查规则是否加载成功:
注意:在使用iptables-persistent
时,避免直接使用iptables
和ip6tables
命令来修改规则,以免在下次系统启动时丢失自定义规则。可以通过编辑规则文件/etc/iptables/rules.v4
和/etc/iptables/rules.v6
来进行规则的修改。
你可以使用iptables
服务来实现iptables规则在开机时自动加载。
以下是设置iptables自定义规则开机自动加载的步骤:
配置iptables规则:
编辑/etc/sysconfig/iptables
文件,该文件保存了IPv4的iptables规则。
在文件中添加自定义规则。例如,允许SSH连接的规则:
保存并关闭文件。
启用iptables服务:
重启系统以验证规则是否成功自动加载:
在系统重新启动后,iptables规则应该会自动加载。可以使用以下命令来检查规则是否加载成功:
如果你使用的是IPv6规则,可以编辑/etc/sysconfig/ip6tables
文件,并执行类似的步骤来配置和启用IPv6的iptables规则。
注意:在使用iptables
服务时,避免直接使用iptables
命令来修改规则,以免在下次系统启动时丢失自定义规则。建议通过编辑规则文件/etc/sysconfig/iptables
和/etc/sysconfig/ip6tables
来进行规则的修改。