防止 sync flood 攻击的设定:
iptables -N synfoold iptables -A synfoold -p tcp --syn -m limit --limit 1/s -j RETURN iptables -A synfoold -p tcp -j REJECT --reject-with tcp-reset iptables -A INPUT -p tcp -m state --state NEW -j synfoold |
测试过一个很忙碌的站台用这个设定,老实说并不好....
所以也许可以调整时间与次数的触发值。
防止 Ping of Death :
iptables -N ping iptables -A ping -p icmp --icmp-type echo-request -m limit --limit \ 1/second -j RETURN iptables -A ping -p icmp -j REJECT iptables -I INPUT -p icmp --icmp-type echo-request -m state --state NEW \ -j ping |
或者是直接设定主机不响应 echo request 。
/proc/sys/net/ipv4/icmp_echo_ignore_all |
iptables 机制是逐条检查...
但是假设当一个封包要通过时,第一条规则已经放行通过,封包的命运已经定下来,剩余规则就不会再检查,就算剩余规则中有要挡下这个封包时也无效!
例:
规则 1 : 放行所有 80 port 的封包
规则 2 : 拒绝 210.58.221.241 80 port 封包
规则 3 ........
像这样子时,根本无法挡下 210.58.221.241 80 port 封包...
因为第 1 条规则已经先放行所有 80 port 的封包了,所以该封包早就先通过了......
正确的写法应该将规则 1 与规则 2 互换.....
※ 引述《AceLan (小蛋蛋)》之铭言:
> [root@babu netfilter]# pwd > /lib/modules/2.4.13-7mdk/kernel/net/ipv4/netfilter > [root@babu netfilter]# ls > ip_conntrack.o.gz ipchains.o.gz ipt_mark.o.gz > ip_conntrack_ftp.o.gz ipfwadm.o.gz ipt_multiport.o.gz > ip_conntrack_h323.o.gz ipt_LOG.o.gz ipt_owner.o.gz > ip_conntrack_irc.o.gz ipt_MARK.o.gz ipt_state.o.gz > ip_conntrack_talk.o.gz ipt_MASQUERADE.o.gz ipt_tcpmss.o.gz > ip_nat_ftp.o.gz ipt_MIRROR.o.gz ipt_tos.o.gz > ip_nat_h323.o.gz ipt_REDIRECT.o.gz ipt_unclean.o.gz > ip_nat_irc.o.gz ipt_REJECT.o.gz iptable_filter.o.gz > ip_nat_talk.o.gz ipt_TCPMSS.o.gz iptable_mangle.o.gz > ip_queue.o.gz ipt_TOS.o.gz iptable_nat.o.gz > ip_tables.o.gz ipt_limit.o.gz > ip_vs/ ipt_mac.o.gz |
> (http://netfilter.samba.org/)
> 只是很好奇各个模块的功能 有 ip_ 开头 ipt_ & iptable_ 开头的
> 这些模块有什么不同呢?
iptables_ 开头,是给 iptables -t xxxx 的。比方:
iptables -t nat ...
iptables -t mangle .....
ipt_ 开头的,是 -j xxxx 使用的。比方:
iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT ....
ip_conntrack 开头的是一些纪录/追踪通讯协议的运作,然后适时修改封包
内容让特定通讯协议可以正常工作。
ip_nat_ 开头的是解决一些常见服务在 nat 环境可能无法使用的情况。
ip_conntrack* 与 ip_nat_* 这些 module 一般要使用 modprobe 来加载。
ip_tables 是主要提供 iptables 功能的核心。ip_queue 是可以让封包过滤
传输丢给使用层的应用程序来处理。