帮助中心

立即注册 咨询客服

当前位置:首页 > 帮助中心> 如何检查Linux系统服务器是否被入侵?

如何检查Linux系统服务器是否被入侵?

发布时间:2020年06月09日 11:54:36    来源: A5互联

黑客可以在不让你知道的情况下渗透你的服务器系统,用恶意软件感染它来完全控制,甚至在系统之间进行横向移动。恶意软件可以隐藏在系统中,并作为一个后门或命令和控制系统为黑客进行恶意活动的系统。您可能不会立即意识到您的系统被黑了,但是有一些方法可以确定您的系统是否受到了危害。本文将讨论如何确定您的Linux系统服务器是否被未经授权的人员入侵,或者正在登录您的服务器系统执行恶意活动。

一、Netstat

Netstat是一个重要的命令行TCP/IP网络实用程序,它提供了有关正在使用的协议和活动网络连接的信息和统计数据。

我们将在一台被黑的服务器上使用netstat,通过以下命令检查活动中的网络连接是否有可疑之处。

ubuntu@ubuntu:~$ netstat -antp

在这里,我们将看到所有当前活动的连接。现在,我们寻找不应该存在的连接。

这是PORT 44999上的活动连接(不应打开的端口)。我们可以在最后一列中看到有关该连接的其他详细信息,例如PID以及正在运行的程序名称。在这种情况下,PID为1555,并且它正在运行的恶意有效载荷是./shell.elf文件。

另一个用于检查系统上当前正在监听并处于活动状态的端口的命令如下:

ubuntu @ ubuntu:〜$ netstat -la

这是一个非常混乱的输出。要过滤掉监听和已建立的连接,我们将使用以下命令:

ubuntu@ubuntu:~$ netstat -la | grep “LISTEN” “ESTABLISHED”

这将只给你重要的结果,这样你就可以更容易地对这些结果进行分类。在上面的结果中,我们可以看到44999端口有一个活动连接。

在识别出恶意进程后,你可以通过以下命令杀死该进程。我们将使用netstat命令记录进程的PID,并通过以下命令杀死该进程。

ubuntu@ubuntu:~$ kill 1555

二、~.bash-history

Linux服务器会保存哪些用户登录系统的记录,从哪个IP、何时、多久登录的。

你可以通过最后一条命令来获取这些信息。这个命令的输出结果会是这样的。

ubuntu@ubuntu:~$ last

输出结果显示第一列是用户名,第二列是终端,第三列是源地址,第四列是登录时间,最后一列是总会话时间。在本例中,用户usman和ubuntu仍在登录。

记录历史记录存储在〜.bash-history文件中。因此,通过删除可以轻松删除历史记录。bash历史文件。攻击者经常执行此操作以掩盖其踪迹。

ubuntu @ ubuntu:〜$ cat .bash_history

此命令将显示在系统上运行的命令,最新命令在列表的底部执行。

可以通过以下命令清除历史记录:

ubuntu@ubuntu:~$ history -c

此命令只会从您当前使用的终端中删除历史记录。因此,有一种更正确的方法可以做到这一点:

ubuntu@ubuntu:~$ cat /dev/null > ~/.bash_history

这将清除历史记录的内容,但将文件保留在原位。因此,如果在运行最后一条命令后仅看到当前登录名,则根本不是一个好兆头。这表明您的系统可能已受到攻击,并且攻击者可能删除了历史记录。

如果您怀疑有恶意用户或IP,请以该用户身份登录并运行命令历史记录,如下所示:

ubuntu@ubuntu:~$ su

ubuntu@ubuntu:~$ history

该命令将通过读取文件显示命令历史.bash历史的/家庭用户的文件夹中。仔细寻找wget,curl或netcat命令,以防攻击者使用这些命令来传输文件或安装回购工具(例如挖矿或垃圾邮件机器人)之外。

三、Cron Jobs

在配置为在攻击机器上设置反向shell时,Cron Jobs可以用作重要工具。编辑Cron Jobs是一项重要技能,因此知道如何查看它们也很重要。

要查看当前用户正在运行的Cron Jobs,我们将使用以下命令:

ubuntu @ ubuntu:〜$ crontab -l

