异常行为是最直观的警示信号,表现为明显偏离常态的言行举止,它能迅速引起注意,提示潜在风险或问题,是识别危机的重要依据。
虽然Linux系统以其出色的安全性闻名,但这并不意味着它完全免疫于恶意软件或入侵,无论是服务器还是个人电脑,保持警惕并定期检查系统健康状况都至关重要,以下是一套系统化的检测方法和步骤,帮助你判断Linux系统是否可能已遭受入侵或感染恶意软件。
-
性能显著下降:
- 表现: 系统变得异常缓慢,响应迟钝,即使在没有运行繁重任务时CPU或内存使用率也持续居高不下(使用
top
,htop
或glances
命令查看)。 - 原因: 恶意软件(如挖矿木马)会疯狂消耗系统资源。
- 表现: 系统变得异常缓慢,响应迟钝,即使在没有运行繁重任务时CPU或内存使用率也持续居高不下(使用
-
网络活动异常:
- 表现: 网络流量异常激增(使用
iftop
,nethogs
或vnstat
查看),或者发现未知的、持续的网络连接(使用netstat -tulnp
或ss -tulnp
查看ESTABLISHED状态的连接)。 - 原因: 恶意软件可能在对外进行DDoS攻击、发送垃圾邮件、泄露数据或与命令控制服务器通信。
- 表现: 网络流量异常激增(使用
-
文件系统出现可疑变化:
- 表现:
- 关键系统文件(如
/bin
,/sbin
,/usr/bin
,/usr/sbin
,/lib
,/lib64
,/etc
下的文件)被莫名修改(时间戳、大小、权限改变),使用ls -l
检查可疑文件的权限和归属,使用stat
查看详细修改时间。 - 出现陌生的、名称怪异的文件或目录(尤其是在
/tmp
,/dev/shm
,/var/tmp
等临时目录,或用户主目录下)。 - 文件或目录被加密,并出现勒索信息(勒索软件)。
- 磁盘空间被迅速耗尽(使用
df -h
和du -sh *
排查)。
- 关键系统文件(如
- 原因: 恶意软件植入、修改系统文件以隐藏自身、创建后门、存储数据或进行勒索。
- 表现:
-
系统进程行为诡异:
- 表现:
- 出现名称奇怪、路径可疑(不在
/bin
,/sbin
,/usr/bin
,/usr/sbin
等标准路径下,或藏在/tmp
,/dev
下)的进程(使用ps auxf
或pstree
查看)。 - 已知的正常进程(如
sshd
,cron
,apache2
,nginx
)消耗了异常高的资源。 - 进程无法被正常终止(
kill -9
也无效)。
- 出现名称奇怪、路径可疑(不在
- 原因: 恶意进程在运行。
- 表现:
-
用户和权限异常:
- 表现:
- 发现未知的用户账户(检查
/etc/passwd
和/etc/shadow
)。 - 已知用户的登录Shell被修改(例如改成了
/bin/false
或/sbin/nologin
的用户突然能登录)。 - 用户被莫名添加到特权组(如
sudo
,wheel
)。 sudo
配置(/etc/sudoers
)被修改,添加了未知的权限。
- 发现未知的用户账户(检查
- 原因: 攻击者创建后门账户或提升权限。
- 表现:
-
系统日志中的蛛丝马迹:
- 表现:
- 日志文件(
/var/log/auth.log
,/var/log/secure
– 记录认证信息;/var/log/syslog
,/var/log/messages
– 记录系统消息;/var/log/kern.log
– 内核日志;/var/log/cron
– 计划任务日志)出现大量失败的登录尝试、来自异常IP地址的成功登录、未知用户的活动、奇怪的cron
任务执行记录、sudo
命令的异常使用等。 - 日志文件被大量删除、清空或修改(权限被改)。
- 日志文件(
- 原因: 攻击者尝试暴力破解、成功入侵、执行恶意操作或试图掩盖踪迹,使用
journalctl
(Systemd系统)或直接查看日志文件。
- 表现:
-
计划任务 (
cron
) 异常:- 表现: 在系统级(
/etc/crontab
,/etc/cron.d/
,/etc/cron.hourly/daily/weekly/monthly/
)或用户级(crontab -l
或/var/spool/cron/crontabs/
)发现可疑的、未授权的定时任务。 - 原因: 恶意软件利用
cron
实现持久化,定期执行恶意脚本或命令。
- 表现: 在系统级(
-
服务 (
systemd
或init
) 异常:- 表现: 发现未知的、可疑的服务被安装并设置为开机自启(使用
systemctl list-unit-files --type=service --state=enabled
或检查/etc/systemd/system/
,/lib/systemd/system/
;对于SysVinit系统,检查/etc/init.d/
和chkconfig --list
/sysv-rc-conf
)。 - 原因: 恶意软件创建服务实现持久化。
- 表现: 发现未知的、可疑的服务被安装并设置为开机自启(使用
-
SSH
配置异常:- 表现:
/etc/ssh/sshd_config
文件被修改,- 启用了不安全的选项(如
PermitRootLogin yes
– 除非你明确需要且已加固)。 - 添加了未知的
AuthorizedKeysFile
路径。 - 添加了未知的
TrustedUserCAKeys
或HostCertificate
。
- 启用了不安全的选项(如
- 原因: 攻击者试图开放后门或植入自己的认证密钥。
- 表现:
使用专业工具进行深度扫描
仅靠观察症状可能不够,高级恶意软件会极力隐藏自己,使用专业的Rootkit和恶意软件扫描工具是更可靠的手段:
-
rkhunter
(Rootkit Hunter):- 功能: 检查Rootkit、后门、本地提权漏洞的迹象,扫描系统命令、关键文件、网络接口、启动项等。
- 使用:
- 安装:
sudo apt install rkhunter
(Debian/Ubuntu) /sudo yum install rkhunter
(RHEL/CentOS) - 更新数据库:
sudo rkhunter --update
- 执行检查:
sudo rkhunter --checkall
- 查看报告:
sudo less /var/log/rkhunter.log
- 安装:
- 注意: 需要定期更新和运行,报告中的警告(
Warning
)需要仔细审查,有些可能是误报(如文件权限被合理修改)。
-
chkrootkit
(Check Rootkit):- 功能: 检测已知的Rootkit和可疑文件。
- 使用:
- 安装:
sudo apt install chkrootkit
(Debian/Ubuntu) /sudo yum install chkrootkit
(RHEL/CentOS) - 执行检查:
sudo chkrootkit
- 安装:
- 注意: 同样需要定期运行。
chkrootkit
本身存在漏洞且检测能力相对老旧,报告中的“INFECTED”需要高度警惕,但也要结合其他工具验证。 它常作为辅助工具。
-
ClamAV
(开源防病毒引擎):- 功能: 主要用于检测Windows病毒、木马、恶意脚本等,但也能发现一些跨平台的恶意软件(如Shell脚本、Linux恶意软件样本)。
- 使用:
- 安装:
sudo apt install clamav clamav-daemon
(Debian/Ubuntu) /sudo yum install clamav clamav-update
(RHEL/CentOS) - 更新病毒库:
sudo freshclam
- 扫描整个系统(耗时):
sudo clamscan -r -i /
(-r
递归,-i
只显示感染文件) - 扫描特定目录:
sudo clamscan -r -i /home /tmp /etc
- 安装:
- 注意: 对Linux特有恶意软件的检出率不如前两者高,但作为补充很有价值。
-
Lynis
(安全审计工具):- 功能: 全面的系统安全审计工具,检查配置错误、安全漏洞、不符合最佳实践的地方,也包括恶意软件和Rootkit的迹象检查。
- 使用:
- 安装:
sudo apt install lynis
(Debian/Ubuntu) / 从官方下载 - 执行审计:
sudo lynis audit system
- 安装:
- 优点: 报告详细,给出风险等级和建议,不仅查恶意软件,还评估整体安全状况。
系统化的检查步骤
- 立即检查系统资源:
top
/htop
/glances
,按CPU(P)、内存(M)排序,找出消耗异常的进程,记录可疑进程的PID和命令路径。 - 检查网络连接:
sudo netstat -tulnp
/sudo ss -tulnp
,关注ESTABLISHED状态的连接,特别是连接到陌生IP/端口或由可疑进程建立的连接。sudo lsof -i
提供更多细节。 - 检查进程树:
ps auxf
/pstree
,查看进程的父子关系,寻找隐藏的或伪装成正常进程(如[kthreadd]
)的恶意进程。 - 检查关键目录:
/tmp
,/dev/shm
,/var/tmp
:查找可疑文件(随机名、隐藏文件、可执行文件)。/bin
,/sbin
,/usr/bin
,/usr/sbin
,/lib
,/lib64
:使用ls -lt
按时间排序,检查最近被修改的文件,比较文件大小、校验和(如果之前有记录)或与干净系统比较。- 用户主目录(尤其是
~/.ssh/
,检查authorized_keys
是否有未知公钥;下隐藏文件如.bashrc
,.profile
是否被注入恶意命令)。
- 检查用户和权限:
cat /etc/passwd
/cat /etc/shadow
(需root):检查未知用户、异常UID/GID、异常的登录Shell。grep 'sudo' /etc/group
/sudo cat /etc/sudoers
/ls /etc/sudoers.d/
:检查是否有用户被非法添加了sudo权限。
- 检查计划任务和服务:
sudo crontab -l
/ls -la /etc/cron*
/ls -la /var/spool/cron/crontabs/
systemctl list-unit-files --type=service --state=enabled
/ls -la /etc/systemd/system/**/*.service
/ls -la /lib/systemd/system/
- (SysVinit)
ls -la /etc/init.d/
/chkconfig --list
/sysv-rc-conf --list
- 检查SSH配置:
sudo cat /etc/ssh/sshd_config
,关注PermitRootLogin
,AuthorizedKeysFile
,TrustedUserCAKeys
,HostCertificate
等关键配置。 - 检查系统日志:
sudo tail -f /var/log/auth.log
/sudo tail -f /var/log/secure
:实时监控认证日志。sudo grep 'Failed password' /var/log/auth.log
:查看失败登录尝试。sudo grep 'Accepted password' /var/log/auth.log
:查看成功登录的来源IP和用户,是否异常。sudo grep 'cron' /var/log/syslog
:检查cron任务执行情况。sudo journalctl -u sshd --since "today"
(Systemd):查看sshd服务今天的日志。
- 运行专业扫描工具: 按照第二部分介绍,依次运行
rkhunter
,chkrootkit
,ClamAV
,Lynis
。务必先更新它们的数据库/病毒库。 仔细阅读扫描报告,对任何警告或感染提示进行深入调查。 - 检查文件完整性: 如果系统之前安装了文件完整性监控工具(如
AIDE
或Tripwire
)并建立了基准数据库,立即运行检查(sudo aide --check
),这是检测文件篡改最有效的方法之一(但需要预先配置)。
发现异常后怎么办?
- 保持冷静,避免打草惊蛇: 不要立即重启或杀死可疑进程(可能导致证据丢失或触发恶意软件的清理/破坏机制)。
- 隔离系统: 如果可能,立即将受影响的系统从网络中断开(拔网线或禁用网络接口),防止进一步的数据泄露或攻击扩散。
- 收集证据: 在安全隔离的环境下(如将硬盘挂载到另一个干净系统做只读分析),记录下所有发现的异常现象、进程信息、网络连接、文件路径、日志条目等,这对后续分析和溯源至关重要。
- 分析判断: 综合所有症状和扫描结果,判断入侵/感染的程度和恶意软件的类型。
- 制定清除/恢复计划:
- 小范围感染/配置被改: 尝试手动清除恶意文件、进程、服务、cron任务,恢复被篡改的配置文件(确保来源干净),彻底删除后门账户,修复SSH配置。操作前务必备份重要数据!
- 严重感染/内核级Rootkit: 最安全、最推荐的做法是彻底重装系统! 因为高级Rootkit可能深度嵌入内核或固件,难以完全清除,且清除过程中极易遗漏,重装后,从干净、可信的备份中恢复必要的数据(恢复前务必扫描备份数据是否干净!),并立即修补所有安全漏洞(更新系统、修改弱密码、加固配置)。
- 加强安全防护: 无论采取哪种恢复方式,事后都必须:
- 立即更新系统和所有软件到最新版本。
- 检查并强化防火墙配置(
iptables
/nftables
/ufw
)。 - 禁用不必要的服务和端口。
- 使用强密码/密钥认证,禁用SSH密码登录。
- 限制用户权限(最小权限原则)。
- 考虑部署入侵检测系统(如
OSSEC
,Wazuh
)和文件完整性监控(如AIDE
,Tripwire
)。 - 建立定期的安全审计和备份机制。
- 寻求专业帮助: 如果情况复杂、无法自行处理或涉及关键业务系统,务必联系专业的安全团队或公司进行应急响应和取证调查。
检测Linux是否中毒需要结合对系统异常行为的敏锐观察(资源、网络、文件、进程、日志)和专业扫描工具(rkhunter
, chkrootkit
, ClamAV
, Lynis
)的综合运用,没有单一方法能保证100%发现所有威胁,因此需要系统化、多角度的检查。预防永远胜于治疗。 保持系统更新、遵循安全最佳实践、部署必要的安全监控工具,是保护Linux系统免受侵害的根本之道,一旦发现入侵迹象,冷静应对,优先隔离系统,评估损失,并选择最稳妥的恢复方案(尤其是严重感染时,重装系统是最可靠的选择)。
引用说明:
rkhunter
官网: http://rkhunter.sourceforge.net/chkrootkit
官网: http://www.chkrootkit.org/ClamAV
官网: https://www.clamav.net/Lynis
官网: https://cisofy.com/lynis/AIDE
官网: https://aide.github.io/OSSEC
官网: https://www.ossec.net/Wazuh
官网: https://wazuh.com/
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/6241.html