51工具盒子

依楼听风雨
笑看云卷云舒,淡观潮起潮落

linux问题解决:用多种方法处理病毒入侵服务器ssh

最近有台站群服务器,老是出问题,被攻击了,宝塔进不去,SSH链接服务器也不行,是在无语了。通过一番纠结,处理了,也总结了一些linux问题,如何用多种方法处理病毒入侵服务器ssh。分享下吧。

image.png

可以看出来,这人应该是广撒网瞎捕鱼,因为攻击频率不算高并且IP都源自一个地方江苏省宿迁市 电信。说实话我感觉这人没跳代理,应该是真实IP,结合攻击频率不够,应该是个技术不咋地的**。但是说实话,他给我来这么一手,正好让我可以实操相关的内容,感恩就完事了。

昨天因为有点事情没空管他,结果今天一看他还在冲我的服务器,所以把这事办了,下面记录一下我思考与实操的处理方式。

处理方式

1. 更改ssh端口

这是最简单的方式,因为这种**都是扫一个IP段的22端口暴力破解,所以改一下ssh的端口,换个别的隐藏一下ssh的端口就行。不过如果别人的目标就是我,nmap扫描一下也能把端口扫出来,这样改只是躲了流弹罢了。

具体操作如下:


vim /etc/ssh/sshd_config 进去ssh的配置文件

找到配置项 Port 22 改成别的端口

如果没 Port 配置项或者被注释掉了就自己改一下

service sshd restart 重启ssh服务

但是说实话这种处理方式有点怂,我不想这样搞。而且这样搞了的话,以后跳转登录ssh还得带个-p选项,我觉得麻烦,所以我就放弃这么搞了。 

2. 禁止root用户登录

这是个更怂的方法,就是直接禁止root登录,通过首先登录普通用户再su root来实现root的登录。这玩意流程想想就麻烦,我这又不是什么机密服务器,不至于因噎废食,所以也放弃这么搞。

禁止root用户登录的方法: (这部分内容我在笔记用户与/etc/passwd与/etc/shadow中有详细介绍)

修改/etc/passwd或/etc/shadow文件

使用命令usermod -L xxx  

3. RSA密钥登录

就是通过生成公私钥来通过ssh协议登录,公私钥相关的内容可以看我的这篇笔记公钥、私钥与证书 ------ 相关内容分析与实践。简单来说就是取消密码登录,改为通过密钥登录。优点是不用登录,缺点是每个机子都需要生成公钥再放到机子里,有点麻烦,所以我也不用这种方法。

因为我也没试过,所以我就不写步骤了 

4. 修改配置文件

在linux中,存在两个文件白名单 /etc/hosts.allow和黑名单 /etc/hosts.deny,二者中可以添加IP或IP段来实现黑白名单的效果。

有一说一啊,这个可能是效果最好的处理方法了,只需要在白名单里加上自己用的IP段,再在黑名单里禁止所有IP段登录即可。因为白名单的优先级比黑名单高,所以这样可以完美的规避ssh暴力攻击。但是缺点也有,就是如果想在一个新的IP段环境下登录,必须得在白名单内添加新内容。

我更改后的内容如下:


[root@Zhao_Server ~]# cat /etc/hosts.allow
sshd:xx.xxx.*.*:allow
sshd:xxx.xxx.*.*:allow
[root@Zhao_Server ~]#
[root@Zhao_Server ~]# cat /etc/hosts.deny
sshd:all:deny

上面的白名单IP数字被我用x替换掉了,sshd:xx.xxx.*.*即代表sshd服务允许向IP地址为xx.xxx开头的IP地址提供服务。而黑名单里的sshd:all:deny即代表sshd服务不允许向所有IP地址提供服务。

这样一来,即可避免ssh暴力攻击。

说明:

一个IP请求连入,linux的检查策略是先看/etc/hosts.allow中是否允许,如果允许直接放行;如果没有,则再看/etc/hosts.deny中是否禁止,如果禁止那么就禁止连入

实验发现对/etc/hosts.allow和/etc/hosts.deny的配置不用重启就立即生效,但不管重启不重启当前已有会话都不会受影响;也就是说对之前已经连入的,即便IP已配置为禁止登录会话仍不会强制断开

5. 使用iptables工具

这个也是个很好的解决方案,iptables是linux下的一个防火墙工具,可以很好的实现包过滤功能。在这里我们只要能把攻击来源方的IP给ban掉,即可避免ssh暴力攻击。

这里简单列一下可能会用到的命令:

iptables -I INPUT -s 221.0.0.0/8 -j DROP 封禁整个221开头的网段

iptables -I INPUT -s 221.181.185.159 -j DROP 封禁指定IP

iptables -L --line-numbers 展示iptables策略列表并显示序号

iptables -D INPUT 1 根据上一条显示的序号,删除INPUT链的第一条

按照上面的命令对想要封禁的IP段进行封禁即可。

总结:

这玩意是真的好用,而且功能远不止如此,可能抽空我会在csdn上补充记录一下iptables的使用方法。

这个东西在重启后会失效,所以需要做持久化的措施,具体步骤我会在下面记录。 

后续补充

1. iptables 持久化操作

在系统重启后,iptables的策略并不会保存,所以就会面临着持久化的问题。但是持久化还是相对方便的。

下面是步骤:

iptables-save > /etc/sysconfig/iptables 使用该命令将 iptables 的配置保存在/etc/sysconfig/iptables中

在/etc/rc.d/rc.local中添加iptables-restore < /etc/sysconfig/iptables 即在开机后自动导入之前保存的 iptables 策略

按如上几步操作,即可完成 iptables 的持久化操作。 

  1. 关于/etc/hosts.allow和/etc/hosts.deny失效的问题

配好这俩文件以后,我发现没有用,还是能被攻击到。就找了哥们测试了一下,发现防火墙策略没有生效。所以就研究了下是怎么回事。

下面是解决步骤:

首先是查看是否存在libwarp库,通过命令ll /lib64/libwrap.so.0即可查看这个库是否存在

如果这个库不存在的话,则使用命令yum install -y tcp_wrappers来安装这个库

ldd /usr/sbin/sshd | grep libwrap 可以查看sshd功能是否支持libwarp库,如果没用结果则说明是不支持的问题

但是有一点需要注意...openssh6.7开始默认关闭TCPwrappers支持,所以想要支持libwarp库,就需要安装6.6及以下的版本,或者重新编译一次openssh。下面我预计会记录一下重新编译openssh的方法。  

总结

好吧,就聊这么多,有问题随时咨询哦。

赞(0)
未经允许不得转载:工具盒子 » linux问题解决:用多种方法处理病毒入侵服务器ssh