在linux系统中,iptables为我们提供了批量备份与恢复规则的命令,也提供了标准的系统服务以便开启、关闭防火墙功能。 一:规则的导出、导入: 规则的备份及还原: 防火墙规则的批量备份、还原用到两个命令 iptables-save、iptables-restore,分别用来保存(Save)和恢复(Restore)。 1、iptables-save 命令: iptables-save命令用来批量导出Linux防火墙规则。 直接执行iptables-save:显示出当前启用的所有规则,按照raw、mangle、nat、filter表的顺序依次列出; “ -t表名”:列出某一个表; eg:列出nat表的规则内容: 注解:
[root@iptables ~]# iptables-save > /opt/iptables.txt###备份所有表的规则 [root@iptables ~]# wc -l /opt/iptables.txt###确认备份规则的行数 备份某一个表的格式:iptables-save -t 表名 eg:备份当前filter表的规则内容为filter.txt文件: 2、iptables-restore 命令: 作用:批量导入Linux防火墙规则。也需要结合重定向输入来指定备份文件的位置。 3、使用iptables服务: 脚本位置:/etc/init.d/iptables 规则文件位置:/etc/sysconfig/iptables (默认没有此文件) a.自动启用防火墙规则: 将调试好的各种iptables规则,使用iptables-save备份为默认的规则配置文件/etc/sysconfig/iptables,然后通过iptables服务来调用。 eg:保存当前的防火墙规则,并设置在每次开机后根据已保存的规则内容自动进行重建: 如果此前已经设置有防火墙规则,则start操作将会先检查并清空现有规则、卸载部分模块后再重新构建(相当于restart),可能导致网络连接短暂中断,建议开机自动执行,而不是手动执行。 b.清空所有防火墙规则: 停用iptables服务是一次性清空所有表的规则的最快捷的方法: 二:使用防火墙脚本: 防火墙脚本的优势:便于使用shell变量、程序控制逻辑;作为独立的文件在需要重用、移植使用时会非常方便。 1.定义基本变量: 将防火墙的网卡、IP地址、局域网段、iptables命令的路径等定义为变量: INET_IF="eth0" ###外网接口 INET_IP="173.16.16.1" ###外网接口地址 LAN_IF="eth1" ###内网接口 LAN_IP="192.168.10.1" ###内网接口地址 LAN_NET="192.168.10.0/24" ###内网网段 LAN_WWW_IP="192.168.10.2" ###网站服务器的内部地址 IPT="/sbin/iptables" ###iptables命令的路径 MOD="/sbin/modprobe" ###modprobe命令的路径 CTL="/sbin/sysctl" ###sysctl命令的路径 2.加载内核模块(5.5系统为例): (与FTP发布相关的ip_nat_ftp、ip_conntrack_ftp)需手动进行加载。 $MOD ip_tables ###iptables基本模块 $MOD ip_conntrack ###连接跟踪模块 $MOD ipt_REJECT ###拒绝操作模块 $MOD ipt_LOG ###日志记录模块 $MOD ipt_iprange ###支持IP范围匹配 $MOD xt_tcpudp ###支持TCP、UDP协议 $MOD xt_state ###支持状态匹配 $MOD xt_multiport ###支持多端口匹配 $MOD xt_mac ###支持MAC地址匹配 $MOD ip_nat_ftp ###支持FTP地址转换 $MOD ip_conntrack_ftp ###支持FTP连接跟踪 3.调整/proc参数:
$CTL -w net.ipv4.ip_default_ttl=128 ###修改ICMP响应超时间 $CTL -w net.ipv4.icmp_echo_ignore_all=1 ###拒绝响应ICMP请求 $CTL -w net.ipv4.icmp_echo_ignore_broadcasts=1 ###拒绝响应ICMP广播 $CTL -w net.ipv4.tcp_syncookies=1 ###启用SYN Cookie机制 $CTL -w net.ipv4.tcp_syn_retries=3 ###最大SYN请求重试次数 $CTL -w net.ipv4.tcp_synack_retries=3 ###最大ACK确认重试次数 $CTL -w net.ipv4.tcp_fin_timeout=60 ###TCP连接等待超时 $CTL -w net.ipv4.tcp_max_syn_backlog=3200 ###SYN请求的队列长度 注解: ICMP相关的参数调整可使本机忽略其他主机的ping测试,TCP相关的内核参数调整可适当提高本机抗DoS攻击的能力。 4.设置具体的iptables规则: aa.清理已有的规则(避免已有防火墙规则造成的干扰): 删除所有表中用户自定义的链、清空所有链内的规则: 实际生产环境中,防火墙过滤规则建议采取“默认拒绝”的策略。 bb.设置nat表中的各种规则、设置filter表中的各种规则(根据实际需求自行添加):
cc.为脚本文件添加执行权限,并设置自启动,并将脚本路径写入到/etc/rc.local文件中: 使用IP地址黑、白名单: 黑白名单需要提前建立ip地址文件,同时需要注意的是:必须严格控制访问ip地址名单列表的权限。
最后,通过对iptables这三部分的介绍,我们可以根据需求进行简单的、亦或复杂的批量部署的主机型防火墙脚本及网络型防火墙脚本编写。 |