学习啦 > 学习电脑 > 电脑安全 > 防火墙知识 >

一键配置CentOS iptables防火墙的Shell脚本介绍

时间: 加城1195 分享

  防火墙借由监测所有的封包并找出不符规则的内容,可以防范电脑蠕虫或是木马程序的快速蔓延。这篇文章主要介绍了一键配置CentOS iptables防火墙Shell脚本分享,可保存到一个脚本文件中,在新安装的CentOS系统时一条命令搞定iptables配置,需要的朋友可以参考下

  方法步骤

  手里几台VPS配置iptables太繁琐,看到了朱哥的LNMP脚本里有一个自动配置iptables防火墙的脚本,借来改了一下,给需要的人用;

  只提供常用端口的设置,如果你有特殊需求只需自行添加或减少相应的端口即可;

  使用方法:

  复制代码 代码如下:

  chmod +x iptables.sh

  ./iptables.sh

  设置iptables开机自动启动:

  复制代码 代码如下:

  chkconfig --level 345 iptables on

  完整Shell:

  复制代码 代码如下:

  #!/bin/bash

  PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/local/bin:/usr/local/sbin:~/bin

  export PATH

  function support_distro(){

  if [ -z "`egrep -i "centos" /etc/issue`" ];then

  echo "Sorry,iptables script only support centos system now."

  exit 1

  fi

  }

  support_distro

  echo "============================iptables configure============================================"

  # Only support CentOS system

  # 获取SSH端口

  if grep "^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 |grep nameserver |awk 'NR==1{print $2 }'`

  nameserver2=`cat /etc/resolv.conf |grep nameserver |awk 'NR==2{print $2 }'`

  fi

  IPT="/sbin/iptables"

  # 删除已有规则

  $IPT --delete-chain

  $IPT --flush

  # 禁止进,允许出,允许回环网卡

  $IPT -P INPUT DROP

  $IPT -P FORWARD DROP

  $IPT -P OUTPUT ACCEPT

  $IPT -A INPUT -i lo -j ACCEPT

  # 允许已建立的或相关连接的通行

  $IPT -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

  $IPT -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT

  # 限制80端口单个IP的最大连接数为10

  $IPT -I INPUT -p tcp --dport 80 -m connlimit --connlimit-above 10 -j DROP

  # 允许80(HTTP)/873(RSYNC)/443(HTTPS)/20,21(FTP)/25(SMTP)端口的连接

  $IPT -A INPUT -p tcp -m tcp --dport 80 -j ACCEPT

  $IPT -A INPUT -p tcp -m tcp --dport 873 -j ACCEPT

  $IPT -A INPUT -p tcp -m tcp --dport 443 -j ACCEPT

  $IPT -A INPUT -p tcp -m tcp --dport 20 -j ACCEPT

  $IPT -A INPUT -p tcp -m tcp --dport 21 -j ACCEPT

  $IPT -A INPUT -p tcp -m tcp --dport 25 -j ACCEPT

  # 允许SSH端口的连接,脚本自动侦测目前的SSH端口,否则默认为22端口

  $IPT -A INPUT -p tcp -m tcp --dport $sshdport -j ACCEPT

  # 允许ping

  $IPT -A INPUT -p icmp -m icmp --icmp-type 8 -j ACCEPT

  $IPT -A INPUT -p icmp -m icmp --icmp-type 11 -j ACCEPT

  # 允许DNS

  [ ! -z "$nameserver1" ] && $IPT -A OUTPUT -p udp -m udp -d $nameserver1 --dport 53 -j ACCEPT

  [ ! -z "$nameserver2" ] && $IPT -A OUTPUT -p udp -m udp -d $nameserver2 --dport 53 -j ACCEPT

  # 保存规则并重启IPTABLES

  service iptables save

  service iptables restart

  echo "============================iptables configure completed============================================"

  补充阅读:防火墙主要使用技巧

  一、所有的防火墙文件规则必须更改。

  尽管这种方法听起来很容易,但是由于防火墙没有内置的变动管理流程,因此文件更改对于许多企业来说都不是最佳的实践方法。如果防火墙管理员因为突发情况或者一些其他形式的业务中断做出更改,那么他撞到枪口上的可能性就会比较大。但是如果这种更改抵消了之前的协议更改,会导致宕机吗?这是一个相当高发的状况。

  防火墙管理产品的中央控制台能全面可视所有的防火墙规则基础,因此团队的所有成员都必须达成共识,观察谁进行了何种更改。这样就能及时发现并修理故障,让整个协议管理更加简单和高效。

  二、以最小的权限安装所有的访问规则。

  另一个常见的安全问题是权限过度的规则设置。防火墙规则是由三个域构成的:即源(IP地址),目的地(网络/子网络)和服务(应用软件或者其他目的地)。为了确保每个用户都有足够的端口来访问他们所需的系统,常用方法是在一个或者更多域内指定打来那个的目标对象。当你出于业务持续性的需要允许大范围的IP地址来访问大型企业的网络,这些规则就会变得权限过度释放,因此就会增加不安全因素。服务域的规则是开放65535个TCP端口的ANY。防火墙管理员真的就意味着为黑客开放了65535个攻击矢量?

  三、根据法规协议和更改需求来校验每项防火墙的更改。

  在防火墙操作中,日常工作都是以寻找问题,修正问题和安装新系统为中心的。在安装最新防火墙规则来解决问题,应用新产品和业务部门的过程中,我们经常会遗忘防火墙也是企业安全协议的物理执行者。每项规则都应该重新审核来确保它能符合安全协议和任何法规协议的内容和精神,而不仅是一篇法律条文。

  四、当服务过期后从防火墙规则中删除无用的规则。

  规则膨胀是防火墙经常会出现的安全问题,因为多数运作团队都没有删除规则的流程。业务部门擅长让你知道他们了解这些新规则,却从来不会让防火墙团队知道他们不再使用某些服务了。了解退役的服务器和网络以及应用软件更新周期对于达成规则共识是个好的开始。运行无用规则的报表是另外一步。黑客喜欢从来不删除规则的防火墙团队。


CentOS iptables防火墙相关文章:

1.CentOS7关闭防火墙和SELinux

2.centos setup 无法配置防火墙怎么办

3.linux如何查看防火墙是否开启

4.如何解除被防火墙阻止运行的程序

5.vmware防火墙如何设置

4041963