
基于 Apache/Nginx 访问日志的入侵检测Anthropic-Cybersecurity-Skills 技能实战指南【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills导读本文以 analyzing-web-server-logs-for-intrusion 技能为主线讲解如何解析 Apache/Nginx 访问日志通过正则签名匹配识别 SQL 注入SQLi、本地文件包含LFI、目录穿越、XSS、Web 扫描器指纹与暴力破解模式并结合 GeoIP 做来源归属富化、基于请求频率与响应大小的统计异常检测。读完本文你将掌握一套可直接运行的日志入侵检测流程能独立产出带攻击类型、严重级别与攻击者画像的 JSON 报告并可将其落地为 SOC 的检测规则或威胁狩猎查询。技能定位与适用场景在 Anthropic-Cybersecurity-Skills 仓库的 817 个结构化安全技能中该技能归属于security-operations子域遵循 agentskills.io 开放标准以机器可读的 frontmatter 元数据name、description、domain、tags、version描述触发条件与能力边界便于 Claude Code、GitHub Copilot、Codex CLI、Cursor、Gemini CLI 等 20 平台上的 AI Agent 按需加载。官方标注的适用场景包括调查安全事件时需要分析 Web 服务器日志定位入侵行为为入侵检测域构建检测规则或威胁狩猎查询SOC 分析人员需要结构化的分析流程校验相关攻击技术在既有监控体系中的覆盖度。该技能同时映射了多套安全框架见 SKILL.md frontmatterMITRE ATTCKT1190利用面向公众的应用、T1059.007JavaScript 命令解释执行、T1110暴力破解、T1595.002主动扫描、T1505.003Web ShellNIST CSF 2.0DE.CM-01持续监控、DE.AE-02异常活动分析、RS.MA-01事件响应管理、GV.OV-01资产与漏洞视图。这意味着该技能在仓库的跨框架能力矩阵中覆盖的是初始访问 → 暴力破解 → 主动侦察 → Web 后门驻留这一条 Web 攻击链路的日志侧检测视角。前置条件具备安全运营SecOps概念与常用工具的使用经验拥有可安全执行分析的测试或实验环境并已获得相应授权任何测试活动都必须取得明确授权详见 SECURITY.mdPython 3.8 环境安装依赖pip install geoip2 user-agents。其中geoip2用于日志来源 IP 的地理位置富化user-agents库可用于辅助解析与规整 User-Agent 字段。日志格式基础Combined Log Format 与 Nginx 默认格式分析的第一步是理解输入数据的结构。本技能处理 Apache 的 Combined Log Format组合日志格式与 Nginx 默认访问日志格式。其字段布局见 references/api-reference.mdip ident authuser [date] method uri proto status size referer user-agent各字段含义字段含义示例ip客户端源 IP192.168.1.100ident客户端标识通常为--authuser认证用户名通常为--date请求时间戳15/Jan/2024:10:30:45 0000methodHTTP 方法GET、POSTuri请求的资源路径与参数/products?id1 UNION SELECT ...proto协议版本HTTP/1.1statusHTTP 状态码200、403、500size响应体字节数可能为-4532referer来源页面-或 URLuser-agent客户端标识串Nikto/2.1.6注意Nginx 默认格式与 Combined Log Format 高度兼容因此同一套解析正则可以直接复用。若日志中响应大小为-如无响应体解析时应将其归一化为0源码parse_log_line中即做了该处理见 scripts/agent.py。日志解析正则提取结构化字段使用 Python 标准库re模块即可完成字段提取。api-reference 与 agent.py 中共用的核心正则如下import re pattern re.compile( r(?Pip\S) \S \S \[(?Ptime[^\]])\] r(?Pmethod\S) (?Puri\S) (?Pproto[^]*) r(?Pstatus\d) (?Psize\S) (?Preferer[^]*) (?Pua[^]*) ) match pattern.match(line) data match.groupdict()该正则通过命名捕获组(?Pname...)一次性提取 9 个字段。从源码实现看parse_log_line 在拿到字典后还会做两项类型归一化size字段若为-转为整数0status字段转为整数。这为后续的统计与阈值比较如按状态码过滤、按响应大小做离群检测提供了统一的数据类型。parse_log_file 会逐行读取日志文件忽略解析失败的畸形行并输出Parsed N log entries from path的进度日志便于在大文件上观察处理进度。攻击检测规则四类签名匹配1. SQL 注入SQLi——严重级 Criticaldetect_attacks会对每条请求的 URI 依次执行各类签名正则匹配。SQLi 签名覆盖了从基础到进阶的多种手法SQLI_PATTERNS正则模式检测描述(union\s(all\s)?select)UNION SELECT 注入(or\s1\s*\s*1)OR 11 恒真永真(\s*or\s*)基于字符串的 OR 注入(;\s*drop\stable)DROP TABLE 注入(sleep\s*\(\d\))基于时间的盲注SLEEP(benchmark\s*\(\d)基于时间的盲注BENCHMARK(0x[0-9a-f]{8,})十六进制编码载荷(concat\s*\(|group_concat)数据提取函数(information_schema)库结构枚举(load_file\s*\(|into\soutfile)通过 SQL 读写文件示例命中日志192.168.1.100 - - [15/Jan/2024:10:30:45 0000] GET /products?id1 UNION SELECT username,password FROM users-- HTTP/1.1 200 4532该请求 URI 中同时包含UNION SELECT命中第 1 条与引号构造命中第 3 条的变体会被标记为 critical 级别。所有模式均带(?i)忽略大小写标志以避免攻击者大小写混合绕过。2. 本地文件包含 / 目录穿越LFI——高危 High正则模式检测描述(\.\./){2,}目录穿越(/etc/passwd|/etc/shadow)Linux 口令文件访问(/proc/self|/proc/version)proc 文件系统访问(php://filter|php://input|data://)PHP 流包装器(c:\\windows|c:/windows)Windows 路径穿越(%00|%2500)空字节注入3. XSS跨站脚本——高危 High正则模式检测描述(script[^]*)Script 标签注入(javascript\s*:)JavaScript URI(onerror\s*|onload\s*|onmouseover\s*)事件处理器注入(alert\s*\(|prompt\s*\(|confirm\s*\())JS 对话框函数4. 扫描器指纹User-Agent 签名——中危 MediumXSS 与扫描器签名均匹配 URL 编码与非编码形式其中扫描器检测针对 User-Agent 字段覆盖面远超 SKILL.md 正文列出的四种工具SCANNER_UA_PATTERNS工具UA 特征说明NiktoNikto/2.x综合漏洞扫描器sqlmapsqlmap/1.xSQL 注入自动化工具DirBusterDirBuster-1.0目录爆破工具Gobustergobuster/3.x目录/子域爆破工具WfuzzWfuzz/3.xWeb 模糊测试工具Nmapnmap端口扫描引擎Masscanmasscan高速端口扫描器ZGrabzgrab应用层扫描器脚本化客户端python-requests、python-urllib、go-http-client常见脚本化 HTTP 客户端api-reference 中的签名表references/api-reference.md与源码逐一对应示例命中Nikto/2.1.6, sqlmap/1.7, DirBuster-1.0-RC1, gobuster/3.1.05. 暴力破解检测——高危 High暴力破解不依赖正则而是统计维度。detect_brute_force 的实现逻辑默认监控的登录端点/login、/wp-login、/admin/login、/api/auth、/signin统计同一 IP 对这些端点发起的POST 请求总数阈值默认50可通过 CLI 参数覆盖命中后记录{ip: ..., post_count: ..., severity: high}。SKILL.md 给出的判定标准是同一 IP 在 5 分钟内对登录端点的 POST 请求超过 50 次对应源码中的threshold50默认值。需要说明的是源码默认以整个日志时间窗内统计若要与5 分钟窗口精确对齐可在接入 SIEM/Splunk 时增加时间窗口切片逻辑或对输入日志先做时间段过滤。GeoIP 来源归属富化命中攻击特征的请求会按源 IP 进行地理位置富化。enrich_with_geoip 使用geoip2库读取 MaxMind GeoLite2-City 数据库import geoip2.database reader geoip2.database.Reader(GeoLite2-City.mmdb) response reader.city(8.8.8.8) response.country.name # United States response.city.name # Mountain View response.location.latitude # 37.386 response.location.longitude # -122.0838 reader.close()每条命中记录会附加geo字段国家、城市、经纬度。源码中做了两级容错若geoip2未安装则跳过富化并输出警告日志若单个 IP 查询失败则置geo: null不会中断整个分析流程。攻击者画像聚合summarize_attackers 将全部命中记录按源 IP 聚合输出按命中数降序排列的前 50 个攻击者每个画像包含total_hits该 IP 命中的总请求数attack_types该 IP 使用的攻击类型分布如{SQLi: 5, Scanner: 3}unique_uris访问过的去重 URI 数量。这一输出可直接用于研判攻击者的行为阶段——例如某 IP 同时存在扫描器 UA 与 SQLi 载荷可推断其处于侦察 漏洞利用的复合阶段。运行与分析CLI 使用与报告结构运行方式在技能目录下执行SKILL.md 中的标准用法python scripts/agent.py --log-file /var/log/nginx/access.log --geoip-db GeoLite2-City.mmdb --output web_intrusion_report.json完整 CLI 参数见 main参数必填默认值说明--log-file是—访问日志文件路径--geoip-db否—GeoLite2-City.mmdb 路径提供后启用 GeoIP 富化--brute-threshold否50暴力破解 POST 次数阈值--output否web_intrusion_report.json报告输出路径报告结构generate_report 生成的 JSON 报告包含total_log_entries解析的日志总条数suspicious_requests命中攻击签名的请求数brute_force_sources暴力破解来源 IP 数attack_breakdown攻击类型分布计数top_attackers前 20 名攻击者画像brute_force_details暴力破解明细sample_findings前 30 条命中样例每条含 IP、时间戳、方法、URI 截断 200 字符、状态码、UA 截断 150 字符与攻击详情列表。运行结束会在终端打印汇总行WEB LOG ANALYSIS: N suspicious, M brute force sources并将报告写入--output指定文件。URI 与 UA 的截断处理200/150 字符防止异常超长字段破坏 JSON 结构与下游存储。完整处理链路与源码结构整个技能的处理流程可概括为五步流水线与 SKILL.md 的 Instructions 一一对应依赖安装pip install geoip2 user-agents日志采集收集 Combined Log FormatApache或 Nginx 默认格式访问日志逐条解析提取 IP、时间戳、方法、URI、状态码、响应大小、User-Agent、Refererparse_log_file规则检测SQLi / LFI / XSS / 扫描器签名 / 暴力破解阈值detect_attacks 与 detect_brute_forceGeoIP 富化 优先级排序报告enrich_with_geoip 与 generate_report。技能文件布局清晰主流程定义在 SKILL.md日志格式、正则解析、GeoIP2 用法与攻击签名速查表在 references/api-reference.md完整可执行实现约 220 行零第三方运行时依赖、geoip2为可选增强在 scripts/agent.py授权条款见同目录 LICENSEApache-2.0。落地为检测规则与威胁狩猎查询除直接运行脚本外该技能的签名与阈值设计可直接转化为 SIEM 检测逻辑SQLi 检测规则将 SQLI_PATTERNS 中的核心模式UNION SELECT、OR 11、SLEEP()转为 Splunk/Sigma 查询对uri字段做大小写不敏感匹配可参考仓库中 building-detection-rule-with-splunk-spl 与 building-detection-rules-with-sigma 的规则构建方法暴力破解告警按clientip uri维度统计 5 分钟窗口内 POST 到登录端点的计数阈值 50对应 ATTCK T1110暴力破解的检测覆盖扫描器识别对 User-Agent 匹配 nikto、sqlmap、dirbuster、gobuster、wfuzz 等签名对应 T1595.002主动扫描Web Shell 驻留结合命中记录中的可疑 POST 上传 URI 与高响应状态码关联 T1505.003 的猎杀视角可与 hunting-for-webshell-activity 组合使用。局限性与注意事项误报管理正则签名可能命中合法业务参数如商品名含SELECT、正文讨论 SQL 的页面建议结合响应状态码如 200 且 5xx 比例、请求频率与攻击者画像综合研判降低误报编码绕过仅覆盖十六进制编码0x...与空字节%00/%2500URL 双层编码、Unicode 变体等绕过手段不在本技能覆盖范围可结合 performing-web-application-firewall-bypass 补足对抗视角数据可用性若日志未开启 Referer/User-Agent 记录如 Nginx 默认格式有时省略 referer解析器仍能工作但扫描器与 Referer 相关检测会受限授权前提该技能属于安全运营检测能力仅限在拥有明确授权的环境中使用。小结通过本文你可以完整掌握一条日志采集 → 正则解析 → 四类攻击签名检测 → 暴力破解统计 → GeoIP 富化 → 攻击者画像聚合 → JSON 报告输出的 Web 入侵检测流水线。无论是将 scripts/agent.py 直接跑在 Nginx/Apache 日志上快速定位可疑请求还是把其中的签名表与阈值抽取为 SIEM 检测规则都能基于仓库源码与 API 参考文档直接落地为 SOC 的持续监控NIST CSF DE.CM-01与异常分析DE.AE-02提供可复用的结构化能力。【免费下载链接】Anthropic-Cybersecurity-Skills817 structured cybersecurity skills for AI agents · Mapped to 6 frameworks: MITRE ATTCK, NIST CSF 2.0, MITRE ATLAS, D3FEND, NIST AI RMF MITRE F3 (Fight Fraud) · agentskills.io standard · Works with Claude Code, GitHub Copilot, Codex CLI, Cursor, Gemini CLI 20 platforms · 29 security domains · Apache 2.0项目地址: https://gitcode.com/GitHub_Trending/an/Anthropic-Cybersecurity-Skills创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考