防火墙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用户执行