linux服务器入侵检测需五步排查:一查登录日志识别暴力破解;二析进程与网络连接发现隐蔽后门;三校验系统文件完整性确认篡改;四扫描rootkit及隐藏进程;五审查计划任务与启动项溯源持久化。

当您怀疑Linux服务器可能已被入侵时,及时开展入侵检测与日志分析是确认异常行为、定位攻击痕迹的关键手段。以下是针对常见入侵场景开展日志排查与检测的实操方法:
一、检查系统登录日志与异常登录记录
系统登录日志(如 /var/log/auth.log 或 /var/log/secure)记录了所有SSH、su、sudo等身份验证事件,可帮助识别暴力破解、非法提权或隐蔽后门登录行为。
1、使用命令 sudo cat /var/log/auth.log | grep "Failed password" 筛选失败登录尝试,重点关注高频IP与短时间密集请求。
2、执行 sudo last -a | head -20 查看最近20次成功登录记录,核对登录用户、终端、源IP及时间是否符合运维习惯。
3、运行 sudo awk '{print $1}' /var/log/auth.log | sort | uniq -c | sort -nr | head -10 统计登录尝试最多的用户名,识别是否存在可疑账户(如 root、test、admin 等弱口令账户被爆破)。
二、分析进程与网络连接异常
恶意进程常驻内存并建立隐蔽网络连接,通过比对当前运行状态与基线快照,可发现伪装成合法服务的后门进程。
1、执行 ps aux --forest | grep -E "(bash|sh|python|perl|nc|socat|curl|wget)" 查找非常规解释器启动的可疑子进程树。
2、运行 sudo netstat -tulnp 2>/dev/null | grep -v "127.0.0.1:" 列出所有监听于非回环地址的端口及其对应PID,重点核查非标准端口(如 31337、4444、8080)上的未知进程。
3、使用 sudo lsof -i -P -n | grep -E ":(31337|4444|8080|6666)" 补充验证特定高危端口的连接详情,确认其是否绑定至异常路径下的二进制文件。
三、校验关键系统文件完整性
攻击者常篡改 /bin/bash、/usr/bin/sudo、/etc/passwd 等核心文件以维持权限或隐藏账户,需借助哈希比对识别未授权修改。
1、若已部署AIDE或Tripwire,立即运行 sudo aide --check 获取完整性校验报告。
2、若无预置工具,临时生成基础校验:执行 sudo sha256sum /bin/bash /usr/bin/sudo /etc/passwd /etc/shadow > /tmp/sysfile_baseline.txt 保存当前哈希值(需确保该操作发生在可信会话中)。
3、对比原始发行版哈希:从相同版本ISO中提取对应文件,或访问官方仓库的 .deb/.rpm 包内文件SHA256摘要,逐项比对 /tmp/sysfile_baseline.txt 中结果是否一致。
四、检索rootkit与隐藏进程痕迹
高级持久化威胁常利用内核模块或LD_PRELOAD劫持技术隐藏自身,常规ps/netstat无法捕获,需依赖专用检测工具或底层系统调用验证。
1、下载并静态编译 rkhunter:执行 wget https://sourceforge.net/projects/rkhunter/files/latest/download -O rkhunter.tar.gz && tar -xzf rkhunter.tar.gz && cd rkhunter-* && sudo ./installer.sh --layout default --install。
2、运行 sudo rkhunter --check --sk 执行全面扫描,跳过需交互提示,重点关注 “Suspicious Files” 和 “Rootkit strings found” 条目。
3、手动验证 /proc 文件系统一致性:执行 ls -la /proc/[0-9]* 2>/dev/null | grep -E "bash|sh|python" | head -5 检查是否存在PID目录下无对应cmdline或exe软链接的进程实例。
五、审查计划任务与启动项持久化
攻击者惯用crontab、systemd服务、rc.local等方式实现开机自启,这些配置点是持久化控制的关键入口,必须逐层排查。
1、检查所有用户级定时任务:运行 for user in $(cut -f1 -d: /etc/passwd); do echo "=== $user ==="; crontab -u $user -l 2>/dev/null; done | grep -A2 -B2 -E "(http|curl|bash|base64|\/tmp|\/dev/shm)"。
2、列出全部systemd用户服务与系统服务:执行 sudo systemctl list-unit-files --type=service | grep enabled,对非官方包安装的服务(如名称含 rev、shell、sock、backdoor)进行路径溯源:sudo systemctl show SERVICE_NAME --property=ExecStart。
3、核查启动脚本:使用 sudo grep -r "curl\|wget\|bash\|sh" /etc/cron* /etc/rc*.d /etc/init.d/ 2>/dev/null 定位含可疑下载或执行逻辑的初始化脚本。










