作为IT工程师,了解如何使用命令行工具检测Linux服务器上的潜在入侵至关重要。以下是一套全面的入侵检测方法和工具。
# 认证日志
sudo cat /var/log/auth.log # Debian/Ubuntu
sudo cat /var/log/secure # RHEL/CentOS
# 系统日志
sudo cat /var/log/syslog
# 最近登录记录
last
lastb # 查看失败的登录尝试
# 当前登录用户
who
w
# 查找失败的SSH尝试
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr
# 查找可疑的sudo使用
sudo grep sudo /var/log/auth.log | grep -v "not in sudoers"
# 查看运行中的进程
ps auxf
# 查看CPU/内存占用高的进程
top
htop
# 查找隐藏进程
ps -ef | awk '{print $2}' | sort -n | uniq -c | awk '$1>1'
# 查看所有网络连接
netstat -tulnp
ss -tulnp
# 查找异常连接
lsof -i
# 检查与可疑IP的连接
netstat -anp | grep <可疑IP>
# 查找最近修改的文件
find / -type f -mtime -7 -print
# 查找SUID/SGID文件
find / -type f \( -perm -4000 -o -perm -2000 \) -exec ls -la {} \;
# 查找世界可写文件
find / -xdev -type d \( -perm -0002 -a ! -perm -1000 \) -print
find / -xdev -type f -perm -0002 -print
# 查找隐藏文件和目录
find / -name "..*" -print
find / -name "...*" -print
# 使用AIDE进行完整性检查
sudo aide --check
# 快速MD5检查关键文件
md5sum /bin/ls /bin/ps /bin/netstat /usr/bin/top
# 查看所有用户
cat /etc/passwd
# 查看有登录shell的用户
grep -v "/sbin/nologin" /etc/passwd | grep -v "/bin/false"
# 查看空密码账户
awk -F: '($2 == "") {print $1}' /etc/shadow
# 查看sudo权限用户
grep -Po '^sudo.+:\K.*$' /etc/group
# 系统级计划任务
ls -la /etc/cron*
cat /etc/crontab
# 用户级计划任务
for user in $(cut -f1 -d: /etc/passwd); do crontab -u $user -l; done
sudo rkhunter --check --sk
sudo chkrootkit
sudo lynis audit system
#!/bin/bash
# 快速安全检查脚本
echo "===== 安全检查开始 ====="
date
echo ""
echo "===== 最近登录 ====="
last | head -20
echo ""
echo "===== 失败的登录尝试 ====="
sudo grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr | head -20
echo ""
echo "===== 当前网络连接 ====="
netstat -tulnp | grep -v "127.0.0.1"
echo ""
echo "===== 最近修改的文件 ====="
find /etc /bin /sbin /usr/bin /usr/sbin -type f -mtime -7 -print | head -50
echo ""
echo "===== SUID/SGID文件 ====="
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f -print | head -50
echo ""
echo "===== 检查完成 ====="
通过以上命令行工具和方法,您可以有效地检测Linux服务器上的潜在入侵行为,及时发现并处理安全威胁。