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