作者:李宇
#!/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