网络环境如下:
1.网通5M共享带宽线路,一个独立公网IP.
2.内部网络有邮件服务器一台,OA服务器一台,FTP服务器一台,都需要对内和对外发布.
3.局域网络内部总共有40台客户机.
本人考虑到安全性及稳定性,易用性方面的因素,决定采用Red Hat AS4 Kernel 2.6.9-22.EL + iptables 的方案来架设一台代理服务器,并能发布内网服务器并实现NAT,透明防火墙的功能,实在是企业经济选择的最佳方案.

以下是iptables脚本:

eth0: 192.168.1.1 #内网卡地址
eth1: 210.22.25.X #外网卡地址

邮件服务器:192.168.1.84
OA服务器: 192.168.1.85
FTP服务器: 192.168.1.86

在/etc/rc.d 里面 touch fw.sh
并且chmod u+x 改为可执行,然后 vi fw.sh 进入编辑,加入以下脚本.

#!/bin/sh
echo “Enable IP Forwarding…”
echo “1″>/proc/sys/net/ipv4/ip_forward
echo “1″ > /proc/sys/net/ipv4/tcp_syncookies
echo “1″ > /proc/sys/net/ipv4/icmp_ignore_bogus_error_responses

#
/sbin/modprobe ip_tables
/sbin/modprobe iptable_nat
/sbin/modprobe ip_nat_ftp
/sbin/modprobe ip_conntrack_ftp

#Refresh all chains
/sbin/iptables -F -t nat
/sbin/iptables -F INPUT
/sbin/iptables -F OUTPUT
/sbin/iptables -F FORWARD
/sbin/iptables -Z

#Presetup
/sbin/iptables -P INPUT DROP
/sbin/iptables -P OUTPUT ACCEPT
/sbin/iptables -P FORWARD DROP
/sbin/iptables -A INPUT -i lo -j ACCEPT
/sbin/iptables -A OUTPUT -o lo -j ACCEPT

#
/sbin/iptables -A INPUT -m state –state ESTABLISHED,RELATED -j ACCEPT
/sbin/iptables -A FORWARD -s 0/0 -d 0/0 -j ACCEPT
/sbin/iptables -t nat -A POSTROUTING -s 192.168.1.0/24 -j MASQUERADE

#Public 3389 发布OA的3389端口
/sbin/iptables -t nat -A PREROUTING -d 210.22.25.38 -p tcp –dport 3389 -j DNAT –to-destination 192.168.1.85:3389
/sbin/iptables -A FORWARD -p tcp -d 192.168.1.85 –dport 3389 -j ACCEPT

#Public WEB
/sbin/iptables -t nat -A PREROUTING -d 210.22.25.38 -p tcp –dport 80 -j DNAT –to-destination 192.168.1.85:80
/sbin/iptables -A FORWARD -p tcp -d 192.168.1.85 –dport 80 -j ACCEPT
/sbin/iptables -t nat -I POSTROUTING -s 192.168.1.0/255.255.255.0 -p tcp -d 192.168.1.85 –dport 80 -j SNAT –to 192.168.1.1

#Public FTP
/sbin/iptables -t nat -A PREROUTING -d 210.22.25.38 -p tcp –dport 21 -j DNAT –to-destination 192.168.1.84:21
/sbin/iptables -A FORWARD -p tcp -d 192.168.1.86 –dport 21 -j ACCEPT
/sbin/iptables -t nat -I POSTROUTING -s 192.168.0.0/255.255.255.0 -p tcp -d 192.168.1.86 –dport 21 SNAT –to 192.168.1.1
/sbin/iptables -t nat -A PREROUTING -p tcp –dport 3000:3020 -d 210.22.25.38 -j DNAT –to 192.168.1.86:3000-3020 #被动FTP PSAV端口

#Public MAIL
/sbin/iptables -t nat -A PREROUTING -d 210.22.25.38 -p tcp –dport 25 -j DNAT –to-destination 192.168.1.84:25
/sbin/iptables -A FORWARD -p tcp -d 192.168.1.84 –dport 25 -j ACCEPT
/sbin/iptables -t nat -A PREROUTING -d 210.22.25.38 -p tcp –dport 110 -j DNAT –to-destination 192.168.1.84:110
/sbin/iptables -A FORWARD -p tcp -d 192.168.1.84 –dport 110 -j ACCEPT

#deny need close port and hacker
/sbin/iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p ICMP -j DROP
/sbin/iptables -A INPUT -i eth1 -s 0.0.0.0/0 -p TCP -port ! 80 -j DROP
/sbin/iptables -A INPUT -p tcp –dport 135 -j DROP
/sbin/iptables -A INPUT -s 255.255.255.255 -i eth0 -j DROP
/sbin/iptables -A INPUT -s 224.0.0.0/224.0.0.0 -i eth0 -j DROP
/sbin/iptables -A INPUT -d 0.0.0.0 -i eth0 -j DROP
/sbin/iptables -A FORWARD -f -m limit –limit 100/s –limit-burst 100 -j ACCEPT
/sbin/iptables -A FORWARD -p icmp -m limit –limit 1/s –limit-burst 10 -j ACCEPT
/sbin/iptables -A INPUT -i eth1 -p tcp –tcp-flags ALL FIN,URG,PSH -j DROP
/sbin/iptables -A INPUT -i eth1 -p tcp –tcp-flags ALL ALL -j DROP
/sbin/iptables -A INPUT -i eth1 -p tcp –tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
/sbin/iptables -A INPUT -i eth1 -p tcp –tcp-flags ALL NONE -j DROP
/sbin/iptables -A INPUT -i eth1 -p tcp –tcp-flags SYN,RST SYN,RST -j DROP
/sbin/iptables -N synfoold
/sbin/iptables -A synfoold -p tcp –syn -m limit –limit 1/s -j RETURN
/sbin/iptables -A synfoold -p tcp -j REJECT –reject-with tcp-reset
/sbin/iptables -A INPUT -p tcp -m state –state NEW -j synfoold

#MY COMPUTER
/sbin/iptables -I INPUT -s 192.168.1.35 -j ACCEPT
/sbin/iptables -I FORWARD -s 192.168.1.35 -j ACCEPT
/sbin/iptables -I OUTPUT -s 192.168.1.35 -j ACCEPT
#我的电脑当然全部放行拉 适用于中小型公司代理服务器的IPTABLES脚本_中小型公司

注:该脚本我已经在公司里面运行稳定超过半年,而且效果相当令人满意,基本上是免维护了,开机就能用.OUTPUT链鉴于公司领导的要求,我全放行,没办法.由于INPUT链默认是 DROP, 只开放需要开放的端口,一般的黑客攻击是很难成功地:D