Linux - 安全排查 2

文章目录

安全日志详解

以下的大部分内容都会用到 安全日志(如Web服务器访问日志) 中的特定字段,推断攻击者的行为特征,所以先详细讲解日志的详细知识以便理解

这里以Apache日志为例

Apache 日志:全面解析安全运维的"黑匣子"

Apache 日志是Web服务器运行的完整记录,相当于服务器的"飞行数据记录器"。它详细记录了所有客户端请求、服务器响应及交互细节,是安全分析、性能优化和故障排查的核心依据

Apache 日志的核心作用
安全监控故障排查流量分析性能优化

可用于检测恶意扫描,暴力破解,注入攻击,服务中断,设备类型,识别慢请求等等

Apache日志类型详解

  1. 访问日志 (Access Log)
    文件路径: /var/log/httpd/access_log (CentOS)
    记录内容: 所有成功处理的客户端请求
    安全价值:

    检测扫描行为(高频404)

    识别暴力破解(密集POST /login)

    追踪数据泄露(异常大响应)

  2. 错误日志(Error Log)
    文件路径: /var/log/httpd/error_log
    记录内容: 服务器运行错误和警告
    关键信息:

    PHP致命错误(暴露路径信息)

    文件权限问题(Permission denied)

    模块加载失败

    拒绝连接攻击(Connection reset by peer)

  3. SSL/TLS 日志 (当启用HTTPS)
    文件路径: /var/log/httpd/ssl_access_log
    特有字段:

    加密套件(ECDHE-RSA-AES256-GCM-SHA384)

    客户端证书信息

    TLS协议版本(TLSv1.3)

Apache 日志字段详解 (CentOS 7 默认格式扩展版)

  1. 字段一:客户端IP地址 (Remote Host)
    作用: 记录发起请求的客户端 ip 地址
    示例: 192.168.1.1
  2. 字段二:远程逻辑用户名 (Remote Logname)
    作用: 记录客户端标识(RFC 1413标准)
    示例: - (几乎总是连字符)
    说明: 该字段已废弃,99%情况显示为 - (现代系统默认禁用ident服务)
  3. 字段三:认证用户名 (Remote User)
    作用: HTTP基础认证的用户名
    示例:
    -(未认证)
    admin(认证用户)
  4. 字段四:请求时间戳 (Time)
    格式: 日/月/年:时:分:秒 时区
    示例: 26/Jun/2025:15:32:45 +0800
  5. 字段五:请求行 (Request Line)
    格式: "请求方法 URI 协议版本"
    示例: "GET /wp-admin HTTP/1.1"
  6. 字段六:最终状态码 (Status Code)
    作用: 服务器返回的HTTP状态码
    常见值:
    200:成功
    301/302:重定向
    404:未找到
    403:禁止访问
    500:服务器错误
  7. 字段七:响应大小 (Bytes Sent)
    作用: 返回给客户端的字节数(不含响应头)
    示例:
    1234:返回1234字节
    -:空响应(如304)
  8. 字段八:来源页面 (Referer Header)
    作用: 记录请求来源的URL
    示例:"https://www.shodan.io/host/1.2.3.4"
  9. 字段九:用户代理 (User-Agent Header)
    作用: 客户端浏览器/工具标识
    结构解析:
    Mozilla/5.0 (操作系统; 平台信息) 引擎/版本 应用/版本

查询攻击者使用的操作系统

原理:

利用安全日志查找攻击者使用的操作系统

详细步骤(注:此日志文件是我自定义的,请以实际为准)

  1. 优先找到攻击者的 IP
bash 复制代码
awk '{print $1}' /var/log/httpd/access_log | sort |uniq -c | sort -nr

工作原理
查找攻击者IP详情

  1. 过滤 ip 查询日志
bash 复制代码
grep '192.168.42.205' /var/log/httpd/access_log | head -n 10

工作原理

  1. grep '192.168.42.205' /var/log/httpd/access_log
    grep 直接在文件 /var/log/httpd/access_log 中搜索包含字符串192.168.42.205的行(即该IP的访问记录)

  输出所有匹配的项

  1. | head -n 10
    通过管道 |grep 的输出传递给 head 命令

  head -n 10 截取前10行结果并显示

grep命令详解

由此可以得出攻击者操作系统为:X11; Linux x86_64; rv:68.0

注:因为User-Agent 可以被伪造,不能直接作为攻击者操作系统的证据,只能作为间接参考,可以结合结合TCP指纹TTL值等网络层分析加以佐证,因为此篇涉及不到,以后有机会再讲


查找攻击者所使用的资产收集平台

核心思路

攻击者常使用自动化平台扫描互联网资产,这些平台会在服务器日志中留下特征痕迹(如 User-AgentReferer 字段)

注:
User-Agent 是 HTTP 请求头的一部分,用于标识发起请求的客户端软件信息
Referer 表示当前请求是从哪个网页链接过来的

也就是日志详解中的字段八字段九

常见的资产收集平台
ShodanZoomEyeCensysFofaIVRE

常见资产收集平台特征

  1. Shodan

    User-Agent 特征:ShodanShodan/1.0

    Referer 特征:http://shodan.io

  2. ZoomEye

    User-Agent 特征:ZoomeyeBotZoomeye

    Referer 特征:https://www.zoomeye.org

  3. Censys

    User-Agent 特征:CensysInspectCensys

    Referer 特征:https://search.censys.io

  4. Fofa

    User-Agent 特征:FOFAfofa.pro

    Referer 特征:https://fofa.info

  5. IVRE

    User-Agent 特征:IVRENmap Scripting Engine

    Referer 特征:通常无(IVRE基于 Namp/Zmap)

