免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1260 | 回复: 4
打印 上一主题 下一主题

[iptables] 想各位给我一些意见,看看有什么地方需要更改. [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2003-08-14 18:41 |只看该作者 |倒序浏览
网络环境:
[Internat]------eth1[ Server01 ]eth0----------[ Server02 ]
                     |
                     |
                  [ Client X ]

Server 02 是Web , FTP, MAIL 伺服器.
Client用透明代理上网的.


我在Server01上用iptables内容如下:
#!/bin/bash

EXT_IF=eth1
INT_IF=eth0

############### 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

############### FUNTION ###################
netinfo (){
        unset IF
        unset IP
        unset NET
        unset MASK
        for IF in $1; do
                IP=$(ifconfig | grep "$IF" -A 1| awk '/inet/{print $2}' | sed -e s/addr\:// )
                if [ -z "$IP" ]; then
                        echo
                        echo "$(basename $0): there is no IP found on $IF,"
                        echo
                        exit 2
                fi
                MASK=$(ifconfig | grep "$IF" -A 1 | awk '/inet/{print $4}' | sed -e s/Mask\:// )
        getnet (){
                for i in $(echo $IP | sed -e 's/\./\ /g'); do
                        let N="$i & $1"
                        NET="$NET.$N"
                done
        }
        getnet $(echo $MASK | sed -e 's/\./\ /g')
        done
}

################ NET INFO #################
netinfo $EXT_IF
        EXT_IP=$IP
        EXT_NET=${NET#.}/$MASK
netinfo $INT_IF
        INT_IP=$IP
        INT_NET=${NET#.}/$MASK

################ IMPORT MODULES ############
echo " [ IMOPRT MODULES ] "
modprode ip_nat_ftp
modprode ip_nat_irc
modprode ip_conntrack_ftp
modprode 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 ACCEPT
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
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

################ ICMP #####################
echo " [ ICMP ] "
for ICMPTYPE in $AICMP; do
iptables -A INPUT -i $EXP_IF -p icmp --icmp-type $ICMPTYPE -j ACCEPT
done

################ ANIT - SPOOFING ############
echo " [ ANIT - SPOOFING ] "
for file in /proc/sys/net/ipv4/conf/*/rp_filter; do
        echo "1" >; $file
done

################ 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 -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i $INT_IF -j ACCEPT
iptables -t nat -A POSTROUTING -o $EXT_IF -j SNAT --to-source $EXT_IP

################ 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 POSTROUTING -i $INT_IF -p tcp -m tcp --dport 80 -j REDIRECT --to-ports 3128

################ DENY ALL #################
echo " [ DENY ALL ] "
iptables -A INPUT -m state --state NEW,INVALID -j DROP


想各位给我一些意见,看看有什么地方需要更改.
谢谢^^

论坛徽章:
0
2 [报告]
发表于 2003-08-14 18:47 |只看该作者

[iptables] 想各位给我一些意见,看看有什么地方需要更改.

加上这一段会不会好一些呢?

########### STOP PORT SCAN #################
iptables -A INPUT -i $EXT_IF -p tcp --tcp-flags ALL FIN,URS,PSH -j DROP
iptables -A INPUT -i $EXT_IF -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -i $EXT_IF -p tcp --tcp-flags ALL SYN,RST,ACK,FIN,URG -j DROP
iptables -A INPUT -i $EXT_IF -p tcp --tcp-flags ALL NONE -j DROP
iptables -A INPUT -i $EXT_IF -p tcp --tcp-flags SYN,RST SYN,RST -j DROP
iptables -A INPUT -i $EXT_IF -p tcp --tcp-flags SYN,FIN SYN,FIN -j DROP

论坛徽章:
0
3 [报告]
发表于 2003-08-15 00:06 |只看该作者

[iptables] 想各位给我一些意见,看看有什么地方需要更改.

这个是更新后的结果, 请给一些意见 !
之前的 netinfo的function好像有问题.
所以不用function了, 直接给NET INFO.
另外, 因为FORWARD 忘记写数句, 所以NAT中电脑是出不到INTERNET的.

#!/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

论坛徽章:
0
4 [报告]
发表于 2003-08-15 09:02 |只看该作者

[iptables] 想各位给我一些意见,看看有什么地方需要更改.

这是在LINUX下用的吧。

论坛徽章:
0
5 [报告]
发表于 2003-08-15 20:31 |只看该作者

[iptables] 想各位给我一些意见,看看有什么地方需要更改.

是呀
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP