用了iptables一段时间,把自己的。一个iptables脚本献给大家,供大家参考!
#!/bin/bash
#
# ========================================================
# 脚本说明:
# 欢迎使用iptables.rule这个script来建立您的防火墙?
# 这个script还需要您自己根据您的环境设定后,方可工作
# 基本规则定义为::[拒绝所有,开放特定]
#
# 强烈建议?
# 不了解Linux防火墙机制iptables的朋友使用这个script
# 可能会不太了解每个命令的意义,如果这样
# 欢迎您参考以下几个网页:
# http://www.study-area.org/linux/servers/linux_nat.htm
# http://linux.vbird.org/linux_server/0240network-secure-1.php
# http://linux.vbird.org/linux_server/0250simple_firewall.php
# 使用说明??
# 请先将这个脚本权限更改为可执行:?
# chmod 755 iptables.rule
# 将此脚本放置在 /usr/local/firewall 下??
# mkdir -p /usr/local/firewall
# mv /您的完整的路径/iptables.rule /usr/local/firewall
# 执行测试:?
# /usr/local/firewall.rule
# iptables -L -n (这个动作检查防火墙规则)
# 将下面一行加入 /etc/rc.d/rc.local 中
# /usr/local/firewall.rule
# 取消防火墙?
# iptables -F
# iptables -X
# iptables -t nat -F
# iptables -t nat -X
# ========================================================
# 版权提示:??
# 此脚本为 GPL 授权,任何人都可以使用?
# 使用此 scripts 发生任何问题时?
# 本人不负任何责任
# VBird
# ========================================================
# 历史纪录:?
# 2002/08/20 VBird ?***?
# 2003/04/26 VBird ?加入砍站软体的相关执行文件????
# 2003/08/25 VBird ?修改 INPUT 的 Policy 为 DROP
# ========================================================
# 0.0 Please key in your parameters
# 这个EXTIF后面接的为[对外的网卡"WAN"]???
# 一般来说,如果是ADSL/FTTH等,就是"ppp0"
# 如果是固定IP,那么就是"eth0"
# The interface that connect Internet
EXTIF="ppp0"
# 下面的INIF为对内网卡(Lan)?
# 如果您的Linux没有对内网卡,请留空
# INIF=""
# ?
# the inside interface. if you don't have this one
# and you must let this be black ex> INIF=""
INIF="eth1"
INNET="192.168.1.0/24" # This is for NAT's network
# 1.0 测试您的Linux内核版本及防火墙模组
#kver=`uname -r | cut -c 1-3`
#if [ "$kver" != "2.4" ] && [ "$kver" != "2.5" ]; then
#echo "Your Linux Kernel Version may not be suported by this script!"
#echo "This scripts will not be runing"
#exit
# fi
# ipchains=`lsmod | grep ipchains`
# if [ "$ipchains" != "" ]; then
#echo "unload ipchains in your system"
#rmmod ipchains 2> /dev/null
# fi
# 2.0 载入模组
- PATH=/sbin:/bin:/usr/sbin:/usr/bin
- export PATH EXTIF INIF INNET
- modprobe ip_tables > /dev/null 2>&1
- modprobe iptable_nat > /dev/null 2>&1
- modprobe ip_nat_ftp > /dev/null 2>&1
- modprobe ip_nat_irc > /dev/null 2>&1
- modprobe ip_conntrack > /dev/null 2>&1
- modprobe ip_conntrack_ftp > /dev/null 2>&1
- modprobe ip_conntrack_irc > /dev/null 2>&1
# 3.0 清除所有的防火墙规则
- /sbin/iptables -F
- /sbin/iptables -X
- /sbin/iptables -Z
- /sbin/iptables -F -t nat
- /sbin/iptables -X -t nat
- /sbin/iptables -Z -t nat
- /sbin/iptables -P INPUT DROP
- /sbin/iptables -P OUTPUT ACCEPT
- /sbin/iptables -P FORWARD ACCEPT
- /sbin/iptables -t nat -P PREROUTING ACCEPT
- /sbin/iptables -t nat -P POSTROUTING ACCEPT
- /sbin/iptables -t nat -P OUTPUT ACCEPT
# 4.0 ?先允许任何网络,包括lo这个界面
# 以及刚才指定的内部界面(LAN)
# 当然,重点是启动您的Linux为NAT服务器功能?
/sbin/iptables -A INPUT -i lo -j ACCEPT
if [ "$INIF" != "" ]; then
/sbin/iptables -A INPUT -i $INIF -j ACCEPT
echo "1" > /proc/sys/net/ipv4/ip_forward
/sbin/iptables -t nat -A POSTROUTING -s $INNET -o $EXTIF -j MASQUERADE
fi
# 5.0 开始载入任何可以拒绝的网络设定的文件??
# 下面2个文件可以自行建立
if [ -f /usr/local/firewall.deny ]; then
sh /usr/local/firewall.deny
fi
if [ -f /usr/local/firewall.allow ]; then
sh /usr/local/firewall.allow
fi
# 6.0 下面这个文件如果存在,则执行!!
# 请注意::这个文件与防止砍站的软件有关?
if [ -f /usr/local/firewall/httpd-err/iptables.http ]; then
sh /usr/local/firewall/httpd-err/iptables.http
fi
# 7.0 允许ICMP封包,允许已建立的连接通过?
/sbin/iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
AICMP="0 3 3/4 4 11 12 14 16 18"
for tyicmp in $AICMP
do
/sbin/iptables -A INPUT -i $EXTIF -p icmp --icmp-type $tyicmp -j ACCEPT
done
# 8.0 Allow services,请关闭您的服务器没有开放的服务..在行前加"#"..
- # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 22 -j ACCEPT # SSH
- #/sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 25 -j ACCEPT # SMTP
- /sbin/iptables -A INPUT -p UDP -i $EXTIF --dport 53 -j ACCEPT # DNS
- /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 53 -j ACCEPT # DNS
- /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 80 -j ACCEPT # WWW
- /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 21 -j ACCEPT # FTP
- # /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 20000:30000 -j ACCEPT # PASV_PORTS FTP USE
- # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 110 -j ACCEPT # POP3
- # /sbin/iptables -A INPUT -p TCP -i $EXTIF --dport 113 -j ACCEPT # auth
- # /sbin/iptables -A INPUT -p tcp -i eth1 -s 192.168.1.0/24 --dport 137:139
通过一个iptables相关脚本,想必大家都认识了iptables,希望对大家有所帮助!
【编辑推荐】