查寻命令
方法一:

适用于知道资产收集平台

bash 复制代码
grep '资产收集平台' 日志文件

例如:

bash 复制代码
grep 'shodan' /var/log/httpd/access_log

也可以直接查找所有平台

bash 复制代码
grep -i -E 'shodan|zoomeye|censys|fofa|ivre' /var/log/httpd/access_log

参数说明

  • -i :忽略大小写(匹配ShodanSHODAN
  • -E :启用正则表达式( | 表示逻辑或)

方法二:

如果不知道资产收集平台可以使用

过滤 ip 查询日志命令:

bash 复制代码
grep '192.168.42.205' /var/log/httpd/access_log | head -n 10

查找攻击者所使用的目录扫描工具

查找目录扫描工具 与前两个相比比较难以理解,所以我就以更加通俗易懂的方式讲解

核心思路

攻击者使用工具扫描网站目录时,会在日志中留下独特的指纹,就像不同的人会留下不同的脚印。我们通过分析这些"脚印"来推断使用了什么工具

理解核心原理(为什么能检测?)

每种扫描工具都有"身份证特征":

  1. User-Agent :相当于"工具名片"

    Dirb:dirb/v2.22

    FFuf:Fuzz Faster U Fool

  2. 扫描模式:相当于"作案手法"

扫描模式 Dirb
按字典顺序扫描 FFuf
超高频率爆破 Gobuster
专找敏感文件

  1. 特殊标记: 相当于"作案签名"
    FFuf/WFuzz:在URL中使用FUZZ 占位符
    Dirsearch:可能添加X-Scanner: Dirsearch头部

通过 User-Agent扫描模式特殊标记 来判断使用的是什么目录扫描工具

常见的目录扫描工具有:
dirsearchdirbffufgobusterwfuzz

工具指纹特征详解

指纹在网络安全中特指能够唯一标识特定工具、软件或攻击行为的特征组合

  1. dirsearch
    指纹特征:
     默认User-Agent:python-requests/2.x.x
     路径爆破格式:/FUZZ 或自定义占位符
     独特Header:部分版本带 X-Scanner: Dirsearch
     请求规律:固定线程数+随机延迟(可通过 -t -delay 参数修改)
    日志示例:
log 复制代码
GET /admin/ HTTP/1.1" 404 153 "-" "python-requests/2.26.0"
  1. dirb
    指纹特征:
     默认User-Agent:dirb/v2.x (http://dirb.sourceforge.net)
     扫描路径:优先尝试 /robots.txt/index.html
     请求特征:顺序遍历字典,无随机延迟
    日志示例:
log 复制代码
GET /wp-login.php HTTP/1.1" 200 512 "-" "dirb/v2.22 (http://dirb.sourceforge.net)"
  1. FFuf (原fluf)
    指纹特征:
     默认User-Agent:Fuzz Faster U Fool v1.x
     占位符标识:URL中必含 FUZZ (如 https://site.com/FUZZ )
     高频并发:默认150线程,突发大量请求
    日志示例:
log 复制代码
GET /backup.zip HTTP/1.1" 200 10240 "-" "Fuzz Faster U Fool v1.3.1"
  1. Gobuster
    指纹特征:
     User-Agent:gobuster/v3.x
     模式标识:-m 参数决定扫描模式(dir /dns /vhost
     路径格式:/ +字典项(如 /admin
    日志示例:
log 复制代码
GET /.git/HEAD HTTP/1.1" 200 23 "-" "gobuster/v3.5"
  1. WFuzz
    指纹特征:
     User-Agent:Wfuzz/2.x
     请求头标识:Host: FUZZ.target.com (域名爆破模式)
     参数占位:?param=FUZZPOST 数据爆破
    日志示例:
log 复制代码
POST /login.php HTTP/1.1" 302 0 "username=FUZZ&password=test"

查询命令 (注:此日志文件是我自定义的,请以实际为准)

方法一:搜索所有工具的特征UA

bash 复制代码
grep -E 'dirb|gobuster|Wfuzz|python-requests|"Fuzz Faster U Fool"' access.log | head -n 20

#命令解析
# grep                 文本搜索工具
# -E                   使用正则表达式
# 'dirb|gobuster...'   工具的特征UA
# access.log           要搜索的文件
# head -n 20           指定显示行数(可选)

方法二:查看日志前20行

bash 复制代码
head -20 access.log

方法三:检查特殊占位符 "FUZZ"

bash 复制代码
grep "FUZZ" access.log
相关推荐
大树888 小时前
金刚石散热越强,管路越先见顶
大数据·运维·服务器·人工智能·ai
摇滚侠8 小时前
Linux CentOS7 rpm 安装 MySQL 5.7
linux·运维·mysql
霸道流氓气质8 小时前
领域驱动设计(DDD)在 Spring Boot 微服务中的实践指南
运维·spring boot·微服务
bush48 小时前
嵌入式linux学习记录十四、术语
linux·嵌入式
载数而行5208 小时前
Linux 11 动态监控指令top
linux
DaLi Yao9 小时前
【无标题】
人工智能·安全
Inhand陈工9 小时前
基于台达PLC与映翰通IG502的智慧水产养殖精准投喂与远程运维解决方案
运维·人工智能·物联网·阿里云·信息与通信
Alsn869 小时前
等待学习-学习目录:Docker 容器安全攻防
学习·安全·docker
网络研究院9 小时前
2026年网络安全
网络·安全·法律·法规·趋势·发展
酣大智10 小时前
ARP代理--工作原理
运维·网络·arp·arp代理