在Linux环境下,网站被攻击的迹象可能隐藏在日志、网络流量或系统进程中,通过系统化的排查方法可有效发现攻击行为,常见的攻击类型包括DDoS(分布式拒绝服务)、SQL注入、XSS跨站脚本、暴力破解、Webshell上传等,不同攻击类型需通过不同工具和日志进行分析,以下从日志分析、网络监控、安全工具、实时系统监控及WAF日志五个维度,详细介绍如何在Linux中查看网站被攻击的情况。
系统日志分析:发现异常登录与操作痕迹
Linux系统日志记录了用户登录、命令执行、系统服务等关键信息,是排查攻击的基础。
系统认证日志
-
文件位置:
- Ubuntu/Debian:
/var/log/auth.log
- CentOS/RHEL:
/var/log/secure
- Ubuntu/Debian:
-
查看方法:
通过grep
过滤登录失败、异常IP或非法命令,# 查看登录失败的IP和次数(统计前10个高频IP) grep "Failed password" /var/log/auth.log | awk '{print $(NF-3)}' | sort | uniq -c | sort -nr | head -10 # 查看非登录时间段的SSH连接(如凌晨3点后) grep "sshd.*Accepted" /var/log/auth.log | awk -F: '{print $2}' | awk '{print $2}' | sort | uniq -c | awk '$1>5{print}'
若出现大量“Failed password”或来自陌生IP的“Accepted publickey”,可能存在暴力破解。
Web服务器日志
Web服务器日志(如Nginx的access.log
、Apache的access_log
)记录了所有HTTP请求,是发现SQL注入、XSS等攻击的核心。
-
Nginx日志分析:
# 过滤包含SQL注入特征的请求(如union、select、information_schema) grep -i "union.*select|select.*information_schema|or.*1.*=" /var/log/nginx/access.log # 统计访问频率最高的URL(发现异常路径扫描) awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -nr | head -20
若日志中出现大量
/admin.php
、/wp-config.php
等敏感路径的扫描请求,或请求参数包含<script>
、UNION SELECT
等恶意代码,可能存在Web攻击。
系统操作日志
- 文件位置:
/var/log/messages
(系统日志)、/var/log/secure
(安全日志) - 关键操作:检查是否有异常用户创建(如
useradd
)、sudo权限滥用(sudo
命令记录)或敏感文件修改(如/etc/passwd
)。
表:Linux常见日志文件及作用
| 日志文件 | 作用 | 常见攻击痕迹 |
|——————|——————————-|—————————–|
| /var/log/auth.log | 记录用户登录认证(SSH、FTP等) | 暴力破解登录失败、异常IP登录 |
| /var/log/nginx/access.log | Nginx访问日志 | SQL注入、XSS、路径扫描请求 |
| /var/log/audit/audit.log | 审计日志(需开启auditd) | 文件篡改、权限提升、系统调用异常 |
网络流量监控:识别异常连接与DDoS攻击
攻击常伴随异常网络流量,可通过工具实时监控网络连接和数据包。
实时连接状态查看
-
使用
netstat
或ss
命令:# 查看当前所有TCP连接(按连接数排序,发现异常IP) ss -tulnp | grep ESTABLISHED | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -nr | head -10 # 检查是否有异常端口监听(如非Web端口80/443开放了8080) netstat -tulnp | grep ":8080" | grep -v "nginx|apache"
若出现大量来自同一IP的ESTABLISHED连接,或非业务端口被未知进程监听,可能存在DDoS或后门连接。
抓包分析异常流量
-
使用
tcpdump
:# 抓取80端口的HTTP请求,过滤GET/POST方法(发现CC攻击) tcpdump -i eth0 -nn port 80 -c 1000 | grep -i "GET|POST" | awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -nr # 抓取异常数据包(如SYN Flood攻击特征) tcpdump -i eth0 -nn 'tcp[tcpflags] & (tcp-syn|tcp-rst|tcp-ack) != tcp-ack' -c 100
若短时间内出现大量HTTP请求(如每秒上千次)或SYN包(未完成三次握手),可能存在DDoS/CC攻击。
带宽与进程流量监控
-
iftop
/nethogs
:# 安装iftop(Ubuntu: apt install iftop; CentOS: yum install iftop) iftop -i eth0 -nNP # 按IP查看实时带宽占用,发现异常流量IP # nethogs按进程查看网络占用(发现挖矿程序或后门进程) nethogs -t -c 5
安全工具应用:自动化检测与入侵响应
手动分析日志效率低,结合安全工具可提升检测精度。
Fail2ban:自动封禁恶意IP
基于日志分析自动封禁IP,适用于暴力破解、CC攻击等场景。
- 配置示例(封禁SSH暴力破解):
# /etc/fail2ban/jail.local [sshd] enabled = true port = 22 filter = sshd logpath = /var/log/auth.log maxretry = 3 bantime = 3600 # 封禁1小时
执行
fail2ban-client status sshd
可查看封禁IP列表。
OSSEC:入侵检测与系统审计
开源主机入侵检测系统(HIDS),监控文件变更、登录异常、rootkit等。
- 功能:
- 实时检测
/var/www
目录文件变更(如Webshell上传); - 告警异地登录或特权命令执行(如
sudo su -
)。
- 实时检测
ELK Stack:日志集中分析
大型网站可通过Elasticsearch、Logstash、Kibana搭建日志分析平台,可视化攻击趋势:
- Logstash:收集Nginx、系统日志至Elasticsearch;
- Kibana:创建仪表盘,展示“TOP攻击IP”“恶意请求类型”等维度。
表:常用安全监控工具对比
| 工具名称 | 功能 | 适用场景 |
|————|——————————-|————————-|
| Fail2ban | 基于日志自动封禁IP | 暴力破解、CC攻击 |
| OSSEC | 主机入侵检测(文件/进程/日志) | Webshell、权限提升、rootkit |
| ELK Stack | 日志集中分析与可视化 | 大型网站攻击趋势分析 |
实时系统监控:发现异常进程与资源占用
攻击者可能植入挖矿程序、后门进程,消耗系统资源或留下后门。
进程与资源监控
top
/htop
:按CPU/内存排序,发现异常进程(如命名为“python”“bash”但占用高资源);ps aux
:查看进程详情,过滤可疑命令(如/bin/bash -i
反向shell、xmrig
挖矿程序)。
定时任务与自启项检查
攻击者常通过crontab
、/etc/rc.local
植入自启脚本:
# 查看当前用户crontab crontab -l # 检查系统级定时任务(如/etc/cron.hourly/下的异常脚本) ls -la /etc/cron.hourly/ /etc/cron.daily/ | grep -v ".*.log$|.*.sh$" # 查看开机自启(systemctl) systemctl list-unit-files --state=enabled | grep -v "nginx|ssh|network"
Web应用防火墙(WAF)日志分析
若网站部署WAF(如ModSecurity、Naxsi),其日志可直接记录攻击详情。
- ModSecurity日志(默认路径:
/var/log/modsec_audit.log
):# 过滤SQL注入规则匹配日志(如ModSecurity规则ID:981173) grep "981173" /var/log/modsec_audit.log | awk -F'"' '{print $8}' | cut -d? -f1 | sort | uniq -c
日志中会包含攻击IP、请求URL、攻击载荷(如
' OR 1=1--
),可直接用于溯源和封禁。
Linux环境下查看网站被攻击需结合“日志分析-网络监控-安全工具-系统检查”多维度排查:优先查看auth.log
、nginx/access.log
等基础日志,通过tcpdump
、iftop
分析流量异常,借助Fail2ban、OSSEC自动化检测,最后检查进程和自启项,定期备份日志、开启审计(如auditd
)、部署WAF,可提升攻击发现效率,降低损失。
相关问答FAQs
Q1:如何区分正常访问流量和恶意攻击流量?
A:可通过以下特征区分:① 请求频率:正常用户访问间隔分散,攻击者(如DDoS)会在短时间内发起大量高频请求(如每秒>100次);② 请求路径:正常用户访问业务页面(如/home
、/product
),攻击者常扫描敏感路径(/admin
、/wp-config.php
、.env
);③ 请求参数:正常参数格式规范,攻击参数包含恶意代码(如<script>alert(1)</script>
、UNION SELECT
、目录穿越);④ IP分布:正常访问来自多地区、多IP,攻击可能来自单一IP或代理池(如Tor出口节点)。
Q2:网站被攻击后如何快速定位攻击源IP?
A:定位攻击源IP需结合日志和流量分析:① Web服务器日志:通过awk
提取高频访问IP(awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -nr
),重点排查访问量异常的IP;② WAF/防火墙日志:若部署WAF(如ModSecurity),日志中会直接标记攻击IP及攻击类型;③ 流量抓包:用tcpdump
抓取异常数据包(如SYN Flood),通过Wireshark
分析源IP;④ Fail2ban封禁记录:执行fail2ban-client status [jail名]
查看已封禁IP,定位后可通过whois
查询IP归属(如阿里云IP库、APNIC),若为恶意IP,可在防火墙(如iptables)中添加封禁规则:iptables -I INPUT -s [攻击IP] -j DROP
。
原创文章,发布者:酷番叔,转转请注明出处:https://cloud.kd.cn/ask/31837.html