modprobe ip_nat_ftp
lsmod | grep tcp
redhat中iptables的脚本文件为/etc/rc.d/init.d/iptables
service iptables start 启用保存的规则;
service iptables stop 清空链;
/etc/sysconfig/iptables 保存规则的文件;
/etc/sysconfig/iptables-config 向iptables脚本提供配置文件的文件;
将规则保存到配置文件中的方法:
1)service iptables save 将规则保存到配置文件中的命令;
2)iptables-save > /etc/sysconfig/iptables-test (将生效的规则保存至自己指定文件中);
iptables-restore < /etc/sysconfig/iptables-test (从另外自己指定的规则文件启用规则);
地址转换:
源地址转换:
-j SNAT --to-source 192.168.100.1 指定源地址转换成其它地址;
-j MASQUERADE(地址伪装,比SNAT占用更多的资源,当ADSL拨号上网做转换时比较常用);
目标地址转换:一般要限定协议和端口;
-j DNAT --to-destination 192.168.100.2
PNAT端口转换:
-j DNAT --to-destination 192.168.100.2[:port]请求的和转发的相同可省略,不相
同不省略;
-j LOG 转发日志;
--log-prefix “DNAT for web”可以与-m limit --limit 3/minute --limit-burst 3合用;
利用iptables的recent模块来抵御DOS攻击;(以拒绝服务的方式实现,很有限)
-m recent
--set --name SSH
--update --seconds 300 --hitcount 3
利用iptables的recent模块来抵御DOS攻击示例;
ssh: 远程连接,
iptables -I INPUT -p tcp --dport 22 -m connlimit --connlimit-above 3 -j DROP
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -I INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 3 --name SSH -j DROP
1.利用connlimit模块将单IP的并发设置为3,会误杀使用NAT上网的用户,可以根据实际情况增大该值;
2.利用recent和state模块限制单IP在300s内只能与本机建立3个新连接,被限制一分钟后即可恢复访问;
下面对最后两句做一个说明:
1.第一句是记录访问tcp 22端口的新连接,记录名称为SSH;
--set 记录数据包的来源IP,如果IP已经存在将更新已经存在的条目;
2.第三句是指SSH记录中的IP,300s内发起超过3次连接则拒绝此IP的连接;
--update 是指每次建立连接都更新列表;
--seconds必须与--rcheck或者--update同时使用;
--hitcount必须与--rcheck或者--update同时使用;
3.iptables的记录:/proc/net/ipt_recent/SSH
本文出自 “凌驾于linux之上” 博客