Debian Apache日志里的常见攻击迹象主要来自三方面,即访问日志异常、错误日志异常和系统关联异常,具体内容如下:
访问日志(默认路径:/var/log/apache2/access.log)会记录网站收到的全部请求,而攻击者实施恶意行为时,通常会在其中留下以下痕迹:
/login.php、/wp-login.php)的大量POST请求,同一IP在短时间内发起高频次失败登录。例如,通过grep "POST /login.php" /var/log/apache2/access.log | awk '{print $1}' | sort | uniq -c | sort -nr命令,可发现某IP尝试150次登录的记录。sqlmap、nikto、wget、curl)的请求,或频繁访问敏感路径(如WordPress后台/wp-admin、/wp-login.php、phpmyadmin)。例如,grep -i "sqlmap|nikto" /var/log/apache2/access.log可识别扫描工具的活动。UNION SELECT、' OR 1=1 --)、路径遍历字符(如../、/etc/passwd)或异常参数(如?id=1 AND 1=CONVERT(int,(SELECT table_name FROM information_schema.tables)))。这类请求可能试图利用Web漏洞获取敏感信息。404错误集中在某一路径)。例如,awk '{print $1}' /var/log/apache2/access.log | sort | uniq -c | sort -nr可统计IP访问次数,发现高频异常IP。错误日志(默认路径:/var/log/apache2/error.log)保存服务器处理请求期间出现的错误,攻击者尝试利用漏洞时,会在日志中暴露以下信息:
UNION SELECT、syntax error、mysql_fetch_array()失败),表明攻击者试图通过注入恶意SQL语句获取数据库信息。例如,grep -i "union|select.*from|syntax error" /var/log/apache2/error.log可定位此类攻击。../(试图访问上级目录)、/etc/passwd(试图读取系统敏感文件)、File does not exist(请求不存在的文件路径),或open_basedir restriction in effect(文件包含限制被绕过)。例如,grep -i "../|/etc/passwd" /var/log/apache2/error.log可发现路径遍历尝试。eval(、base64_decode(、system(),或Warning: include()、Warning: shell_exec()等函数调用,表明攻击者可能试图执行恶意脚本或命令。例如,grep -i "eval(|base64_decode(" /var/log/apache2/error.log可识别脚本注入尝试。Permission denied(Apache进程无权限访问文件/目录)、Access denied by mod_rewrite(重写规则拒绝访问),可能是攻击者试图访问未授权的资源。例如,grep "Permission denied" /var/log/apache2/error.log可发现权限问题。系统认证日志(默认路径:/var/log/auth.log)用于记录系统用户活动,涉及Apache的攻击可能导致以下异常:
Failed password记录(如同一IP在短时间内尝试多个用户名登录),或Accepted password记录(攻击者成功登录)。例如,grep "Failed password" /var/log/auth.log | awk '{print $11}' | sort | uniq -c | sort -nr可统计SSH失败登录次数。netstat -tulnp或ss -antp命令发现未知端口监听(如非标准端口)、对外连接到可疑IP(如C&C服务器),或ps aux发现异常进程(如sqlmap、wget下载恶意文件)。这类活动可能与Apache攻击后的后续渗透有关。为避免误报,应结合日志时间线、IP信誉(如黑名单查询)和业务场景,对以上迹象作出综合判断。确认异常后,可采用Fail2ban自动封禁IP,并通过更新Apache模块、调整权限等方式修复漏洞。