年前的时候为了看某站的视频,用自己的服务器搭了一把梯子。平常就是扶墙用,没怎么维护过。
结果最近看了一下用户登录记录,有10万个斯巴达勇士正在冲我们家水晶。。。这里简单记录一下服务器被人攻击的应对方案。
1.首先查看一下用户登入记录与失败记录。
查看登入记录
last -n
这里n代表显示的用户数量,例如查看前3名登录的用户信息。
检查了一下ip地址,登入的都是自己的设备,再看一下登入失败的记录。
lastb
刚打完这一串代码,直接被失败记录刷屏了。这里攻击者的ip就不打码了,应该都是肉鸡。这里截取一部分:
[root@mail ~]# lastb -50
rabbitmq ssh:notty 203.81.78.180 Mon Mar 16 14:08 - 14:08 (00:00)
rabbitmq ssh:notty 203.81.78.180 Mon Mar 16 14:08 - 14:08 (00:00)
root ssh:notty 190.144.135.118 Mon Mar 16 14:08 - 14:08 (00:00)
root ssh:notty 41.222.249.236 Mon Mar 16 14:08 - 14:08 (00:00)
ftpguest ssh:notty 139.255.87.213 Mon Mar 16 14:08 - 14:08 (00:00)
ftpguest ssh:notty 139.255.87.213 Mon Mar 16 14:08 - 14:08 (00:00)
ftpuser2 ssh:notty 191.253.104.228 Mon Mar 16 14:07 - 14:07 (00:00)
ftpuser2 ssh:notty 191.253.104.228 Mon Mar 16 14:07 - 14:07 (00:00)
root ssh:notty 218.104.225.140 Mon Mar 16 14:07 - 14:07 (00:00)
root ssh:notty 218.77.105.226 Mon Mar 16 14:06 - 14:06 (00:00)
root ssh:notty 128.199.224.215 Mon Mar 16 14:05 - 14:05 (00:00)
root ssh:notty 106.51.68.74 Mon Mar 16 14:05 - 14:05 (00:00)
root ssh:notty 190.144.135.118 Mon Mar 16 14:04 - 14:04 (00:00)
www-data ssh:notty 218.77.105.226 Mon Mar 16 14:04 - 14:04 (00:00)
www-data ssh:notty 218.77.105.226 Mon Mar 16 14:04 - 14:04 (00:00)
admin pts/1 network58-host62 Mon Mar 16 14:04 - 14:04 (00:00)
root pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
guest pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
admin pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
root pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
admin pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
root pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
admin pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
root pts/1 network58-host62 Mon Mar 16 14:03 - 14:03 (00:00)
。。。这不就是穷举法吗,我只是设置了一个简单的9位数字密码(一共10^9种可能),这家伙爆破了半个月都没进来。。说到这里有点心疼这位来自非洲的朋友。
以下转载内容/内容参考:https://blog.csdn.net/gammey/article/details/80404375
简单的修改策略:
方法一:修改远程登录端口
修改/etc/ssh/sshd_config文件中的Port 将前方的#注释删除,并将22修改为你想要使用远程登录的端口,例如54231。
vim /etc/ssh/sshd_config
在防火墙上添加运行端口:
iptables -I INPUT -p tcp --dport 54231 -j ACCEPT
**ubuntu系统可以使用命令:sudo ufw allow 54231
**CentOS7系统并使用firewalld,可以使用命令:
firewall-cmd --zone=public --add-port=54231/tcp --permanent
**如果是使用云服务器,云服务商有提供外部防火墙,例如阿里云的安全组的情况下还要在外部的安全组中修改允许tcp端口54231端口的策略。
最后使用serivce sshd restart
重启sshd服务即可。
serivce sshd restart
CentOS7用户使用systemctl restart sshd
。
systemctl restart sshd
重启服务之后登录服务器都需要输入指定的远程端口才能够登录服务器,大大降低了黑客攻击服务器的概率。
ssh root@ip_address -p +端口号
方法二:限制登录IP
如果你的公司或者常常需要登录服务器的工作网络环境拥有固定的IP地址时,限制登录IP地址就可以很好的保护服务器免受黑客攻击。如果没有上述的条件,我们也可以通过搭建堡垒机,将所有服务器都设置为允许堡垒机的IP地址登录即可保护您的服务器。
操作起来相当简单,首先在/etc/hosts.allow中加入如下信息:
vim /etc/hosts.allow
sshd:172.16.*.*
这条信息表示sshd服务允许向IP地址为172.16开头的IP地址提供服务。
其次在/etc/hosts.deny中加入如下信息:
/etc/hosts.deny
sshd:all:deny
这条信息表示sshd服务不允许向所有IP地址提供服务。
如此一来服务器将只有指定的IP地址可以访问。
方法三:使用非root用户登录
禁止root用户登录并且设置允许其他用户登录后切换至root进行操作。这样黑客如果想要通过ssh登录服务器除了密码之外首先他还需要知道服务器允许登录的用户,这样将大大降低黑客攻破ssh的可能性。
首先,在服务器内创建一个用户,learntop:useradd learntop
并且设置密码:passwd learntop ,当然密码需要尽量复杂。
useradd learntop
passwd learntop
Changing password for user sk2.
New password:
删除用户:
userdel sk2
接下来我们需要允许此用户能够以root用户身份运行命令。
使用visudo命令进入文本编辑模式,于92行附近
root ALL=(ALL) ALL
learntop ALL=(ALL) NOPASSWD:ALL
添加红色字体信息:"ALL=(ALL) NOPASSWD:ALL
",保存退出后可以验证一下。
[root@localhost ~]#visudo
[root@localhost ~]# su learntop
[learntop@localhost root]$ sudo su -
Last login: Tue May 22 12:55:36 CST 2018 on pts/1
[root@localhost ~]#whoami
root
首先使用su learntop切换至learntop用户,接下来我们可以使用sudo su -命令切换到root用户。
在设置可以通过learntop用户登录系统并能够自由切换至管理员用户操作后,我们需要禁止root用户通过远程方式登录系统。
#禁止root用户登入
在/etc/ssh/sshd_config文件内添加“PermitRootLoginno”,后重启sshd服务。启动后,root用户就将无法通过ssh服务直接连接到服务器。
vim /etc/ssh/sshd_config
第42行左右
#LoginGraceTime 2m
#PermitRootLogin yes <- 改他
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10
其实最简单的方法就是设置高复杂度的密码,大小写混合数字符号的20位密码,光靠穷举法一年也进不来的。