如何判断服务器被攻击

若服务器出现异常流量骤升、资源占用率飙升、大量异常连接请求、日志报错频繁、响应延迟或服务中断,则可能正遭受网络

核心判断依据及典型表现

(一)网络层异常特征

现象类型 具体表现 潜在风险
突发流量暴涨 入站/出站带宽长期接近上限(>90%),且无业务增长支撑 DDoS洪水攻击、CC攻击
异常流量来源 单一IP/IP段贡献超50%流量,或存在大量伪造源IP(Private/Reserved地址) IP伪造攻击、僵尸网络控制
协议占比失衡 HTTP/HTTPS占比异常降低,ICMP/UDP等非常用协议占比突增 PING泛洪、UDP反射放大攻击
连接状态异常 TCP半开连接(SYN_RECV)堆积,或大量FIN_WAIT/CLOSE_WAIT状态持久化 SYN Flood攻击、慢速攻击

(二)系统资源消耗异常

资源类型 异常指标 关联攻击类型 检测命令示例
CPU 单核/总体使用率持续>80%,伴随陌生进程运行 挖矿木马、病毒扩散 top, ps aux --sort=-%cpu
内存 RSS内存占用率>90%,SWAP交换区频繁触发 内存溢出攻击、蠕虫病毒 free -m, vmstat
磁盘IO %util接近100%,且非数据库/日志文件主导 扫描类攻击、数据擦除操作 iostat -x 1 3, df -h
网络收发包 rx/tx速率差异过大(如发送远大于接收) C&C回连、数据外传 ifconfig, nload

(三)日志文件关键线索

日志类别 危险特征 示例关键词
Web访问日志 短时间内同一页面被重复请求数百次,或访问不存在的高危路径(如/phpmyadmin) “404 Not Found”, “/wp-login.php”
系统认证日志 连续多次SSH登录失败后成功(Brute Force典型模式),或root账户异地登录 “Failed password”, “accepted password”
应用错误日志 SQL注入报错(如You have an error in your SQL syntax near…)、XSS尝试痕迹 “UNION SELECT”, ”
防火墙日志 高频阻断同一IP的规则匹配(如PORT SCAN),或放行异常协议(如Cobalt Strike默认端口) “DROP”, “ACCEPT”

专项检测技术手段

(一)实时流量分析

操作步骤

如何判断服务器被攻击

  1. 使用tcpdump -i eth0 -w attack.pcap捕获可疑时段流量
  2. 通过Wireshark过滤显示http.request.method == "GET"http.host包含异常域名的流量
  3. 统计各IP的请求频率:editcap attack.pcap new_file.pcap后导入Bro/Zeek进行分析

(二)进程快照比对

🔧 实施方法

# 首次快照(干净环境)
ps auxfww >> baseline.txt
# 疑似攻击时再次采集
ps auxfww >> suspect.txt
# 差异对比(忽略PID变化)
diff <(sort baseline.txt) <(sort suspect.txt) | grep -v '^PID'

重点关注新增的/dev/shm内存盘进程、计划任务(cronjob)及隐藏进程(ps -efl查看)

(三)文件完整性校验

🔍 关键操作

如何判断服务器被攻击

# 建立基线哈希库(需提前执行)
find /usr/bin /usr/sbin -type f -exec sha256sum {} ; > system_hashes.sha256
# 定期验证
sha256sum -c system_hashes.sha256 | grep -v OK

特别注意动态链接库(.so)、内核模块(/lib/modules/$(uname -r)/)的篡改

常见攻击场景对照表

攻击类型 主要特征 应急响应
DDoS/CC攻击 页面加载缓慢/超时,Nginx出现503错误 启用CDN加速,配置iptables限速规则
SQL注入 数据库报错含hex编码字符,Web日志出现长URL参数 立即备份数据库,启用WAF规则拦截
暴力破解 SSH/FTP登录失败日志密集,源IP跨多地区 修改默认端口,部署Fail2ban封禁策略
网站挂马 网页源代码出现不明