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中。


莫谈国是
16 声望5 粉丝

引用和评论

0 条评论