要查看为另一个用户(在本例中为Ubuntu)运行的Cron Jobs,我们将使用以下命令:

ubuntu@ubuntu:~$ crontab -u ubuntu -l

要查看每日,每小时,每周和每月的Cron Jobs,我们将使用以下命令:

日常Cron Jobs:

ubuntu@ubuntu:~$ ls -la /etc/cron.daily

每小时Cron Jobs:

ubuntu@ubuntu:~$ ls -la /etc/cron.hourly

每周Cron Jobs:

ubuntu@ubuntu:~$ ls -la /etc/cron.weekly

举个例子:

攻击者可以将Cron Jobs放在/ etc / crontab中,该Jobs每小时隔10分钟运行一次恶意命令。攻击者还可以通过netcat或其他实用程序来运行恶意服务或反向Shell后门。当执行命令$〜crontab -l时,您将看到一个Cron Jobs在以下位置运行:

要正确检查您的系统是否受到威胁,查看正在运行的进程也很重要。在某些情况下,某些未经授权的进程没有消耗足够的CPU使用率,无法在top命令中列出。那就是我们将使用ps命令显示所有当前正在运行的进程的地方。

ubuntu@ubuntu:~$ ps auxf

第一列显示用户,第二列显示唯一的进程ID,下列显示CPU和内存使用情况。

该表将为您提供最多的信息。您应该检查每个正在运行的进程,以查找任何异常信息,以了解系统是否受到威胁。如果发现任何可疑内容,请对其进行Google搜索或使用lsof命令运行它,如上所示。这是在您的服务器上运行ps命令的好习惯,它将增加您发现可疑内容或超出日常工作范围的机会。

四、/ etc / passwd

在/ etc / passwd文件文件跟踪系统中每个用户的。这是一个用冒号分隔的文件,其中包含用户名,用户ID,加密密码,GroupID(GID),用户全名,用户主目录和登录Shell等信息。

如果攻击者入侵您的系统,则他或她可能会创建更多的用户,以分隔事物或在系统中创建后门,以便重新使用该后门。在检查系统是否受到威胁时,还应该验证/ etc / passwd文件中的每个用户。输入以下命令来这样做:

ubuntu @ ubuntu:〜$ cat etc / passwd

此命令将为您提供类似于以下内容的输出:

现在,您将要查找您不认识的任何用户。在此示例中,您可以在名为“匿名”的文件中看到一个用户。还要注意的另一件事是,如果攻击者创建了一个用户重新登录,则该用户还将被分配一个“ / bin / bash” shell。因此,您可以通过grepping以下输出来缩小搜索范围:

ubuntu@ubuntu:~$ cat /etc/passwd | grep -i "/bin/bash"

您可以执行其他“bash magic”来完善您的输出。

ubuntu@ubuntu:~$ cat /etc/passwd | grep -i "/bin/bash" | cut -d ":" -f 1

五、Find

基于时间的搜索对于快速分类非常有用。用户还可以修改文件更改时间戳。为了提高可靠性,请将ctime包含在标准中,因为要对其进行修改非常困难,因为它需要修改某些级别文件。

您可以使用以下命令查找过去5天创建和修改的文件:

ubuntu@ubuntu:~$ find / -mtime -o -ctime -5

要查找根拥有的所有SUID文件并检查列表中是否有任何意外的条目,我们将使用以下命令:

ubuntu@ubuntu:~$ find / -perm -4000 -user root -type f

要查找根拥有的所有SGID(设置用户ID)文件,并检查列表中是否有意外条目,我们将使用以下命令:

ubuntu@ubuntu:~$ find / -perm -6000 -type f

六、Chkrootkit

Rootkit是系统可能发生的最糟糕的事情之一,并且是最危险的攻击之一,比它们对恶意软件和病毒的危害更大,无论是它们对系统造成的损害还是难以发现和检测到它们。

它们的设计方式使其保持隐藏状态,并会进行恶意行为,例如窃取信用卡和网上银行信息。Rootkit使网络罪犯能够控制您的计算机系统。Rootkit还可帮助攻击者监视您的击键并禁用防病毒软件,从而使窃取您的私人信息更加容易。

