防火墙iptables之常用脚本
转自:http://zhujiangtao.blog.51cto.com/6387416/1286490
1。不允许别人ping我的主机,但是我可以ping别人的主机
#!/bin/bash
iptables -F
iptables -X
iptables -Z
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack
modprobe ip_conntrack_ftp
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p icmp --icmp-type 0 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
2.普通web的防护脚本,只开放22和80端口
#!/bin/bash
iptables -F
iptables -X
iptables -Z
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_conntrack
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,80 -j ACCEPT
3.安全主机 的防火墙脚本
iptables -F -t nat
iptables -X
iptables -Z
modprobe ip_tables
modprobe iptable_nat
modprobe ip_nat_ftp
modprobe ip_nat_irc
modprobe ip_conntrack
modprobe ip_conntrack_ftp
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -A INPUT -f -m limit --limit 100/sec --limit-burst 100 -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
iptables -A OUTPUT -o lo -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -p tcp -m multiport --dports 22,25,110,143,80 -j ACCEPT
4.自定义脚本
#!/bin/bash
function fire(){
FTP="21"
SSH="22"
DNS="53"
HTTP="80"
MYSQL="3306"
IP="192.168.56.102"
if [ -f /etc/sysconfig/iptables ];then
cp /etc/sysconfig/iptables /etc/sysconfig/iptables.`date +"%Y-%m-%d"`
fi #若防火墙已存在,便备份
for mod in $modules
do
testmod=`lsmod | grep "^${mod}" | awk '{print $1}'`
if [ "$testmod" = "" ];then
modprobe $mod
fi
done #加载模块
iptables -F
iptables -X
iptables -Z #清除本机防火墙所有规则
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT #定义预设政策
iptables -A INPUT -i lo -j ACCEPT #打开回环端口
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT #打开外挂模块
iptables -A INPUT -p tcp --dport $FTP -j ACCEPT #允许ftp服务
iptables -A INPUT -p tcp -s $IP --dport $SSH -j ACCEPT #允许指定的主机可ssh到本机
iptables -A INPUT -p tcp --dport $DNS -j ACCEPT #打开DNS服务
iptables -A INPUT -p udp --dport $DNS -j ACCEPT
iptables -A INPUT -p tcp --dport $HTTP -j ACCEPT #允许访问80端口
iptables -A INPUT -p tcp --dport $MYSQL -j ACCEPT #允许访问数据库
/sbin/iptables-save #保存防火墙规则
}
user=`whoami`
if [ "$user" = "root" ];then
fire
else
echo "the user must be root"
fi #该脚本需root用户执行