Ubuntu日志中检测恶意活动的核心方法
恶意活动的痕迹通常集中在以下系统日志中,需优先监控:
/var/log/auth.log:记录认证相关事件(SSH登录、sudo使用、用户账户变更)。异常表现包括多次失败登录尝试、陌生IP登录成功、未授权账户创建。/var/log/syslog:系统通用日志(内核消息、服务错误、安全警报)。异常包括未授权服务启动、内核模块加载异常、系统错误激增。/var/log/kern.log:内核级事件(设备驱动加载、硬件交互)。异常如未知设备驱动加载、内核 panic。/var/log/apache2/access.log/error.log、/var/log/nginx/access.log/error.log):记录HTTP请求。异常包括大量404错误(恶意扫描)、高频POST请求(SQL注入尝试)、陌生User-Agent。/var/log/mysql/error.log):记录数据库操作。异常如“access denied”(未授权访问尝试)、高频失败查询。通过基础命令快速定位可疑行为:
grep过滤关键关键词:
grep "Failed password" /var/log/auth.loggrep "sudo" /var/log/auth.log | grep -i "password"(关注频繁使用sudo的账户)grep " 404 " /var/log/apache2/access.log | awk '{print $1, $7}' | sort | uniq -c | sort -nr(统计高频404错误的IP和路径)awk统计与提取:
awk '/Failed password/ {print $11}' /var/log/auth.log | sort | uniq -c(显示每个IP的失败次数)awk '/error/ && $3 ~ /[0-9]{2}:[0-9]{2}:[0-9]{2}/ {print $1, $2, $3, $5}' /var/log/syslog(按时间筛选错误日志)tail实时监控:
tail -f /var/log/auth.log(及时捕获正在进行的攻击)tail -f /var/log/kern.log(快速发现硬件或驱动问题)手动分析效率低,可通过工具自动化识别异常:
fail2ban:自动封禁恶意IP。安装后配置/etc/fail2ban/jail.local,启用SSH防护([sshd]部分),设置失败次数阈值(如maxretry = 3)和封禁时间(如bantime = 3600秒)。启动服务:sudo systemctl start fail2ban && sudo systemctl enable fail2ban。logwatch:生成每日安全报告。安装后配置/etc/logwatch/conf/services/auth.conf,开启“Failed logins”监控,设置邮件通知(MailTo = your@email.com),每天接收汇总报告。journalctl:深度查询系统日志。使用journalctl -u ssh --since "2025-10-25" --until "2025-10-26"(查看指定时间段内的SSH日志),或journalctl -k _COMM=kernel | grep -i "error"(筛选内核错误)。通过历史数据定义正常行为,快速识别偏离基线的活动:
grep "Accepted password" /var/log/auth.log | awk '{print $1, $2, $3}' | sort | uniq -c统计登录时间分布。whois查询IP归属地),如grep "Accepted password" /var/log/auth.log | awk '{print $11}' | sort | uniq列出所有登录IP,对比已知IP列表。awk '/sudo/ {print $1, $2, $3, $9}' /var/log/auth.log | sort | uniq -c | sort -nr统计。对于企业环境,使用SIEM(安全信息和事件管理)系统整合日志,实现实时分析与响应:
/var/log/auth.log、/var/log/syslog等日志,发送至Elasticsearch存储。/etc/graylog/server/server.conf,添加Ubuntu服务器为日志源,创建“恶意登录”警报规则(匹配Failed password关键词)。