#!/bin/sh
#
# 因為此 script 在真實的商業網站中測試﹐故所有真實 IP 均已刪除。
# 引用時請自行增加。
#
/sbin/depmod -a
/sbin/modprobe ip_masq_ftp
/sbin/modprobe ip_masq_raudio
/sbin/modprobe ip_masq_irc
/sbin/modprobe ip_masq_autofw
/sbin/modprobe ip_masq_cuseeme
/sbin/modprobe ip_masq_portfw
/sbin/modprobe ip_masq_quake
/sbin/modprobe ip_masq_vdolive
/sbin/modprobe ip_masq_user
/sbin/modprobe ip_masq_mfw
#
HI="1024:65535"
ALL="0.0.0.0/0"
PRIV_NET=""
LOCAL_HOME="127.0.0.1"
OUTER_IF="eth1"
OUTER_IP=""
#
INNER_IF="eth0"
INNER_IP=""
ipchains -F
ipchains -X
#
ipchains -P input DENY
ipchains -P output DENY
ipchains -P forward DENY
#
ipchains -A input  -i lo -j ACCEPT
ipchains -A output -i lo -j ACCEPT
ipchains -A input -i $INNER_IF -j ACCEPT
ipchains -A output -i $INNER_IF -j ACCEPT
#
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL telnet -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL www -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL ftp -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL https -t 0x01 0x10
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL ftp-data -t 0x01 0x08
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL nntp  -t 0x01 0x02
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL pop-3  -t 0x01 0x02
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL imap  -t 0x01 0x02
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -d $ALL smtp  -t 0x01 0x02
#
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -s $ALL ssh -t 0x01 0x10
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -s $ALL ssh -t 0x01 0x10
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF ! -y -d $ALL ssh -t 0x01 0x10
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -d $ALL ssh -t 0x01 0x10
#
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF ! -y -s $ALL
#
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -d $ALL domain
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -s $ALL domain 
#
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -s $ALL ftp-data
#
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -s $ALL telnet
#
ipchains -A forward -j MASQ -s $PRIV_NET -d $ALL
#
ipchains -A input -p udp --dport $HI -j ACCEPT
ipchains -A output -p udp --dport $HI -j ACCEPT
ipchains -A forward -p udp --dport $HI -s $PRIV_NET -d $ALL -j MASQ 

