- 论坛徽章:
- 0
|
网络环境:
[Internat]------eth1[ Server01 ]eth0----------[ Server02 ]
|
|
[ Client X ]
Server 02 是Web , FTP, MAIL 伺服器.
Client用透明代理上网的.
我在Server01上用iptables内容如下:
#!/bin/bash
################ NET INFO #######################
EXT_IF=eth1
EXT_IP=192.168.2.1
EXT_NET=192.168.2.0/255.255.255.0
EXT_BCAST=192.168.2.255
############### INT INFO ########################
INT_IF=eth0
INT_IP=192.168.1.1
INT_NET=192.168.1.0/255.255.255.0
INT_BCAST=192.168.1.255
############### LO INFO ########################
LO_IF="lo"
LO_IP=127.0.0.1
############### ICMP NO ########################
AICMP="0 3 3/4 4 11 12 14 16 18"
############### SERVER ########################
SERVER_WEB=192.168.1.3
SERVER_FTP=192.168.1.3
SERVER_MAIL=192.168.1.3
################ IMPORT MODULES ###############
echo " [ IMOPRT MODULES ] "
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack_ftp
modprobe ip_conntrack_irc
################ FLUSHING #####################
echo " [ FLUSHING ] "
iptables -F -t filter
iptables -X -t filter
iptables -Z -t filter
iptables -F -t nat
iptables -X -t nat
iptables -Z -t nat
################ POLICY ########################
echo " [ POLICY ] "
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -t ant -P PREROUTING ACCEPT
iptables -t ant -P POSTROUTING ACCEPT
iptables -t ant -P OUTPUT ACCEPT
################ OPEN IP FORWARD ##############
echo " [ OPEN IP FORWARD ] "
echo "1" >; /proc/sys/net/ipv4/ip_forward
################ ANIT - SPOOFING ################
echo " [ ANIT - SPOOFING ] "
for file in /proc/sys/net/ipv4/conf/*/rp_filter; do
echo "1" >; $file
done
iptables -t nat -A PREROUTING -i $EXT_IF -s 192.168.0.0/16 -j DROP
iptables -t nat -A PREROUTING -i $EXT_IF -s 10.0.0.0/8 -j DROP
iptables -t nat -A PREROUTING -i $EXT_IF -s 172.16.0.0/12 -j DROP
################ ENABLE LOG ###################
echo " [ ENABLE LOG ] "
for file in /proc/sys/net/ipv4/conf/*/log_martians; do
echo "1" >; $file
done
################# ANIT - TCP SYN COOKIE #########
echo " [ ANIT - TCP SYN COOKIE ] "
echo "1" >; /proc/sys/net/ipv4/tcp_syncookies
################# DISABLE ICMP REDIRECT #########
echo " [ DISABLE ICMP REDIRECT ] "
for file in /proc/sys/net/ipv4/conf/*/accept_redirects; do
echo "0" >; $file
done
################# NO PING #########
echo " [ NO PING ] "
echo "1" >; /proc/sys/net/ipv4/icmp_echo_ignore_all
################# NO BROADCAST #########
echo " [ NO BROADCAST ] "
echo "1" >; /proc/sys/net/ipv4/icmp_echo_ignore_broadcasts
################ INT to EXT ######################
echo " [ INT to EXT ] "
iptables -t nat -A POSTROUTING -o $EXT_IF -j SNAT --to-source $EXT_IP
################ PORT FORWARD ################
################ HTTPD ########################
echo " [ HTTPD ] "
iptables -t nat -A PREROUTING -p tcp -d $EXT_IP --dport 80 -j DNAT --to $SERVER_WEB
iptables -t nat -A PREROUTING -p tcp -d $EXT_IP --dport 443 -j DNAT --to $SERVER_WEB
iptables -t nat -A POSTROUTING -s $INT_NET -d $SERVER_WEB -p tcp --dport 80 -j SNAT --to $INT_IP
iptables -t nat -A POSTROUTING -s $INT_NET -d $SERVER_WEB -p tcp --dport 443 -j SNAT --to $INT_IP
################ FTPD #########################
echo " [ FTPD ] "
iptables -t nat -A PREROUTING -p tcp -d $EXT_IP --dport 21 -j DNAT --to $SERVER_FTP
iptables -t nat -A POSTROUTING -s $INT_NET -d $SERVER_FTP -p tcp --dport 21 -j SNAT --to $INT_IP
################ SENDMAIL #####################
echo " [ SENDMAIL ] "
iptables -t nat -A PREROUTING -p tcp -d $EXT_IP --dport 25 -j DNAT --to $SERVER_MAIL
iptables -t nat -A PREROUTING -p tcp -d $EXT_IP --dport 110 -j DNAT --to $SERVER_MAIL
iptables -t nat -A POSTROUTING -s $INT_NET -d $SERVER_MAIL -p tcp --dport 25 -j SNAT --to $INT_IP
iptables -t nat -A POSTROUTING -s $INT_NET -d $SERVER_MAIL -p tcp --dport 110 -j SNAT --to $INT_IP
###############################################
################ PROXY ########################
echo " [ PROXY ] "
iptables -t nat -A PREROUTING -d $INT_NET -i $INT_IF -p tcp -m tcp --dport 80 -j ACCEPT
iptables -t nat -A PREROUTING -i $INT_IF -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128
##############################################
################ TCP_PACKETS #################
echo " [ TCP_PACKETS ] "
iptables -N tcp_packets
iptables -A tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j LOG --log-prefix " ORT SCAN : "
iptables -A tcp_packets -p tcp --tcp-flags ALL ALL -j LOG --log-prefix " ORT SCAN : "
iptables -A tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j LOG --log-prefix " ORT SCAN : "
iptables -A tcp_packets -p tcp --tcp-flags ALL NONE -j LOG --log-prefix " ORT SCAN : "
iptables -A tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j LOG --log-prefix " ORT SCAN : "
iptables -A tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j LOG --log-prefix " ORT SCAN : "
iptables -A tcp_packets -p tcp --tcp-flags ALL FIN,URG,PSH -j DROP
iptables -A tcp_packets -p tcp --tcp-flags ALL ALL -j DROP
iptables -A tcp_packets -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A tcp_packets -p tcp --tcp-flags ALL NONE -j DROP
iptables -A tcp_packets -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A tcp_packets -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP
###############################################
############### ALLOWED_CHAN #################
echo " [ ALLOWED_CHAN ] "
iptables -N 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
###############################################
################ HTTPS #########################
iptables -A tcp_packets -p tcp -s 0/0 --dport 443 -j ALLOWED
################ HTTP ##########################
iptables -A tcp_packets -p tcp -s 0/0 --dport 80 -j ALLOWED
################ FTP ###########################
iptables -A tcp_packets -p tcp -s 0/0 --dport 21 -j ALLOWED
iptables -A tcp_packets -p tcp -s 0/0 --dport 20 -j ALLOWED
################ SMTP ##########################
iptables -A tcp_packets -p tcp -s 0/0 --dport 110 -j ALLOWED
################ POP3 ##########################
iptables -A tcp_packets -p tcp -s 0/0 --dport 21 -j ALLOWED
################ DNS ###########################
iptables -A tcp_packets -p tcp -s 0/0 --dport 25 -j ALLOWED
################ CVS ###########################
iptables -A tcp_packets -p tcp -s 0/0 --dport 2401 -j ALLOWED
###############################################
###############################################
###############################################
################ ICMP_PACKETS #################
echo " [ ICMP_PACKETS ] "
iptables -N icmp_packets
for ICMPTYPE in $AICMP; do
iptables -A icmp_packets -p icmp -s 0/0 --icmp-type $ICMPTYPE -j ACCEPT
done
###############################################
###############################################
###############################################
################ udp_packets ####################
echo " [ UDP_PACKETS ] "
iptables -N udp_packets
iptables -A udp_packets -p udp -s 0/0 --sport 53 -j ACCEPT
iptables -A udp_packets -p udp -s $EXT_NET -j ACCEPT
###############################################
###############################################
################ FORWARD CHAIN ################
echo " [ FORWARD CHAIN ] "
iptables -A FORWARD -p tcp -j tcp_packets
iptables -A FORWARD -i $INT_IF -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
################ INPUT CHAIN ###################
echo " [ INPUT CHAIN ] "
iptables -A INPUT -p icmp -i $EXT_IF -j icmp_packets
iptables -A INPUT -p tcp -i $EXT_IF -j tcp_packets
iptables -A INPUT -p udp -i $EXT_IF -j udp_packets
iptables -A INPUT -p ALL -i $INT_IF -d $INT_BCAST -j ACCEPT
iptables -A INPUT -p ALL -i $LO_IF -s $LO_IP -j ACCEPT
iptables -A INPUT -p ALL -i $INT_IF -s $INT_NET -j ACCEPT
iptables -A INPUT -p ALL -d $EXT_IP -m state --state ESTABLISHED,RELATED -j ACCEPT
################ OUT CHAIN ####################
echo " [ OUT CHAIN ] "
#iptables -A OUTPUT -p tcp -j tcp_packets
iptables -A OUTPUT -p ALL -s $LO_IP -j ACCEPT
iptables -A OUTPUT -p ALL -s $INT_IP -j ACCEPT
iptables -A OUTPUT -p ALL -s $EXT_IP -j ACCEPT |
|