【教你搭建服务器系列】(6)如何判断服务器被入侵

2021-12-07 13:25:42 浏览数 (1)

虽然你的网站是可以运行了,但想要网站 7*24 小时高可用不掉线,还远远不够,因为互联网还有一个看不见的手——入侵者

如果你买的是云服务器,比如说腾讯云、阿里云这种,一旦你登录了你的服务器,随后没有设置安全组、密钥、用户、IP,或者没有修改密码、默认端口,那么你的服务器就很容易被入侵,一般是被挖矿,或者被操控当做DDOS的攻击者。

可以说,只要你不设置安全组、防火墙,那么你的服务器基本上就没了,别问我为什么知道,因为我的三台服务器就是这么被黑掉的。

我经历过的三种被黑的情况:

  • 挖矿(目前也是最多的)
  • DDOS(操控你的服务器攻击其他网站)
  • 勒索(删库)

本篇文章来介绍一些常见的服务器入侵排查方法。

1、宕机

这个是最常见的,一般你的服务器被入侵了,服务器的进程就被杀死了,万一某一天你的网站打不开了,MySQL、Redis都挂了,基本上就是被黑了。

2、日志

2.1、日志记录

入侵者可能会删除机器的日志信息,可以查看日志信息是否还存在或者是否被清空。

代码语言:javascript复制
[root@VM-8-8-centos ~]# du -sh /var/log/*
40K     /var/log/anaconda
36M     /var/log/audit
0       /var/log/boot.log
4.0K    /var/log/boot.log-20191106
4.0K    /var/log/boot.log-20200807
4.0K    /var/log/boot.log-20200902
16K     /var/log/boot.log-20201228
16K     /var/log/boot.log-20210325
3.8M    /var/log/btmp
5.9M    /var/log/btmp-20210501

/var/log 这个目录存在很多操作的日志。

Linux系统常见的日志文件

代码语言:javascript复制
路径1:/var/log/messages:记录 Linux 内核消息及各种应用程序的公共日志信息

路径2:/var/log/cron:记录 crond 计划任务产生的事件信息

路径3:/var/log/dmesg:记录 Linux 操作系统在引导过程中的各种事件信息

路径4:/var/log/maillog:记录进入或发出系统的电子邮件活动

路径5:/var/log/lastlog:记录每个用户最近的登录事件

路径6:/var/log/secure:记录用户认证相关的安全事件信息

路径7:/var/log/wtmp:记录每个用户登录、注销及系统启动和停机事件

路径8:/var/log/btmp:记录失败的、错误的登录尝试及验证事件

所以只要非法者登录,就一定会记录在这里,如果这些日志都被删除了,那么只有一个可能,就是毁尸灭迹。

下面来展开看看一些关键的日志:

2.2、登录失败日志

lastlog 命令对于的日志是/var/log/lastlog,记录了最近一次的登录用户。

如果一个用户从未登录过,lastlog显示**Never logged**。注意需要以root身份运行该命令。

代码语言:javascript复制
[root@VM-8-8-centos etc]# lastlog
Username         Port     From             Latest
root             pts/1    119.91.91.73     Tue May 11 12:51:22  0800 2021
bin                                        **Never logged in**
daemon                                     **Never logged in**
adm                                        **Never logged in**
lp                                         **Never logged in**
sync                                       **Never logged in**
shutdown                                   **Never logged in**
halt                                       **Never logged in**

2.3、查看机器当前登录的全部用户

who命令对应日志文件 /var/run/utmp

代码语言:javascript复制
[root@VM-8-8-centos etc]# who
root     pts/0        2021-05-11 10:36 (119.91.91.73)
root     pts/1        2021-05-11 12:51 (119.91.91.73)

2.4、查看机器创建以来登陆过的用户

last 命令对应日志文件/var/log/wtmp

代码语言:javascript复制
[root@VM-8-8-centos etc]# last
reboot   system boot  3.10.0-1127.19.1 Wed Mar 24 14:45 - 14:05 (47 23:19)
root     pts/3        120.91.21.11   Tue Mar 23 20:50 - 00:02  (03:11)
root     pts/2        119.91.91.73     Mon Mar 22 12:34 - crash (2 02:11)
root     pts/1        119.91.91.73     Mon Mar 22 11:40 - crash (2 03:05)
root     pts/2        119.91.91.73     Thu Mar 18 15:35 - 09:01 (3 17:26)

命令输出字段介绍:

代码语言:javascript复制
  第一列:用户名
  第二列:终端位置。pts/0 (伪终端) 意味着从诸如SSH或telnet的远程连接的用户.tty (teletypewriter) 意味着直接连接到计算机或者本地连接的用户
  第三列:登录ip或者内核 。如果你看见:0.0 或者什么都没有,这意味着用户通过本地终端连接。除了重启活动,内核版本会显示在状态中。
  第四列:开始时间
  第五列:结束时间(still login in 还未退出 down 直到正常关机 crash 直到强制关机)
  第六列:持续时间

2.5、异常流量

如果是挖矿和DDOS,必然会出现大流量,此时可以抓包试试。

可以使用命令 tcpdump抓取网络包查看流量情况,或者使用工具iperf查看流量情况。

tcpdump抓包可以知道目标源IP、端口、数据包是什么。

2.6、抓取入侵者的信息

代码语言:javascript复制
[root@VM-8-8-centos etc]#  cat /var/log/secure | grep -i "accepted password"
Dec 28 17:32:18 VM-8-8-centos sshd[1698]: Accepted password for root from 119.91.91.72 port 38620 ssh2
Dec 28 17:35:04 VM-8-8-centos sshd[2166]: Accepted password for root from 119.91.91.72 port 7571 ssh2
Dec 28 17:40:59 VM-8-8-centos sshd[2963]: Accepted password for root from 119.91.91.72 port 63710 ssh2
Dec 28 18:04:12 VM-8-8-centos sshd[6523]: Accepted password for root from 119.91.91.72 port 32717 ssh2

查看这个IP是否可疑,如果不是自己的IP那很可能就是入侵者的IP(一般都是代理的IP)

2.7、top命令

top命令可以很容易知道服务器的CPU压力,还有进程消耗的CPU资源,如果是挖矿,很容易就被发现了。

但还有一种情况是:入侵者会隐藏挖矿进程,你使用top命令是无法显示这个挖矿进程的,这个就很脑壳痛了。


以上就是一些简单的排查方法,下一篇文章带你走进真实的服务器被黑排查过程。

0 人点赞