EXT_WWW_IP=""
EXT_WWW_IP1=""
EXT_WWW_IP2=""
EXT_WWW_IP3=""
EXT_FTP_IP=""
EXT_SMTP_IP=""
EXT_SMTP_IP1=""
EXT_POP_IP=""
EXT_IMAP_IP=""
INT_WWW_IP=""
INT_WWW_IP1=""
INT_WWW_IP2=""
INT_WWW_IP3=""   
INT_FTP_IP=""
INT_SMTP_IP=""
INT_SMTP_IP1=""
INT_POP_IP=""
INT_IMAP_IP=""
#
ipmasqadm portfw -f
#
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP 80 -R $INT_WWW_IP 80
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP 80 -R $INT_WWW_IP 80
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP 443 -R $INT_WWW_IP 443
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP 443 -R $INT_WWW_IP 443
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP1 80 -R $INT_WWW_IP1 80
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP1 80 -R $INT_WWW_IP1 80
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP1 443 -R $INT_WWW_IP1 443
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP1 443 -R $INT_WWW_IP1 443
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP2 80 -R $INT_WWW_IP2 80
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP2 80 -R $INT_WWW_IP2 80
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP2 443 -R $INT_WWW_IP2 443
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP2 443 -R $INT_WWW_IP2 443
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP3 80 -R $INT_WWW_IP3 80
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP3 80 -R $INT_WWW_IP3 80
ipmasqadm portfw -a -P tcp -L $EXT_WWW_IP3 443 -R $INT_WWW_IP3 443
ipmasqadm portfw -a -P udp -L $EXT_WWW_IP3 443 -R $INT_WWW_IP3 443
ipmasqadm portfw -a -P tcp -L $EXT_FTP_IP 20 -R $INT_FTP_IP 20
ipmasqadm portfw -a -P tcp -L $EXT_FTP_IP 21 -R $INT_FTP_IP 21
ipmasqadm portfw -a -P tcp -L $EXT_SMTP_IP 25 -R $INT_SMTP_IP 25
ipmasqadm portfw -a -P tcp -L $EXT_SMTP_IP1 25 -R $INT_SMTP_IP1 25    
ipmasqadm portfw -a -P tcp -L $EXT_POP_IP 110 -R $INT_POP_IP 110
ipmasqadm portfw -a -P udp -L $EXT_POP_IP 110 -R $INT_POP_IP 110
ipmasqadm portfw -a -P tcp -L $EXT_IMAP_IP 143 -R $INT_IMAP_IP 143
ipmasqadm portfw -a -P udp -L $EXT_IMAP_IP 143 -R $INT_IMAP_IP 143
ipmasqadm portfw -a -P tcp -L $EXT_IMAP_IP 220 -R $INT_IMAP_IP 220
ipmasqadm portfw -a -P udp -L $EXT_IMAP_IP 220 -R $INT_IMAP_IP 220
#
ipmasqadm autofw -A -r udp 6970 7170 -c tcp 7070
ipmasqadm autofw -A -r udp 6970 7170 -c tcp 7075
ipmasqadm autofw -A -r udp 22555 22555
ipmasqadm autofw -A -r udp 8000 8000
ipmasqadm autofw -A -r tcp 13223 13223
ipmasqadm autofw -A -r udp 21845 21845 -c tcp 21845 
#
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 www -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 www -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 https -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 https -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 www -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 www -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 https -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 https -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 www -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 www -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 https -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 https -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 www -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 www -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 https -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 https -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_FTP_IP/32 ftp-data -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_FTP_IP/32 ftp -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_SMTP_IP/32 smtp -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_SMTP_IP1/32 smtp -d $ALL 
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_POP_IP/32 pop-3 -d $ALL --dport $HI
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_POP_IP/32 pop-3 -d $ALL --dport $HI
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_IMAP_IP/32 imap2 -d $ALL
ipchains -A input -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_IMAP_IP/32 imap2 -d $ALL
ipchains -A input -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_IMAP_IP/32 imap3 -d $ALL
#
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 www -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 www -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 https -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP/32 https -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 www -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 www -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 https -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP1/32 https -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 www -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 www -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 https -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP2/32 https -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 www -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 www -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 https -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_WWW_IP3/32 https -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_FTP_IP/32 ftp-data -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_FTP_IP/32 ftp -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_SMTP_IP/32 smtp -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_SMTP_IP1/32 smtp -d $ALL 
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_POP_IP/32 pop-3 -d $ALL --dport $HI
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_POP_IP/32 pop-3 -d $ALL --dport $HI
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_IMAP_IP/32 imap2 -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_IMAP_IP/32 imap2 -d $ALL
ipchains -A output -p TCP -j ACCEPT -i $OUTER_IF -b -s $EXT_IMAP_IP/32 imap3 -d $ALL
ipchains -A output -p UDP -j ACCEPT -i $OUTER_IF -b -s $EXT_IMAP_IP/32 imap3 -d $ALL
#
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP/32 www -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP/32 www -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP/32 https -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP/32 https -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP1/32 www -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP1/32 www -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP1/32 https -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP1/32 https -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP2/32 www -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP2/32 www -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP2/32 https -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP2/32 https -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP3/32 www -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP3/32 www -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_WWW_IP3/32 https -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_WWW_IP3/32 https -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_FTP_IP/32 ftp-data -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_FTP_IP/32 ftp -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_SMTP_IP/32 smtp -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_SMTP_IP1/32 smtp -d $ALL 
ipchains -A forward -p TCP -j MASQ -s $INT_POP_IP/32 pop-3 -d $ALL --dport $HI
ipchains -A forward -p UDP -j MASQ -s $INT_POP_IP/32 pop-3 -d $ALL --dport $HI
ipchains -A forward -p TCP -j MASQ -s $INT_IMAP_IP/32 imap2 -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_IMAP_IP/32 imap2 -d $ALL
ipchains -A forward -p TCP -j MASQ -s $INT_IMAP_IP/32 imap3 -d $ALL
ipchains -A forward -p UDP -j MASQ -s $INT_IMAP_IP/32 imap3 -d $ALL
#
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 23 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 23 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1100 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1100 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1101  -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1101 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1102 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1102 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1103 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1103 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1104 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1104 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1105 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1105 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1106 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1106 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1107 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1107 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1108 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1108 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 1109 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 1109 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 53 -p tcp
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 53 -d $ALL -p tcp ! -y
ipchains -A input -j ACCEPT -i $OUTER_IF -s $ALL -d $OUTER_IP/32 53 -p UDP
ipchains -A output -j ACCEPT -i $OUTER_IF -s $OUTER_IP/32 53 -d $ALL -p UDP