网络通信 频道

中软Linux实现代理服务器与防火墙(1)

#!/bin/bash
   #proxy and firwall
   #定义变量
   EXT_IFACE=eth0
   EXT_ADDR=192.9.100.8
   INT_IFACE=eth1
   INT_ADDR=192.168.0.0/24
   Manager_Addr=192.168.0.3/32
    
   #初始化设置
   service iptables stop
   iptables -F
   iptables -t nat -F
   iptables -X
   iptables -t nat -X
   iptables -Z
   iptables -t nat -Z
    
   iptables -P INPUT DROP
   iptables -P OUTPUT DROP
   iptables -P FORWARD DROP
   iptables -t nat -P POSTROUTING DROP
  
   #启动模块
   cd /lib/modules/2.4.3-3/kernel/net/ipv4/netfilter
   modprobe ip_conntrack_ftp
   modprobe ip_nat_ftp
   cd /
  
   #设置核心参数
  
   ##避免ping of death攻击
   echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_all
   ##禁止广播回应(可选)
   #echo 1 >/proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
    ##防止源路由攻击
    echo 0 >/proc/sys/net/ipv4/conf/all/accept_source_route
    ##不接受重定向的icmp数据包
    #echo 0 >/proc/sys/net/ipv4/conf/all/accept_redirects
    ##防止IP欺骗
    for interface in /proc/sys/net/ipv4/conf/*/rp_filter; do
     /bin/echo 1 > ${interface}
     done
    ##禁止IP转发(在配置防火墙时,建议用户先关闭数据包的转发功能)
    echo 0 >/proc/sys/net/ipv4/ip_forward
    #IP伪装
    iptables -t nat -A POSTROUTING -s $INT_ADDR -o $EXT_IFACE -j MASQUERADE
    #定义forward 链规则
    iptables -A FORWARD -m state --state INVALID -j DROP
    iptables -A FORWARD -i $INT_IFACE -o $EXT_IFACE -s $INT_ADDR -m state --state
  RELATED,NEW,ESTABLISHED -j ACCEPT
    #iptables -A FORWARD -i $ INT_IFACE -s 192.168.0.3/32 -m mac --mac-source
  00:D0:59:08:5f:23 -o $EXT_IFACE -j ACCEPT(可以使用该方法实现IP地址与物理地址的捆绑)
    iptables -A FORWARD -i $EXT_IFACE -o $ INT_IFACE -d $ INT_ADDR -m state --state
  RELATED,ESTABLISHED -j ACCEPT
    #对包碎片的限制(会影响代理服务器的性能)
    #iptables -A FORWARD -f -m limit --limit 100/s --limit-burst 100 -j ACCEPT
    #对外部访问该防火墙作的限制
    iptables -A INPUT -i $EXT_IFACE -m state --state ESTABLISHED,RELATED -j ACCEPT
    iptables -A INPUT -i $EXT_IFACE -p tcp ! --syn -j ACCEPT
    #对内部用户访问防火墙的限制
    iptables -A INPUT -i $ INT_IFACE -p icmp -j DROP #(可以对其他协议做限制)
    #...........
    #允许管理员对防火墙的操作
    iptables -A INPUT -s $Manager_Addr -i $ INT_IFACE -p tcp --dport 3000 -j ACCEPT
    iptables -A INPUT -s $Manager_Addr -i $ INT_IFACE -p tcp --dport 22 -j ACCEPT
    iptables -A OUTPUT -d $Manager_Addr -o $ INT_IFACE -m state --state ESTABLISHED
  -j ACCEPT
    #允许发送的数据包(from gateway)
    iptables -A OUTPUT -o $EXT_IFACE -j ACCEPT
  
    #允许IP数据包转发
    echo 1 >/proc/sys/net/ipv4/ip_forward

 

转载地址:http://www.netsp.com.cn/Article/netsafe/FW/200506/20050602132143.html

0
相关文章