这些类型的恶意软件会在用户甚至没有注意到的情况下在您的系统上保留很长时间,并且可能造成严重的破坏。一旦检测到Rootkit,就只能重新安装整个系统。有时,这些攻击甚至可能导致硬件故障。

幸运的是,有一些工具可以帮助检测Linux系统上的Rootkit,例如Lynis,Clam AV或LMD(Linux恶意软件检测)。您可以使用以下命令检查系统中的已知Rootkit。

首先,通过以下命令安装Chkrootkit:

ubuntu@ubuntu:~$ sudo apt install chkrootkit

这将安装Chkrootkit工具。您可以使用此工具通过以下命令检查Rootkit:

ubuntu@ubuntu:~$ sudo chkrootkit

Chkrootkit软件包包含一个shell脚本和一个程序,这些脚本检查系统二进制文件以进行rootkit修改,该程序检查各种安全问题。在上述情况下,程序包在系统上检查了Rootkit的迹象,但未找到任何迹象。好吧,这是一个好兆头!

七、Linux日志

Linux日志提供了有关Linux工作框架和应用程序的事件时间表,并且是遇到问题时的重要调查工具。管理员发现系统受到威胁时,管理员需要执行的主要任务是剖析所有日志记录。

对于工作区域应用程序的显式问题,日志记录与各个区域保持联系。例如,Chrome将崩溃报告撰写为'〜/ .chrome / Crash Reports'),其中工作区应用程序根据工程师撰写日志,并显示该应用程序是否考虑了自定义日志的安排。记录位于/ var / log目录中。有适用于所有内容的Linux日志:框架,部分,捆绑包负责人,启动表单,Xorg,Apache和MySQL。在本文中,主题将明确地集中在Linux框架日志上。

您可以使用光盘顺序更改为该目录。您应该具有root权限才能查看或更改日志文件。

ubuntu@ubuntu:~$ cd /var/log

1、查看Linux日志的说明

利用以下命令查看必要的日志文档。

此时,可以使用命令cd / var / log查看Linux日志,方法是编写命令以查看存放在此目录下的日志。syslog是最重要的日志之一,它记录了许多重要的日志。

ubuntu@ubuntu: cat syslog

为了清理输出,我们将使用“ less”命令。

ubuntu@ubuntu: cat syslog | less

键入命令var / log / syslog以查看syslog文件下的很多内容。专注于特定问题将需要一些时间,因为该记录通常很长。按Shift + G在记录中向下滚动到END,以“ END”表示。

您也可以通过dmesg查看日志,该日志显示零件环支撑。此功能将打印所有内容,并沿文档尽可能远地发送给您。从这一点出发,您可以使用dmesg | 少看看产量。如果需要查看给定用户的日志,则必须运行以下命令:

dmesg – facility=user

总之,可以利用尾部顺序查看日志文件。它是一个很小但有用的实用程序,可用于显示日志的最后部分,该问题最可能发生在该位置。您还可以指定要在tail命令中显示的最后字节或行数。为此,请使用命令tail / var / log / syslog。有很多查看日志的方法。

对于特定数量的行(模型考虑最后5行),请输入以下命令:

ubuntu@ubuntu:~$ tail -f -n 5 /var/log/syslog

这将打印最新的5行。当另一条线进来时,前一条将被撤离。要摆脱尾部顺序,请按Ctrl + X。

2、重要的Linux日志

Linux的主要四个日志包括:

应用日志

事件记录

服务日志

系统日志

ubuntu@ubuntu: cat syslog | less

/ var / log / syslog或/ var / log / messages:常规消息,与框架相关的数据一样。该日志存储全球框架上的所有操作信息。

ubuntu@ubuntu: cat auth.log | less

/var/log/auth.log或/ var / log / secure:存储验证日志,包括有效和失败的登录名以及验证策略。Debian和Ubuntu使用/var/log/auth.log存储登录尝试,而Redhat和CentOS使用/ var / log / secure存储认证日志。

ubuntu@ubuntu: cat boot.log | less

/var/log/boot.log:包含有关启动的信息以及启动过程中的消息。

ubuntu@ubuntu: cat maillog | less

