前言
发生攻击行为以后,处理完应急事件后,第二时间就是追踪溯源,找到事件负责人,承担人。
1. 日志分析
- 统计IP访问地址,HTTP状态码
- 过滤关键字 如:
script、select、from、echo、bash、.sh等 - 异常请求
4xx请求,5xx请求
web常见的日志目录
名字一般以时间戳命名打包
- apache的日志路径一般配置在httpd.conf的目录下或者位于/var/log/http
- IIS的日志默认在系统目录下的Logfiles下的目录当中
- tomcat 一般位于tomcat安装目录下的一个logs文件夹下面
- Nginx日志一般配置在nginx.conf或者vhost的conf文件中
系统常见的日志目录
- /var/log/auth.log 包含系统授权信息,包括用户登录和使用的权限机制等信息
- /var/log/lastlog 记录登录的用户,可以使用命令lastlog查看
- /var/log/secure 记录大多数应用输入的账号与密码,登录成功与否
日志一般信息量巨大,根据自己的环境索引相关的有效的 信息 - /var/log/cron 记录crontab命令是否被正确的执行
关注Accepted、Failed password 、invalid特殊关键字

4xx请求错误状态码
这些状态码表示请求可能出错,妨碍了服务器的处理。
| 4xx状态码 | 详情 |
|---|---|
| 400(错误请求) | 服务器不理解请求的语法。 |
| 401(未授权) | 请求要求身份验证。对于登录后请求的网页,服务器可能返回此响应。 |
| 403(禁止) | 服务器拒绝请求。如果您在 Googlebot 尝试抓取您网站上的有效网页时看到此状态码(您可以在 Google 网站管理员工具诊断下的网络抓取页面上看到此信息),可能是您的服务器或主机拒绝了 Googlebot 访问。 |
| 404(未找到) | 服务器找不到请求的网页。例如,对于服务器上不存在的网页经常会返回此代码。如果您的网站上没有 robots.txt 文件,而您在 Google 网站管理员工具“诊断”标签的 robots.txt 页上看到此状态码,则这是正确的状态码。但是,如果您有 robots.txt 文件而又看到此状态码,则说明您的 robots.txt 文件可能命名错误或位于错误的位置(该文件应当位于顶级域,名为 robots.txt)。如果对于 Googlebot 抓取的网址看到此状态码(在”诊断”标签的 HTTP 错误页面上),则表示 Googlebot 跟随的可能是另一个页面的无效链接(是旧链接或输入有误的链接)。 |
| 405(方法禁用) | 禁用请求中指定的方法。 |
| 406(不接受) | 无法使用请求的内容特性响应请求的网页。 |
| 407(需要代理授权) | 此状态码与 <a href=answer.py?answer=35128>401(未授权)类似,但指定请求者应当授权使用代理。如果服务器返回此响应,还表示请求者应当使用代理。 |
| 408(请求超时) | 服务器等候请求时发生超时。 |
| 409(冲突) | 服务器在完成请求时发生冲突。服务器必须在响应中包含有关冲突的信息。服务器在响应与前一个请求相冲突的 PUT 请求时可能会返回此代码,以及两个请求的差异列表。 |
| 410(已删除) | 如果请求的资源已永久删除,服务器就会返回此响应。该代码与 404(未找到)代码类似,但在资源以前存在而现在不存在的情况下,有时会用来替代 404 代码。如果资源已永久移动,您应使用 301 指定资源的新位置。 |
| 411(需要有效长度) | 服务器不接受不含有效内容长度标头字段的请求。 |
| 412(未满足前提条件) | 服务器未满足请求者在请求中设置的其中一个前提条件。 |
| 413(请求实体过大) | 服务器无法处理请求,因为请求实体过大,超出服务器的处理能力。 |
| 414(请求的 URI 过长) | 请求的 URI(通常为网址)过长,服务器无法处理。 |
| 415(不支持的媒体类型) | 请求的格式不受请求页面的支持。 |
| 416(请求范围不符合要求) | 如果页面无法提供请求的范围,则服务器会返回此状态码。 |
| 417(未满足期望值) | 服务器未满足”期望”请求标头字段的要求。 |
5xx服务器错误状态码
这些状态码表示服务器在处理请求时发生内部错误。这些错误可能是服务器本身的错误,而不是请求出错。
| 5xx状态码 | 详情 |
|---|---|
| 500(服务器内部错误) | 服务器遇到错误,无法完成请求。 |
| 501(尚未实施) | 服务器不具备完成请求的功能。例如,服务器无法识别请求方法时可能会返回此代码。 |
| 502(错误网关) | 服务器作为网关或代理,从上游服务器收到无效响应。 |
| 503(服务不可用) | 服务器目前无法使用(由于超载或停机维护)。通常,这只是暂时状态。 |
| 504(网关超时) | 服务器作为网关或代理,但是没有及时从上游服务器收到请求。 |
| 505(HTTP 版本不受支持) | 服务器不支持请求中所用的 HTTP 协议版本。 |
4. 分析工具
Apache Logs Viwers
https://download.csdn.net/download/qq_38626043/14035027
web-log-parser
https://github.com/JeffXue/web-log-parser
5. 日志分析的一些技巧
定位有多少IP在爆破主机的root帐号:
grep "Failed password for root" /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
定位有哪些IP在爆破:
grep "Failed password" /var/log/secure|grep -E -o "(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)"|uniq -c
爆破用户名字典是什么?
grep "Failed password" /var/log/secure|perl -e 'while($_=<>){ /for(.*?) from/; print "$1\n";}'|uniq -c|sort -nr
登录成功的IP有哪些:
grep "Accepted " /var/log/secure | awk '{print $11}' | sort | uniq -c | sort -nr | more
登录成功的日期、用户名、IP:
grep "Accepted " /var/log/secure | awk '{print $1,$2,$3,$9,$11}'

版权声明:本文为qq_38626043原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。