异常行为是最直观的警示信号,表现为明显偏离常态的言行举止,它能迅速引起注意,提示潜在风险或问题,是识别危机的重要依据。
虽然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