Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
psad — psad:使用iptables进行入侵检测和日志分析 | Kitploit
工具/GitHubGitHub/mrash/psad
漏洞分析IDS/IPS规避取证分析网络安全威胁情报入侵检测日志分析
GitHubmrash/psad

psad

psad:使用iptables进行入侵检测和日志分析

查看仓库
4277717年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
网站

psad - 基于 iptables 日志的入侵检测

简介

端口扫描攻击检测器 psad 是一个轻量级的系统守护进程,用 Perl 编写,旨在与 Linux iptables/ip6tables/firewalld 防火墙代码协同工作,检测可疑流量,如端口扫描和扫描、后门、僵尸网络命令与控制通信等。它提供了一组高度可配置的危险阈值(附带合理的默认值),详细的警报消息,包括源、目标、扫描端口范围、开始和结束时间、TCP 标志及对应的 nmap 选项、反向 DNS 信息、电子邮件和 syslog 警报、通过动态配置 iptables 规则集自动阻止恶意 IP 地址、被动操作系统指纹识别以及 DShield 报告。此外,psad 还集成了 Snort 入侵检测系统中包含的许多 TCP、UDP 和 ICMP 签名,用于检测高度可疑的各种后门程序扫描(如 EvilFTP、GirlFriend、SubSeven)、DDoS 工具(Mstream、Shaft)以及高级端口扫描(SYN、FIN、XMAS),这些扫描很容易通过 nmap 对机器进行利用。psad 还可以对通过 fwsnort 记录的 Snort 签名进行警报,fwsnort 利用 iptables 字符串匹配扩展来检测匹配应用层签名的流量。自 2.4.4 版本起,psad 还可以检测 Mirai 僵尸网络的 IoT 默认凭据扫描阶段。

完整的功能列表如下。

功能

  • 检测 TCP SYN、FIN、NULL 和 XMAS 扫描以及 UDP 扫描。
  • 支持分别由 iptables 和 ip6tables 生成的 IPv4 和 IPv6 日志。
  • 检测来自 Snort 入侵检测系统的许多签名规则。
  • 取证模式 iptables/ip6tables 日志文件分析(可用于从旧 iptables/ip6tables 日志文件中提取扫描信息的取证工具)。
  • 通过 TCP SYN 数据包进行被动操作系统指纹识别。支持两种不同的指纹识别策略:严格使用 iptables/ip6tables 日志消息的 p0f 重实现(需要 --log-tcp-options 命令行开关),以及基于 TOS 的策略。
  • 电子邮件警报,包含 TCP/UDP/ICMP 扫描特征、反向 DNS 和 whois 信息、Snort 规则匹配、远程操作系统猜测信息等。
  • 当与 fwsnort 以及 iptables 字符串匹配扩展结合使用时,psad 可以为应用层缓冲区溢出攻击、可疑应用命令以及其他可疑的第 7 层流量生成警报。
  • ICMP 类型和代码头部字段验证。
  • 可配置的扫描阈值和危险等级分配。
  • 解析 iptables 规则集以验证“默认丢弃”策略。
  • IP/网络危险等级自动分配(可用于忽略或自动提升某些网络的危险等级)。
  • DShield 警报。
  • 根据扫描危险等级,通过 iptables/ip6tables 和/或 tcpwrappers 自动阻止扫描 IP 地址。(此功能默认不启用。)
  • 解析 iptables/ip6tables 日志消息并生成 CSV 输出,可用作 AfterGlow 的输入。这允许可视化 iptables/ip6tables 日志。也支持 Gnuplot。
  • 状态模式,显示当前扫描信息的摘要,包括关联的数据包计数、iptables/ip6tables 链和危险等级。

可视化恶意流量

psad 提供与 gnuplot 和 afterglow 的集成,以生成恶意流量图。以下两个图来自 Honeynet Scan30 挑战中的 Nachi 蠕虫。第一张是由 afterglow 在 psad 分析 iptables 日志数据后生成的链接图:

nachi-worm-link-graph "Nachi 蠕虫链接图"

第二张显示来自 Scan30 iptables 数据中每小时 Nachi 蠕虫流量:

nachi-worm-hourly-graph "Nachi 蠕虫每小时流量图"

配置信息

关于 psad 引用的配置关键字的信息,可以在 psad(8) 手册页以及以下链接中找到:

http://www.cipherdyne.org/psad/docs/config.html

方法

