记录一次在cengteros6.8上修复mysql漏洞的过程(iptables防火墙)

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档


前言

本文并非针对mysql本身的漏洞进行修复,而是通过防火墙策略的方式,绕开安全部门对3306端口的漏扫来提高系统安全性,减少漏洞修复的繁琐工作,这个操作也可以解决其他方面的应用漏洞问题,大家以此类推。

一、起因

   政务云上的服务器会定期进行漏洞扫描,运维单位经常收到漏洞修复报告,
   本次就是因为收到漏扫报告,发现mysql存在大量的高危安全漏洞。高危漏洞必须修复,中危漏洞选择修复。

二、修复思路

   漏洞扫描报告建议修复漏洞的方式是升级mysql数据库版本或者打补丁。
   但是一般生产系统升级数据库是有风险的,可能带来sql语句兼容性问题,升级后,应用系统各种奇怪的故障产生,而且升级的过程会中断mysql服务,影响生产系统的正常运行。
   漏扫模拟的是局域网某台机器被控制成为肉机,来进行攻击局域网其他机器。对系统漏洞的扫描也一定是通过堡垒机,或者局域网的某台机器来进行服务器和端口的轮询检测。
   那么,我只要在被接受检测的服务器上安装防火墙,限制我们的服务器只能被我们自己的服务器连接,不让局域网其他机器来访问,这样增加了安全性,也能让漏洞扫描发现不到我们的服务器端口,这样不仅解决高危漏洞,其他中低危漏洞也就不会出现在漏扫报告里面了,真是完美解决办法!!!

三、linux 的iptables防火墙介绍

这块呢,我也是参考:
https://blog.csdn.net/holmofy/article/details/78655570
https://blog.csdn.net/qq_31812703/article/details/79723033
https://blog.csdn.net/liuxu0703/article/details/55708458
来学习的,说的很详细,有空可以细看一下,我就贴一些常用的命令吧

1.查看防火墙现有的配置清单

代码如下(示例):

iptables -L 

在没有配置过iptables的状态下,展示的效果如下:

2.清除防火墙现有的所有配置

这就要谨慎执行了,会删掉所有的规则,一般是不要执行的,代码如下(示例):

iptables -F

3.防火墙配置保存

这个命令是修改防火墙配置后执行保存的操作,不然防火墙重启或者服务器重启后,没保存配置的就会丢掉了,防火墙回归到修改前的状态,代码如下(示例):

service iptables save

4.防火墙配置启动、停止、重启、状态查看

防火墙的启动、停止、重启,这大家看的懂,修改之后要重启才生效,我就不赘述了,代码如下(示例):

service iptables start
service iptables stop 
service iptables restart
service iptables status

5.增加特定IP访问本机特定端口的命令

iptables -I INPUT -p tcp --dport 22 -s 192.168.0.1 -j ACCEPT

这个命令表示,本服务器接受来自192.168.0.1访问本服务器的22端口。
-I 表示在策略的顶部增加,这里如果写成-A就会在策略的底部增加,这是有区别的
可以使用iptables -A命令追加新规则,其中-A表示Append。因此,新的规则将追加到链尾。
一般而言,最后一条规则用于丢弃(DROP)所有数据包。如果你已经有这样的规则了,并且使用-A参数添加新规则,那么就是无用功。
这里需要普及一下:
iptables具有Filter, NAT, Mangle, Raw四种内建表
Filter表是iptables的默认表,因此如果你没有自定义表,那么就默认使用filter表,它具有以下三种内建链:
INPUT链 – 处理来自外部的数据。
OUTPUT链 – 处理向外发送的数据。
FORWARD链 – 将数据转发到本机的其他网卡设备上。
我们本次用Filter表,其他的表不用管。
命令中INPUT表示的 这个命令是要将规则写入到Filter表INPUT链,对入口流量进行相关限制。
-p tcp表示的是协议
–dport 22表示的是目标端口是22端口
-s 192.168.0.1表示访问的源服务地址是192.168.0.1
-j ACCEPT表示策略是接受

6.增加特定IP限制访问本机特定端口的命令

iptables -I INPUT -p tcp --dport 22 -s 192.168.0.2 -j DROP

这个命令表示,本服务器拒绝来自192.168.0.2访问本服务器的22端口。
跟上面第5点差不多,只不过-j DROP表示策略是拒绝

7.增加任何IP都能访问本机22端口的命令

iptables -I INPUT -p tcp --dport 22 -j ACCEPT

这个命令表示,本服务器接受任何地址访问本服务器的22端口。

8.删除一条规则的命令

iptables -D INPUT 2 

其中2代表的是第2行,想要删除哪一行策略就iptables -L数下要删除的在第几行

四、修复实操过程

1.检查服务器防火墙当前策略,并做好记录(拍照就行)

使用iptables -L查看防火墙的策略:
如果 CHAIN INPUT \ CHAIN OUTPUT \ CHAIN FOWARD都是空的,并且policy是ACCEPT状态的,那就表示,当前防火墙状态默认全部是接受的。
如果不是以上的状态,那就把当前的状态拍照记录一下,防止后面误操作。

2.梳理需要连接当前服务器的IP地址,以及当前服务器哪些端口要对哪些服务器开放

netstat -atn | awk '{print $5}' | awk '{print $1}' | sort -nr | uniq -c

可以试试这个命令看看当前哪些机器在访问当前服务器,可以帮助在业务不清楚得情况下梳理与当前服务器有关系得服务器IP有哪些。

3.防火墙Filter表INPUT链增加一条记录,允许所有服务器访问22端口

这一点非常重要!!!
第1步检查防火墙策略发现,当前防火墙状态默认全部是接受的。我们要把默认策略改成全部拒绝,但是在改成全部拒绝之前,一定要先配置一条开放22端口的策略,不然一旦把默认策略改成全部拒绝,就会导致服务器断联,接下来就没法连接服务器了,这就麻烦了!!!!

//一定要先加上这个哦!!!!!!!!!!!
iptables -I INPUT -p tcp --dport 22 -j ACCEPT

加上这个后,我们就可以增加一条DROP策略到INPUT链表的最后一行了

iptables -A INPUT -j DROP

执行这个命令后,如果,你还可以继续远程服务器,并且执行其他命令都可以,恭喜你,成功一半了!
注意:如果不小心把顺序执行反了,那就联系你的服务器管理员,帮你把服务器重启吧,因为你还没有执行保存策略!可以先不保存策略,给自己留条后路,不保存防火墙就是临时生效,保存了就是永久生效。
接下来根据具体的业务来配置策略,比如说 本服务器的IP是1982.168.0.3,上面有个mysql3306端口,要被192.168.0.1上面的应用程序访问,那就执行

iptables -I INPUT -p tcp --dport 3306 -s 192.168.0.1 -j ACCEPT

然后去检查一下192.168.0.1是不是能正常访问1982.168.0.3:3306就行啦
最后,在规则都配置好了的情况下,执行保存,重启防火墙,这样就不怕以后服务器断电,策略丢失了

service iptables save
service iptables restart

最后的最后,联系漏扫进行复扫就行了。

总结

提示:这些操作可以自己先VM安装个linux系统,把这些命令都试试看看效果,实验好了再干,不然生产环境搞出问题,神仙难救啊!

  • 30
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值