公司有台服务器在外地机房,因为都是内网之前没有配置防火墙,最新被扫出来有漏洞需要做下整改。。于是想着启用下防火墙,配置下规则好,但是那边服务器还不能连接外网,,只有专门的电脑才能连接到服务器区域。。没办法了只能写脚本,发给那边技术让帮忙执行以下了。。firewalld用着不大习惯,,所以停掉改启用iptables防火墙。
因为对要执行脚本的服务器目前环境比较清楚,所以脚本没做判断,直接顺序执行就行了。将iptables离线包和脚本一块发过去,放到同一目录下sh执行下就行了(复制可能有因字符编码导致格式出现问题,请注意规避!)。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 |
#!/bin/bash MyDate=`date '+%Y%m%d-%H%M%S'` MyDir="/root/iptables-conf" MyFile="${MyDir}/iptables-default.conf" IPtablesVer=`iptables -V |cut -d' ' -f2` #1.关掉现有的firewalld防火墙 systemctl stop firewalld systemctl disable firewalld #2.解压离线包,安装iptables防火墙 tar zxvf ${PWD}/centos7-iptables.tar.gz rpm -Uvh ${PWD}/centos7-iptables-www.imzcy.cn/iptables-1.4.21-24.1.el7_5.x86_64.rpm rpm -ivh ${PWD}/centos7-iptables-www.imzcy.cn/iptables-services-1.4.21-24.1.el7_5.x86_64.rpm #3.备份iptables默认配置文件 [ ! -d $MyDir ] && mkdir $MyDir && echo "3. $MyDir 创建目录${MyDir}" cp /etc/sysconfig/iptables $MyFile #4.启动iptables,设置开启自动启动 systemctl start iptables systemctl enable iptables #5.创建计划任务要执行的脚本 echo '#!/bin/bash MyDate=`date '+%Y%m%d-%H%M%S'` MyDir="/root/iptables-conf" MyFile="${MyDir}/iptables-default.conf" /usr/sbin/iptables-save >${MyDir}/${MyDate}-iptables.conf /usr/sbin/iptables-restore <$MyFile ' >>/root/delete-iptables-config.sh #6.创建计划任务,每隔15分钟还原下iptables规则为默认配置,防止策略出现问题将自己屏蔽掉(记得测试成功后将计划任务删掉) echo '*/15 * * * * /bin/bash /root/delete-iptables-config.sh' >/var/spool/cron/root chmod 600 /var/spool/cron/root #7.导入要添加的iptables规则,并保存配置 echo "# Generated by imzcy $IPtablesVer on $MyDate *filter :INPUT ACCEPT [0:0] :FORWARD ACCEPT [0:0] :OUTPUT ACCEPT [0:0] -A INPUT -s 192.168.1.5 -p tcp -m state --state NEW -m tcp --dport 22 -j ACCEPT -A INPUT -s 192.168.1.5 -p tcp -m state --state NEW -m tcp --dport 8080 -j ACCEPT -A INPUT -j REJECT --reject-with icmp-host-prohibited -A FORWARD -j REJECT --reject-with icmp-host-prohibited COMMIT # Completed on $MyDate " >/etc/sysconfig/iptables iptables-restore </etc/sysconfig/iptables [ $? == 0 ] && echo "执行完成" |