There were 13 failed login attempts since the last successful login.
远程登录linux
服务器的时候偶尔会看到这样的提示,说明有人/程序在偷偷的尝试登录你的服务器。
对于这种情况,有必要排查系统是否已经被人成功的远程登录了。
-
使用
lastlog
命令查询各个用户最后一次的登录时间,检查是否有可疑的用户登录
检查上次的登录时间
last
使用
last
命令可以检查用户的登录历史Last searches back through the file /var/log/wtmp (or the file designated by the -f flag) and displays a list of all users logged in (and out) since that file was created.
lastb
使用
lastb
命令可以检查用户登录失败的历史Lastb is the same as last, except that by default it shows a log of the file /var/log/btmp, which contains all the bad login attempts.
不管是
/var/log/wtmp
,还是/var/log/btmp
,系统每隔一段时间会备份一次并清空。备份的文件都会放在/var/log/
目录下。备份时间应该是可以设定的,我的系统是1个月。对于我这种情况,如果异常登录发生在月初,有必要使用-f
参数加载上个月的日志检查一下补充一下,上面说的备份时间在
/etc/logrotate.conf
这个文件中设定,具体的帮助见man logrotate
- 检查服务器的负荷,使用
top
命令服务器被黑之后,可能会被偷偷用于挖矿等各种
CPU
密集型的业务。服务器负荷一般是比较稳定的,如果发现负荷比正常大了,就得去检查有没有什么可疑的进程了。对于这种情况,往往程序会向骇客自己的服务器回传消息,检查异常的网络连接一般可以发现。lsof -i
检查所有的网络连接
netstat -nltp
检查所有的监听端口,对于黑别人的机器作为服务端,情况应该比较少见。
之前遇到过一次这种情况,服务器的负荷突然增加,检查发现了一个从未用过的用户的登录记录,以及一个可疑的进程。大体分析了一下,应该是一个挖矿程序。通过
rsync
向自己的服务器回传消息。至于为什么我的服务器被黑之后还可以登录,大概是因为他只拿到了那个用户的权限,没法进一步提权吧
发现可疑的进程ID后,如何确定程序所在的目录以及命令入口?
-
通过
PID
获取用户的工作目录和命令行参数/proc/<PID>
目录下- `cwd`是指向工作程序目录的软链接 - `exe`是工作程序的软链接 - `cmdline`里面的内容是程序的命令行参数
- 通过
PID
获取程序监听的端口$ sudo netstat -nltp | grep <pid>
- 检查占用端口的程序
$ sudo lsof -i :<port>
对于频繁尝试登录服务器的IP地址,可以将其添加到/etc/hosts.deny
中。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。