psad 分析的所有信息都来自 iptables 日志消息。默认情况下,psad 读取 /var/log/messages 文件以获取新的 iptables 消息,并可选地将它们写入专用文件 (/var/log/psad/fwdata)。然后 psad 负责应用危险阈值和签名逻辑,以判断是否发生了端口扫描,发送适当的警报电子邮件,并(可选)阻止恶意 IP 地址。psad 包含一个信号处理程序,如果接收到 USR1 信号,psad 会将当前扫描哈希数据结构的内容转储到 /var/log/psad/scan_hash.$$,其中 "$$" 表示正在运行的 psad 守护进程的 PID。

注意:由于 psad 依赖 iptables 为未授权的数据包生成适当的日志消息,因此 psad 的效果取决于 iptables 规则集中包含的日志记录规则。因此,如果您的防火墙没有配置为记录数据包,那么 psad 将不会检测到端口扫描或任何其他内容。通常,设置防火墙的最佳方法是在规则集末尾使用默认的“丢弃并记录”规则,并在该规则之前包含仅允许应允许通过流量的规则。执行时,psad 守护进程将尝试确定是否存在此类默认拒绝规则,如果不存在,将警告用户。有关与 psad 兼容的防火墙规则集示例,请参阅 FW_EXAMPLE_RULES 文件。

此外,No Starch Press 出版的《Linux 防火墙:攻击检测与响应》一书中包含了对 psad 的广泛介绍,并且该书中的一个支持脚本与 psad 兼容。该脚本可在此处找到:

http://www.cipherdyne.org/LinuxFirewalls/ch01/

安装

根据 Linux 发行版的不同,psad 可能已经存在于默认的软件包仓库中。例如,在 Debian 或 Ubuntu 系统上,安装只需一条简单的命令:

root@kitploit:~
apt-get install psad

如果 psad 不在软件包仓库中,则可以使用 psad 源码中附带的 install.pl 脚本进行安装。如果已安装 psad,install.pl 脚本也可以处理升级。psad 需要几个 Perl 模块,这些模块可能尚未安装在您的 Linux 系统上。这些模块包含在 psad 源码的 deps/ 目录中,并由 install.pl 脚本自动安装。模块列表如下:

  • Bit::Vector
  • Date::Calc
  • IPTables::ChainMgr
  • IPTables::Parse
  • NetAddr::IP
  • Storable
  • Unix::Syslog

psad 还包含一个由 Marco d'Itri 编写的 whois 客户端(参见 deps/whois 目录)。该客户端在收集给定 IP 地址的正确 whois 信息方面比其他客户端做得更好。

防火墙设置

与 psad 兼容的 iptables 配置的主要要求仅仅是 iptables 记录数据包。通常通过向 INPUT 和 FORWARD 链添加规则来实现,如下所示:

root@kitploit:~
iptables -A INPUT -j LOG
iptables -A FORWARD -j LOG

上述规则应添加在 INPUT 和 FORWARD 链的末尾,在所有允许合法流量的 ACCEPT 规则之后,并且在相应的 DROP 规则之前,用于阻止不允许通过策略的流量。请注意,iptables 策略可能非常复杂,包括协议、网络、端口和接口限制、用户自定义链、连接跟踪规则等。有许多软件(如 Shorewall 和 Firewall Builder)可以构建 iptables 策略,并利用 iptables 提供的高级过滤和日志记录功能。通常,这类软件构建的策略与 psad 兼容,因为它们专门添加了指示 iptables 记录不属于合法流量数据包的规则。Psad 可以配置为仅分析包含特定日志前缀(通过 --log-prefix 选项添加)的 iptables 消息,但默认情况下,psad 会分析所有 iptables 日志消息,以寻找端口扫描、后门程序探测和其他可疑流量的证据。

平台

psad 通常在 Linux 系统上运行,并且可在许多主要 Linux 发行版的软件包仓库中获得。如果在操作 psad 时遇到任何问题,请在 github 上提出问题。

许可证

psad 作为开源软件发布,遵循 GNU 通用公共许可证 (GPL v2+) 的条款。最新版本可在 https://github.com/mrash/psad/releases 找到。

psad 使用了 Snort(由 Marty Roesch 编写,请参见 http://www.snort.org)中提供的许多 TCP、UDP 和 ICMP 签名。Snort 是 Sourcefire, Inc. 的注册商标。

联系方式

所有功能请求和错误修复均通过 github 问题跟踪进行管理。不过,您也可以通过电子邮件 (michael.rash_AT_gmail.com) 或 Twitter (@michaelrash) 联系我。

下载工具