一键配置CentOS iptables防火墙的Shell脚本分享
手里几台VPS配置iptables太繁琐,看到了朱哥的LNMP脚本里有一个自动配置iptables防火墙的脚本,借来改了一下,给需要的人用;
只提供常用端口的设置,如果你有特殊需求只需自行添加或减少相应的端口即可;
使用方法:
chmod+xiptables.sh ./iptables.sh
设置iptables开机自动启动:
chkconfig--level345iptableson
完整Shell:
#!/bin/bash
PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin
exportPATH
functionsupport_distro(){
if[-z"`egrep-i"centos"/etc/issue`"];then
echo"Sorry,iptablesscriptonlysupportcentossystemnow."
exit1
fi
}
support_distro
echo"============================iptablesconfigure============================================"
#OnlysupportCentOSsystem
#获取SSH端口
ifgrep"^Port"/etc/ssh/sshd_config>/dev/null;then
sshdport=`grep"^Port"/etc/ssh/sshd_config|sed"s/Port\s//g"`
else
sshdport=22
fi
#获取DNS服务器IP
if[-s/etc/resolv.conf];then
nameserver1=`cat/etc/resolv.conf|grepnameserver|awk'NR==1{print$2}'`
nameserver2=`cat/etc/resolv.conf|grepnameserver|awk'NR==2{print$2}'`
fi
IPT="/sbin/iptables"
#删除已有规则
$IPT--delete-chain
$IPT--flush
#禁止进,允许出,允许回环网卡
$IPT-PINPUTDROP  
$IPT-PFORWARDDROP
$IPT-POUTPUTACCEPT
$IPT-AINPUT-ilo-jACCEPT
#允许已建立的或相关连接的通行
$IPT-AINPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT
$IPT-AOUTPUT-mstate--stateRELATED,ESTABLISHED-jACCEPT
#限制80端口单个IP的最大连接数为10
$IPT-IINPUT-ptcp--dport80-mconnlimit--connlimit-above10-jDROP
#允许80(HTTP)/873(RSYNC)/443(HTTPS)/20,21(FTP)/25(SMTP)端口的连接
$IPT-AINPUT-ptcp-mtcp--dport80-jACCEPT
$IPT-AINPUT-ptcp-mtcp--dport873-jACCEPT
$IPT-AINPUT-ptcp-mtcp--dport443-jACCEPT
$IPT-AINPUT-ptcp-mtcp--dport20-jACCEPT
$IPT-AINPUT-ptcp-mtcp--dport21-jACCEPT
$IPT-AINPUT-ptcp-mtcp--dport25-jACCEPT
#允许SSH端口的连接,脚本自动侦测目前的SSH端口,否则默认为22端口
$IPT-AINPUT-ptcp-mtcp--dport$sshdport-jACCEPT
#允许ping
$IPT-AINPUT-picmp-micmp--icmp-type8-jACCEPT
$IPT-AINPUT-picmp-micmp--icmp-type11-jACCEPT
#允许DNS
[!-z"$nameserver1"]&&$IPT-AOUTPUT-pudp-mudp-d$nameserver1--dport53-jACCEPT
[!-z"$nameserver2"]&&$IPT-AOUTPUT-pudp-mudp-d$nameserver2--dport53-jACCEPT
#保存规则并重启IPTABLES
serviceiptablessave
serviceiptablesrestart
echo"============================iptablesconfigurecompleted============================================"
