当前位置: > Linux服务器 > iptables >

redhat linux下通用的iptables脚本iptables

时间:2016-03-13 03:03来源:linux.it.net.cn 作者:it.net.cn
#!/bin/bash
INET_IF="ppp" #外网接口
LAN_IF="eth0" #内网接口
LA_IP_RANGE="192.168.1.0/24" #内网IP地址范围,用于NAT
IPT="/sbin/iptables" #定义变量
MODPROBE="/sbin/modprobe"
$MODPROBE ip_tables #下面9行开始加载相应的模块
$MODPROBE iptable_nat
$MODPROBE ip_nat_ftp
$MODPROBE ip_nat_irc
$MODPROBE ip_mark
$MODPROBE ip_conntrack
$MODPROBE ip_conntrack-ftp
$MODPROBE ip_conntrack_irc
$MODPROBE ipt_MASQUERADE
for TABLE in filter nat mangle;do #清除所有防火墙规则
$IPT -t $TABLE -F
$IPT -t $TABLE -X
done
$IPT -P INPUT DROP #下面6行设置filter和nat表的默认策略
$IPT -P OUTPUT ACCEPT
$IPT -P FORWARD DROP
$IPT -t nat -p PREROUTING ACCEPT
$IPT -t nat -p POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
#允许内网samba、smtp和pop3连接
$IPT -A INPUT -m state -- state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp -m multiport --dports 1863,443,110,80,25 -j ACCEPT
$IPT -A INPUT -p tcp -s $LAN_IP_RANGE --dport 139 -j ACCEPT
#允许DNS连接
$IPT -A INPUT -i $LAN_IF -p udp -m multiport --dports 53 -j ACCEPT
#为了防止DOS攻击,可以最多允许15个初始连接,超过的将被丢弃
$IPT -A INPUT -s $LAN_IP_RANGE -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -i $INET_IF -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
$IPT -A INPUT -s $LAN_IP_RANGE -p tcp --syn -m connlimit --connlimit-above 15 -j DROP
#设置ICMP阈值,记录攻击行为
$IPT -A INPUT -p icmp -m limit --limit 3/s -j LOG --log-level INFO --log-prefix "ICMP packet IN:"
$IPT -A INPUT -p icmp -m limit --limit 6/m -j ACCEPT
$IPT -A INPUT -p icmp -j DROP
#开放的端口
$IPT -A INPUT -p TCP -i $INET_IF --dport 21 -J ACCEPT #FTP
$IPT -A INPUT -p TCP -i $INET_IF --dport 22 -J ACCEPT #SSH
$IPT -A INPUT -p TCP -i $INET_IF --dport 25 -J ACCEPT #SMTP
$IPT -A INPUT -p UDP -i $INET_IF --dport 53 -J ACCEPT #DNS
$IPT -A INPUT -p TCP -i $INET_IF --dport 53 -J ACCEPT #DNS
$IPT -A INPUT -p TCP -i $INET_IF --dport 80 -J ACCEPT #WWW
$IPT -A INPUT -p TCP -i $INET_IF --dport 110 -J ACCEPT #POP3
#禁止BT连接
$IPT -I FORWARD -m state --state ESTABLEISHED,RELATED -j ACCEPT
$IPT -A FORWARD -m ipp2p --edk --kazaa -bit -j DROP
$IPT -A FORWARD -p tcp -m ipp2p --ares -j DROP
$IPT -A FORWARD -p udp -m ipp2p --kazaa -j DROP
#只允许每组ip同时15个80端口转发
$IPT -A FORWARD -p tcp --syn -- dport 80 -m connlimit -above 15 --connlimit-mask 24 -j DROP
#MAC、IP地址绑定
$IPT -A FORWARD -s 192.168.0.1 -m mac --mac-source 00:e2:23:a1:45:c3 -p tcp --dport 80 -j ACCEPT
$IPT -A FORWARD -s 192.168.0.1 -m mac --mac-source 00:e6:f3:a4:B3:d8 -p tcp --dport 80 -j ACCEPT
#禁止192.168.0.22使用QQ
$IPT -t mangle -A POSTROUTING -m layer7 --17proto qq -s 192.168.0.22/32 -j DROP
$IPT -t mangle -A POSTROUTING -m layer7 --17proto qq -d 192.168.0.22/32 -j DROP
#禁止192.168.0.22使用MSN
$IPT -t mangle -A POSTROUTING -m layer7 --17proto msnmessenger -s 192.168.0.22/32 -j DROP
$IPT -t mangle -A POSTROUTING -m layer7 --17proto msnmessenger -d 192.168.0.22/32 -j DROP
#限制192.168.0.22的流量
$IPT -t mangle -A PREROUTING -s 192.168.0.22 -j MARK --set-mark 30
$IPT -t mangle -A POSTROUTING -d 192.168.0.22 -j MARK --set-mark 30

END (责任编辑:IT)
------分隔线----------------------------