/ var / log / maillog或/var/log/mail.log:存储由邮件服务器标识的所有日志;当您需要有关Postfix,smtpd或服务器上运行的任何与电子邮件相关的管理的数据时,此功能非常有用。

ubuntu@ubuntu: cat kern | less

/ var / log / kern:包含有关内核日志的信息。该日志对于调查自定义部分很重要。

ubuntu@ubuntu: cat dmesg | less

/ var / log / dmesg:包含标识小工具驱动程序的消息。订单dmesg可用于查看此记录中的消息。

ubuntu@ubuntu: cat faillog | less

/ var / log / faillog:包含所有失败的登录尝试的数据,对于收集有关尝试的安全渗透的知识很有用;例如,那些试图破坏登录证书的人,就像动物的袭击一样。

ubuntu@ubuntu: cat cron | less

/ var / log / cron:存储所有与Cron有关的消息;例如,cron雇用,或cron守护程序启动一项职业时,相关的失望消息等等。

ubuntu@ubuntu: cat yum.log | less

/var/log/yum.log:使用yum顺序引入捆绑软件时,此日志存储所有相关数据,这有助于确定捆绑软件和所有段是否有效引入。

ubuntu@ubuntu: cat httpd | less

/ var / log / httpd /或/ var / log / apache2:这两个目录用于存储Apache HTTP服务器的所有类型的日志,包括访问日志和错误日志。error_log文件包含http服务器收到的所有错误请求。这些错误包含内存问题和其他与框架相关的错误。access_log包含通过HTTP收到的所有请求的记录。

ubuntu@ubuntu: cat mysqld.log | less

/var/log/mysqld.log或/var/log/mysql.log:MySQL日志文档,记录所有失败,调试和成功消息。这是框架指向注册表的另一种情况。RedHat,CentOS,Fedora和其他基于RedHat的框架使用/var/log/mysqld.log,而Debian / Ubuntu使用/var/log/mysql.log目录。

3、用于查看Linux日志的工具

现在有许多可访问的开源日志跟踪器和检查设备,这使得为动作日志选择正确的资产比您想象的更简单。免费和开源的日志检查器可以在任何系统上完成这项工作。比如GRAYLOG、NAGIOS、LOGALYZE等。

八、如果你的服务器被人入侵了,应该怎么办?

最主要的是不要惊慌,特别是如果未经授权的人现在已经登录了。在对方知道你已经发现被入侵之前,你应该可以夺回服务器的控制权。如果对方已经发现你发现了他们,那攻击者很可能会把你从服务器上挡下来,然后开始破坏你的系统。如果你没有那么高的技术支持,那么你必须做的就是立即关闭整个服务器。你可以通过以下命令来关闭服务器:

ubuntu@ubuntu:~$ shutdown -h now

或者

ubuntu@ubuntu:~$ systemctl poweroff

当然,您也可以联系服务器提供商直接关闭服务器。如果您的服务提供商具有防火墙黑白名单,那么请创建并启用以下两个规则:

仅允许来自您的IP地址的SSH通信。

阻止其他所有内容,不仅阻止SSH,还阻止在每个端口上运行的每种协议。

要检查活动的SSH会话,请使用以下命令:

ubuntu @ ubuntu:〜$ ss | grep ssh

使用以下命令终止其SSH会话:

ubuntu@ubuntu:~$ kill

这将终止他们的SSH会话,并使您可以访问服务器。

如果您没有上层防火墙,则必须在服务器本身上创建并启用防火墙规则。然后,在设置了防火墙规则后,通过“ kill”命令杀死未经授权的用户的SSH会话。

最后一种可用的技术是通过带外连接(例如串行控制台)登录服务器。通过以下命令停止所有联网:

ubuntu@ubuntu:~$ systemctl stop network.service

这将完全阻止任何系统访问您,因此您现在可以在自己的时间启用防火墙控制。

重新获得对服务器的控制权限后,不要尝试修复问题并重复使用它们,损坏的东西大都无法修复。您永远不知道攻击者可以做什么,因此永远不要确保服务器是安全的。因此,备份好重要数据后,重新安装系统是最佳选择。