CentOS Apache日志中常见的攻击迹象可分为访问日志异常、错误日志暴露及系统关联异常三类,具体如下:
访问日志(默认路径:/var/log/httpd/access_log)记录了所有客户端请求的详细信息,攻击者的恶意操作会留下明显的频率或模式异常:
/login.php、/wp-login.php)的密集POST请求,表现为同一IP地址在短时间内发起大量登录尝试(如每秒1次以上)。可通过grep "POST /login" /var/log/httpd/access_log | awk '{print $1}' | sort | uniq -c | sort -nr命令统计IP访问次数,快速识别可疑IP。/etc/passwd、/wp-admin、/phpmyadmin、.env配置文件),试图探测网站后台或配置信息。可通过grep -E "wp-admin|wp-login|/etc/passwd|\.env" /var/log/httpd/access_log命令筛选此类请求。sqlmap/1.7.12、nikto/2.1.6)或高频访问不存在的路径(如随机生成的URL)。可通过grep -i "sqlmap\|nikto" /var/log/httpd/access_log或grep " 404 " /var/log/httpd/access_log | awk '{print $7}' | sort | uniq -c | sort -nr(统计404错误的路径分布)识别。错误日志(默认路径:/var/log/httpd/error_log)记录了服务器处理请求时的失败信息,攻击者的漏洞利用尝试会在其中留下明确的技术特征:
UNION SELECT、' OR 1=1 --、sleep(5)),导致数据库返回语法错误。可通过grep -i "union.*select\|' or 1=1 --\|sleep(" /var/log/httpd/error_log命令查找此类异常。../、..\等相对路径访问系统文件(如/etc/passwd、/root/.ssh/id_rsa),导致文件路径解析错误。可通过grep -i "\.\./\|\.\.\\/" /var/log/httpd/error_log命令识别。php://input、data://等协议或尝试包含远程文件(如http://evil.com/shell.php),试图执行任意代码。可通过grep -i "php://input\|data://" /var/log/httpd/error_log命令筛选。攻击者的行为往往会引发系统层面的异常,需结合系统日志(如/var/log/secure)进一步验证:
/var/log/secure)中出现同一IP地址的大量Failed password记录(如每分钟超过5次),可能是攻击者在尝试SSH或FTP暴力破解,进而渗透到服务器内部。可通过grep "Failed password" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr命令统计。netstat -tulnp或ss -antp命令发现服务器与陌生IP地址建立大量TCP连接(如同一IP的连接数超过10个),或连接了高危端口(如22、3306、6379),可能是攻击者在建立反向隧道或窃取数据。/var/www/html)下的关键文件(如index.php、config.php)被修改(可通过find /var/www/html -type f -mtime -1查找1分钟内修改的文件),或新增可疑脚本(如.php、.jsp后缀的文件),可能是攻击者植入了Web Shell。可通过grep -r -E "system\(|eval\(|base64_decode" /var/www/html命令检查文件内容是否包含恶意代码。以上迹象需结合日志的时间线(如攻击发生的具体时段)、IP地址的地理位置(如境外IP的高频访问)及业务场景(如非业务高峰期的异常请求)综合分析,避免误判。发现可疑迹象后,应及时封锁恶意IP(通过iptables -A INPUT -s 可疑IP -j DROP)、备份日志(防止日志被篡改)并开展应急响应。