使用iptables设定一些安全防护功能(3)

发表于:2007-07-04来源:作者:点击数: 标签:
作者: kenduest (小州) 防止 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

  作者: kenduest (小州)
  防止 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
  
  这里只有把 icmp 的 echo request 部份拒绝掉,可以视情况再调整。
  
  或者是直接设定主机不响应 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
  > 东西好多 我在 iptables 主站里没有找到相关的资料
  > (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 是可以让封包过滤
  传输丢给使用层的应用程序来处理。
  
  
  
  
  

原文转自:http://www.ltesting.net