插件窝 干货文章 Linux服务器安全:使用命令行进行入侵检测

Linux服务器安全:使用命令行进行入侵检测

检查 文件 sudo 查找 795    来源:    2025-04-12

Linux服务器入侵检测命令行指南

作为IT工程师,了解如何使用命令行工具检测Linux服务器上的潜在入侵至关重要。以下是一套全面的入侵检测方法和工具。

1. 系统日志检查

查看关键日志文件

# 认证日志
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"

2. 进程和网络监控

检查异常进程

# 查看运行中的进程
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>

3. 文件系统检查

查找可疑文件

# 查找最近修改的文件
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

4. 用户和权限检查

检查用户账户

# 查看所有用户
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

5. 安全工具使用

使用rkhunter检查rootkit

sudo rkhunter --check --sk

使用chkrootkit检查rootkit

sudo chkrootkit

使用Lynis进行安全审计

sudo lynis audit system

6. 自动化监控脚本示例

#!/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 "===== 检查完成 ====="

最佳实践建议

  1. 定期检查:设置cron任务定期运行安全检查脚本
  2. 基线记录:记录关键系统文件的原始哈希值
  3. 最小权限:遵循最小权限原则
  4. 及时更新:保持系统和安全工具更新
  5. 网络隔离:限制关键服务器的网络访问
  6. 备份:定期备份重要数据和配置

通过以上命令行工具和方法,您可以有效地检测Linux服务器上的潜在入侵行为,及时发现并处理安全威胁。