手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

菜鸟学堂之Iptables基础

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!

  
  #
  # 3.2 Non-Required proc configuration
  # 其余未使用之接口
  #echo "1" > /proc/sys/net/ipv4/conf/all/rp_filter
  #echo "1" > /proc/sys/net/ipv4/conf/all/proxy_arp
  #echo "1" > /proc/sys/net/ipv4/ip_dynaddr
  ###########################################################################
  #
  # 4. rules set up.
  #
  ######
  # 4.1 Filter table
  #
  # 4.1.0 Reset the default policies in the nat table.
  # 清除任何已设定之规则,回复到不设防状态
  $IPTABLES -P INPUT ACCEPT
  $IPTABLES -P FORWARD ACCEPT
  $IPTABLES -P OUTPUT ACCEPT
  $IPTABLES -t nat -P PREROUTING ACCEPT
  $IPTABLES -t nat -P POSTROUTING ACCEPT
  $IPTABLES -t nat -P OUTPUT ACCEPT
  $IPTABLES -t mangle -P PREROUTING ACCEPT
  $IPTABLES -t mangle -P OUTPUT ACCEPT
  $IPTABLES -F
  $IPTABLES -t nat -F
  $IPTABLES -t mangle -F
  $IPTABLES -X
  $IPTABLES -t nat -X
  $IPTABLES -t mangle -X
  
  #
  # 4.1.1 Set policies
  # 定义安全政策为正面表列
  $IPTABLES -P INPUT DROP
  $IPTABLES -P OUTPUT DROP
  $IPTABLES -P FORWARD DROP
  
  #
  # 4.1.2 Create userspecified chains
  #
  #
  # 新增使用者自订规则炼 bad_tcp_packets、 allowed 和 icmp_packets
  $IPTABLES -N bad_tcp_packets
  $IPTABLES -N allowed
  $IPTABLES -N icmp_packets
  
  #
  # 4.1.3 Create content in userspecified chains
  #
  #
  # bad_tcp_packets chain
  # bad_tcp_packets 规则炼的功能是:将需要重导向的联机记录起来,然后将封包丢弃(防止联机被绑架,但会档掉需要三方交谈的服务,例如:M$ Media Server)
  $IPTABLES -A bad_tcp_packets -p tcp ! --syn -m state --state NEW -j LOG --log-level INFO --log-prefix "New not syn:"
  $IPTABLES -A bad_tcp_packets -p TCP ! --syn -m state --state NEW -j DROP
  
  # allowed chain
  # allowed 规则炼的功能是:允许需要联机封包或响应封包进入,将其余封包丢弃
  $IPTABLES -A allowed -p TCP --syn -j ACCEPT
  $IPTABLES -A allowed -p TCP -m state --state ESTABLISHED,RELATED -j ACCEPT
  $IPTABLES -A allowed -p TCP -j DROP
  
  #
  # ICMP rules
  # icmp_packets 规则炼的功能是:允许 ping 封包进入,将其余封包丢弃
  $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 8 -j ACCEPT
  $IPTABLES -A icmp_packets -p ICMP -s 0/0 --icmp-type 11 -j ACCEPT
  
  #
  # 4.1.4 INPUT chain(过滤要到达防火墙的封包)
  #
  #
  # 进入防火墙主机的 TCP 封包必须先进行 bad_tcp_packets 过滤
  $IPTABLES -A INPUT -p tcp -j bad_tcp_packets
  
  # 从 WAN 进入防火墙主机的 ICMP 封包必须先进行 icmp_packets 过滤,这是为了避免骇客传送不完整的 IP 封包,系统会响应 ICMP 封包通知对方,导致主机位置被侦测出来
  $IPTABLES -A INPUT -p ICMP -i $INET_IFACE -j icmp_packets
  
  # 从 LAN 进入防火墙主机的全部 unicast 和 broadcast 封包,通通放行;额外检查目的地 IP 能够将 multicast 封包滤除
  $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_IP -j ACCEPT
  $IPTABLES -A INPUT -p ALL -i $LAN_IFACE -d $LAN_BROADCAST_ADDRESS -j ACCEPT
  
  # 从 Loopback 接口进入防火墙主机的任何封包,检查是否来自本机,若是则放行;此规则去检查来源 IP ,似乎有些画蛇添足,因为只有来自本机的封包才有机会进入 Loopback 接口
  $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LO_IP -j ACCEPT
  $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $LAN_IP -j ACCEPT
  $IPTABLES -A INPUT -p ALL -i $LO_IFACE -s $INET_IP -j ACCEPT
  
  # 从 LAN 进入防火墙主机的 DHCP 封包,予以放行,只有当防火墙担任 DHCP 时才使用
  #$IPTABLES -A INPUT -p UDP -i $LAN_IFACE --dport 67 --sport 68 -j ACCEPT
  
  # 从 WAN 进入防火墙主机的任何封包,检查是否为响应封包,若是则予以放行
  $IPTABLES -A INPUT -p ALL -d $INET_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
  
  # 限制过滤规则的比对频率为每分钟平均流量三个封包(超过上限的封包将暂停比对),并将瞬间流量设定为一次最多处理三个封包(超过上限的封包将丢弃不予处理),这类封包通常是骇客用来进行阻断式攻击 
  $IPTABLES -A INPUT -m limit --limit 3/minute --limit-burst 3 -j LOG --log-level INFO --log-prefix "IPT INPUT packet died: "
  
  #
  # 4.1.5 FORWARD chain(过滤要通过防火墙的封包)
  #
  #
  # 通过防火墙的 TCP 封包必须先进行 bad_tcp_packets 过滤
  $IPTABLES -A FORWARD -p TCP -j bad_tcp_packets
  
  # 从 LAN 要到 WAN 的封包通通放行
  $IPTABLES -A FORWARD -i $LAN_IFACE -o $INET_IFACE -j ACCEPT
  
  # 从 WAN 要到 LAN 的封包仅放行回应封包
  $IPTABLES -A FORWARD -i $INET_IFACE -o $LAN_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
  
  # 允许来自 WAN 的 Ping 封包,递送到校内任何的服务器

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!