以下是在CentOS系统上检测潜在后门程序的完整Shell命令集合,按检查类别组织:
1. 检查异常用户和登录
bash
复制
# 检查/etc/passwd中的异常用户
awk -F: '($3 == 0) {print}' /etc/passwd
# 检查空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow
# 查看最近登录记录
last -n 20
# 检查当前登录用户
who -a
# 检查失败的登录尝试
lastb | head -n 20
# 检查sudoers文件修改
ls -lt /etc/sudoers /etc/sudoers.d/*
2. 检查异常进程
bash
复制
# 查看所有进程的完整命令行
ps auxfww
# 查看网络连接的进程
netstat -tulpan
# 或使用ss命令
ss -tulpan
# 检查隐藏进程
ps -ef | awk '{print $2}' | sort -n | uniq -c | awk '$1>1'
# 检查异常的进程树
pstree -apnh
# 检查CPU占用高的进程
top -b -n 1 | head -n 20
3. 检查定时任务
bash
复制
# 系统级定时任务
ls -la /etc/cron* /var/spool/cron
# 查看所有用户的crontab
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
# 检查最近修改的定时任务
find /etc/cron* /var/spool/cron -type f -mtime -7 -ls
4. 检查异常文件
bash
复制
# 查找最近3天内修改的文件
find / -type f -mtime -3 -ls | grep -vE "/proc/|/sys/|/dev/|/run/"
# 查找SUID/SGID文件
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -la {} \;
# 查找可写的系统文件
find / -path /proc -prune -o -type f -perm -o+w -exec ls -la {} \;
# 检查/tmp和/var/tmp异常文件
ls -la /tmp /var/tmp
5. 检查网络连接和后门
bash
复制
# 检查异常网络连接
lsof -i -nP
# 检查隐藏的TCP/UDP端口
netstat -nap | grep -i listen
ss -lntup
# 检查异常的DNS查询
cat /etc/resolv.conf
cat /etc/hosts
# 检查iptables/nftables规则
iptables -L -n -v
nft list ruleset
6. 检查系统服务
bash
复制
# 查看所有服务状态
systemctl list-units --type=service --all
# 检查自启动服务
systemctl list-unit-files --state=enabled
# 检查最近修改的服务文件
find /etc/systemd/system /usr/lib/systemd/system -type f -mtime -7 -ls
7. 检查内核模块
bash
复制
# 查看已加载的内核模块
lsmod
# 检查异常内核模块
find /lib/modules/$(uname -r) -type f -name "*.ko" | xargs ls -la
8. 检查Rootkit
bash
复制
# 使用rkhunter检查(需安装)
rkhunter --check --sk
# 使用chkrootkit检查(需安装)
chkrootkit
# 检查LD_PRELOAD劫持
echo $LD_PRELOAD
grep -r "LD_PRELOAD" /etc/ /home/ /root/
9. 检查SSH后门
bash
复制
# 检查SSH authorized_keys文件
find / -name authorized_keys -exec ls -la {} \; -exec cat {} \;
# 检查SSH配置文件修改
ls -lt /etc/ssh/sshd_config
grep -i "PermitRootLogin\|PasswordAuthentication" /etc/ssh/sshd_config
# 检查~/.ssh目录权限
find /home /root -name .ssh -type d -exec ls -ld {} \;
10. 自动化检查脚本
可以创建包含以下内容的检查脚本:
bash
复制
#!/bin/bash
echo "=== 安全检查开始 ==="
date
echo -e "\n### 用户检查 ###"
awk -F: '($3 == 0) {print}' /etc/passwd
echo -e "\n### 进程检查 ###"
ps auxfww
echo -e "\n### 网络检查 ###"
netstat -tulpan
echo -e "\n### 定时任务检查 ###"
ls -la /etc/cron* /var/spool/cron
echo -e "\n=== 安全检查结束 ==="
注意事项
- 建议在干净的系统中运行这些命令,避免检查工具本身被篡改
- 对于生产环境,最好使用Live CD启动后进行检查
- 发现可疑项目时,不要立即删除,先备份证据
- 检查完毕后应考虑重装系统以确保安全
这些命令组合可以帮助您全面检查CentOS系统中可能存在的后门程序。根据实际情况,您可能需要调整命令参数或添加更多特定的检查项。