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

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

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

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

工具目录

分类

查看所有分类
Loading categories
linux-security-audit — 自动化 Linux 安全审计工具,针对基于 RHEL 的系统检查 130 多项 CIS 基准项,生成关于系统配置、加密策略和服务加固的详细 XML 报告。 | Kitploit
工具/GitHubGitHub/password123456/linux-security-audit
漏洞扫描器配置审计
GitHubpassword123456/linux-security-audit

linux-security-audit

自动化 Linux 安全审计工具,针对基于 RHEL 的系统检查 130 多项 CIS 基准项,生成关于系统配置、加密策略和服务加固的详细 XML 报告。

查看仓库

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享
3041年前Kitploit 审核通过

Linux 安全审计工具

made-with-python Python Versions Hits

  • 基于 CIS - Red Hat Enterprise Linux 8 Benchmark v3.0.0 的 Linux 安全审计工具
  • 如果这对你有帮助,请点击 "star"🌟 支持进一步改进。

目录

  • 1. 特性
  • 2. 预览
  • 3. 结果日志
  • 4. 支持的操作系统
  • 5. 前提条件
  • 6. 备注
    • 6.1. 为什么制作它?
    • 6.2. 使用技巧
    • 以及...

1. 特性

  • 对 CIS - Red Hat Enterprise Linux 8 Benchmark v3.0.0 中的约 130 个项目进行审计(并非文档中的完整集合:)。

项目:

root@kitploit:~
1. 初始设置
 1.6 配置系统范围的加密策略 
  1.6.1 确保系统范围的加密策略未设置为旧版 
  1.6.2 确保系统范围的加密策略禁用 sha1 哈希和签名支持  
  1.6.3 确保系统范围的加密策略禁用 ssh 的 cbc  
  1.6.4 确保系统范围的加密策略禁用小于 128 位的 macs  
  
 1.7 配置命令行警告横幅 
  1.7.1 确保正确配置了每日消息
  1.7.2 确保正确配置了本地登录警告横幅  
  1.7.3 确保正确配置了远程登录警告横幅 
  1.7.4 确保 /etc/motd 的访问权限已配置 
  1.7.5 确保 /etc/issue 的访问权限已配置 
  1.7.6 确保 /etc/issue.net 的访问权限已配置 

2. 服务
 2.1 配置时间同步
  2.1.1 确保时间同步正在使用
  2.1.2 确保已配置 chrony  
  2.1.3 确保 chrony 不以 root 用户运行
  
 2.2 配置特殊用途服务 
  2.2.1 确保 autofs 服务未在使用 
  2.2.2 确保 avahi 守护进程服务未在使用 
  2.2.3 确保 dhcp 服务器服务未在使用 
  2.2.4 确保 dns 服务器服务未在使用 
  2.2.5 确保 dnsmasq 服务未在使用 
  2.2.6 确保 samba 文件服务器服务未在使用 
  2.2.7 确保 ftp 服务器服务未在使用 
  2.2.8 确保消息访问服务器服务未在使用 
  2.2.9 确保网络文件系统服务未在使用 
  2.2.10 确保 nis 服务器服务未在使用 
  2.2.11 确保打印服务器服务未在使用 
  2.2.12 确保 rpcbind 服务未在使用 
  2.2.13 确保 rsync 服务未在使用 
  2.2.14 确保 snmp 服务未在使用 
  2.2.15 确保 telnet 服务器服务未在使用 
  2.2.16 确保 tftp 服务器服务未在使用 
  2.2.17 确保 Web 代理服务器服务未在使用 
  2.2.18 确保 Web 服务器服务未在使用 
  2.2.19 确保 xinetd 服务未在使用 
  2.2.20 确保 X Window 服务器服务未在使用
  2.2.21 确保邮件传输代理配置为仅本地模式
  2.2.22 确保只有批准的服务在网络接口上监听

4. 访问、认证与授权 
 4.1 配置任务调度器 
  4.1.1 配置 cron
   4.1.1.1 确保 cron 守护进程已启用并处于活动状态
   4.1.1.2 确保 /etc/crontab 的权限已配置  
   4.1.1.3 确保 /etc/cron.hourly 的权限已配置 
   4.1.1.4 确保 /etc/cron.daily 的权限已配置  
   4.1.1.5 确保 /etc/cron.weekly 的权限已配置 
   4.1.1.6 确保 /etc/cron.monthly 的权限已配置 
   4.1.1.7 确保 /etc/cron.d 的权限已配置  
   4.1.1.8 确保 crontab 仅限授权用户使用  
  4.1.2 配置 at 
   4.1.2.1 确保 at 仅限授权用户使用   
   
 4.2 配置 SSH 服务器 
  4.2.1 确保 /etc/ssh/sshd_config 的权限已配置 
  4.2.2 确保 SSH 私有主机密钥文件的权限已配置 
  4.2.3 确保 SSH 公有主机密钥文件的权限已配置 
  4.2.4 确保 sshd 访问已配置  
  4.2.5 确保 sshd 横幅已配置 
  4.2.6 确保 sshd 密码已配置  
  4.2.7 确保 sshd 的 ClientAliveInterval 和 ClientAliveCountMax 已配置 
  4.2.8 确保 sshd 的 DisableForwarding 已启用  
  4.2.9 确保 sshd 的 HostbasedAuthentication 已禁用 
  4.2.10 确保 sshd 的 IgnoreRhosts 已启用 
  4.2.11 确保 sshd 的 KexAlgorithms 已配置  
  4.2.12 确保 sshd 的 LoginGraceTime 已配置 
  4.2.13 确保 sshd 的 LogLevel 已配置 
  4.2.14 确保 sshd 的 MACs 已配置 
  4.2.15 确保 sshd 的 MaxAuthTries 已配置  
  4.2.16 确保 sshd 的 MaxSessions 已配置 
  4.2.17 确保 sshd 的 MaxStartups 已配置  
  4.2.18 确保 sshd 的 PermitEmptyPasswords 已禁用 
  4.2.19 确保 sshd 的 PermitRootLogin 已禁用  
  4.2.20 确保 sshd 的 PermitUserEnvironment 已禁用 
  4.2.21 确保 sshd 的 UsePAM 已启用  
  4.2.22 确保 sshd 的 crypto_policy 未设置
  
 4.3 配置权限提升 
  4.3.1 确保已安装 sudo  
  4.3.2 确保 sudo 命令使用 pty  
  4.3.3 确保 sudo 日志文件存在 
  4.3.4 确保用户必须提供密码才能提升权限  
  4.3.5 确保未全局禁用权限提升的重新认证 
  4.3.6 确保 sudo 认证超时配置正确 
  4.3.7 确保限制对 su 命令的访问  
  
 4.4 配置可插拔认证模块
  4.4.2 配置 authselect 
   4.4.2.1 确保活动的 authselect 配置文件包含 pam 模块 
   4.4.2.2 确保 pam_faillock 模块已启用  
   4.4.2.3 确保 pam_pwquality 模块已启用  
   4.4.2.4 确保 pam_pwhistory 模块已启用  
   4.4.2.5 确保 pam_unix 模块已启用  
  4.4.3 配置可插拔模块参数 
   4.4.3.1.1 确保密码失败尝试锁定已配置 
   4.4.3.1.2 确保密码解锁时间已配置  
   4.4.3.1.3 确保密码失败尝试锁定包含 root 帐户 
   4.4.3.2.1 确保密码更改字符数已配置  
   4.4.3.2.2 确保密码长度已配置 
   4.4.3.2.3 确保密码复杂性已配置(手动)
   4.4.3.2.4 确保密码相同连续字符已配置 
   4.4.3.2.5 确保密码最大顺序字符已配置 
   4.4.3.2.6 确保密码字典检查已启用 
   4.4.3.2.7 确保为 root 用户强制执行密码质量 
   4.4.3.3.1 确保密码历史记录已配置 
   4.4.3.3.2 确保为 root 用户强制执行密码历史记录
   4.4.3.3.3 确保 pam_pwhistory 包含 use_authtok
   4.4.3.4.1 确保 pam_unix 不包含 nullok   
   4.4.3.4.2 确保 pam_unix 不包含 remember  
   4.4.3.4.3 确保 pam_unix 包含强密码哈希算法 
   4.4.3.4.4 确保 pam_unix 包含 use_authtok 

4.5 用户帐户和环境 
 4.5.1 配置 shadow 密码套件参数
  4.5.1.1 确保已配置强密码哈希算法 
  4.5.1.2 确保密码过期策略为 180 天或更少 
  4.5.1.3 确保密码过期警告天数为 7 天或更多 
  4.5.1.4 确保非活动密码锁定为 30 天或更少 
  4.5.1.5 确保所有用户的最后密码更改日期在过去 
 4.5.2 配置 root 和系统帐户及环境
  4.5.2.1 确保 root 帐户的默认组为 GID 0  
  4.5.2.2 确保 root 用户的 umask 已配置  
  4.5.2.3 确保系统帐户已安全配置  
  4.5.2.4 确保已设置 root 密码  
 4.5.3 配置用户默认环境 
  4.5.3.1 确保 nologin 未列在 /etc/shells 中 
  4.5.3.2 确保默认用户 shell 超时已配置  
  4.5.3.3 确保默认用户 umask 已配置

5. 日志记录和审计
 5.1 配置日志记录
  5.1.1 配置 rsyslog
   5.1.1.1 确保已安装 rsyslog  
   5.1.1.2 确保 rsyslog 服务已启用
   5.1.1.4 确保 rsyslog 默认文件权限已配置  
   5.1.1.5 确保日志记录已配置
   5.1.1.6 确保 rsyslog 已配置为将日志发送到远程日志主机
   5.1.1.7 确保 rsyslog 未配置为从远程客户端接收日志 

6. 系统维护 
 6.1 系统文件权限 
  6.1.1 确保 /etc/passwd 的权限已配置  
  6.1.2 确保 /etc/passwd- 的权限已配置  
  6.1.3 确保 /etc/opasswd 的权限已配置  
  6.1.4 确保 /etc/group 的权限已配置  
  6.1.5 确保 /etc/group- 的权限已配置  
  6.1.6 确保 /etc/shadow 的权限已配置  
  6.1.7 确保 /etc/shadow- 的权限已配置 
  6.1.8 确保 /etc/gshadow 的权限已配置  
  6.1.9 确保 /etc/gshadow- 的权限已配置 
  6.1.10 确保 /etc/shells 的权限已配置  
  6.1.11 确保全局可写的文件和目录已安全处理  
  6.1.12 确保不存在无属主或无属组的文件或目录 
  6.1.13 确保审查 SUID 和 SGID 文件 
  6.1.14 审计系统文件权限

6.2 本地用户和组设置 
  6.2.1 确保 /etc/passwd 中的帐户使用 shadow 密码 
  6.2.2 确保 /etc/shadow 密码字段不为空  
  6.2.3 确保 /etc/passwd 中的所有组都存在于 /etc/group 中 
  6.2.4 确保不存在重复的 UID  
  6.2.5 确保不存在重复的 GID  
  6.2.6 确保不存在重复的用户名 
  6.2.7 确保不存在重复的组名  
  6.2.8 确保 root 路径完整性  
  6.2.9 确保 root 是唯一的 UID 0 帐户  
  6.2.10 确保本地交互式用户主目录已配置 
  6.2.11 确保本地交互式用户点文件的访问权限已配置 

2. 预览

预览

root@kitploit:~
$ date
2024年8月6日 星期二 04:00:37 UTC

$ python3 -V
Python 3.6.8

$ sudo python3 main.py
===========================================================
		Linux 安全审计工具 1.0.1 (2024.08.06)
				作者: password123456
 ===========================================================

[+][2024-08-06 04:01:14] 开始安全审计。
---------------------------------------------------------

 主机名: buddy2
 操作系统: Rocky Linux 8.8 (Green Obsidian)
 IP 地址: [ens192] 172.16.13.51
 MAC 地址: [ens192] 00:50:56:a6:76:b8

[+] 1.初始设置
---------------------------------------------------------
 1.6.配置系统范围的加密策略
  [通过]  1.6.1 : 确保系统范围的加密策略未设置为旧版
  [故障] 1.6.2 : 确保系统范围的加密策略禁用 sha1 哈希和签名支持
  [通过]  1.6.3 : 确保系统范围的加密策略禁用 ssh 的 cbc
  [手动] 1.6.4 : 确保系统范围的加密策略禁用小于 128 位的 macs

 1.7.配置命令行警告横幅
  [通过]  1.7.1 : 确保正确配置了每日消息
  [故障] 1.7.2 : 确保正确配置了本地登录警告横幅
  [通过]  1.7.3 : 确保正确配置了远程登录警告横幅
  [通过]  1.7.4 : 确保 /etc/motd 的访问权限已配置
  [通过]  1.7.5 : 确保 /etc/issue 的访问权限已配置
  [通过]  1.7.6 : 确保 /etc/issue.net 的访问权限已配置

...

[*] 结果
---------------------------------------------------------
输出文件=/home/buddy/1722884474_buddy2_audit.xml
---------------------------------------------------------

[+][2024-08-06 04:01:57] 结束安全审计。

3. 结果日志

  • 为每个审计项目和验证生成详细的原始审计数据,格式为 XML
  • 原始审计数据旨在显示非常详细的日志输出,以演示审计日志的格式和内容。
root@kitploit:~
$ cat 1722884474_buddy2_audit.xml
root@kitploit:~
<?xml version="1.0" encoding="UTF-8"?>
<results>
  <items>
	<status>ok</status>
	<datetime>2024-08-06 04:01:14</datetime>
	<auditor>password123456</auditor>
	<target>buddy2</target>
	<os_name>Rocky Linux 8.8 (Green Obsidian)</os_name>
	<os_version>8.8</os_version>
	<os_id>rocky</os_id>
	<os_architecture>x86_64</os_architecture>
	<ip_address>[ens192] 172.16.13.51</ip_address>
	<mac_address>[ens192] 00:50:56:a6:76:b8</mac_address>
	<item_no>1.6.1</item_no>
	<item_title>确保系统范围的加密策略未设置为旧版</item_title>
	<result>pass</result>
	<result_code>0</result_code>
	<raw_data>
	  <![CDATA[
[ok] 未找到: /etc/crypto-policies/config --> ^[ \t]*(\bLEGACY\b)

# cat /etc/crypto-policies/config
...
DEFAULT
	  ]]>
	</raw_data>
  </items>
  <items>
	<status>ok</status>
	<datetime>2024-08-06 04:01:14</datetime>
	<auditor>password123456</auditor>
	<target>buddy2</target>
	<os_name>Rocky Linux 8.8 (Green Obsidian)</os_name>
	<os_version>8.8</os_version>
	<os_id>rocky</os_id>
	<os_architecture>x86_64</os_architecture>
	<ip_address>[ens192] 172.16.13.51</ip_address>
	<mac_address>[ens192] 00:50:56:a6:76:b8</mac_address>
	<item_no>1.6.2</item_no>
	<item_title>确保系统范围的加密策略禁用 sha1 哈希和签名支持</item_title>
	<result>fault</result>
	<result_code>1</result_code>
	<raw_data>
	  <![CDATA[
[vul] 发现: /etc/crypto-policies/state/CURRENT.pol
- 发现: ^[ \t]*(hash|sign)[ \t]*=[ \t]*([^\n\r#]+)?-sha1\b --> `ECDSA-SHA1,RSA-PSS-SHA1,RSA-SHA1` 位于第13行附近

# cat /etc/crypto-policies/state/CURRENT.pol
...
11: mac = AEAD HMAC-SHA2-256 HMAC-SHA1 UMAC-128 HMAC-SHA2-384 HMAC-SHA2-512
12: protocol =
13: sign = ECDSA-SHA3-256 ECDSA-SHA2-256 ECDSA-SHA3-384 ECDSA-SHA2-384 ECDSA-SHA3-512 ECDSA-SHA2-512 EDDSA-ED25519 EDDSA-ED448 RSA-PSS-SHA2-
256 RSA-PSS-SHA2-384 RSA-PSS-SHA2-512 RSA-SHA3-256 RSA-SHA2-256 RSA-SHA3-384 RSA-SHA2-384 RSA-SHA3-512 RSA-SHA2-512 ECDSA-SHA2-224 RSA-PSS-S
HA2-224 RSA-SHA2-224 ECDSA-SHA1 RSA-PSS-SHA1 RSA-SHA1
14: arbitrary_dh_groups = 1
15: min_dh_size = 2048


[vul] 发现: /etc/crypto-policies/state/CURRENT.pol
- 发现: ^[ \t]*sha1_in_certs[ \t]*=[ \t]*(0|1)$ --> `1` 位于第18行附近

# cat /etc/crypto-policies/state/CURRENT.pol
...
16: min_dsa_size = 2048
17: min_rsa_size = 2048
18: sha1_in_certs = 1
19: ssh_certs = 1
20: ssh_etm = 1
	  ]]>
	</raw_data>
  </items>
    
 ...
    
  <items>
        <status>ok</status>
        <datetime>2024-08-06 04:01:38</datetime>
        <auditor>password123456</auditor>
        <target>buddy2</target>
        <os_name>Rocky Linux 8.7 (Green Obsidian)</os_name>
        <os_version>8.7</os_version>
        <os_id>rocky</os_id>
        <os_architecture>x86_64</os_architecture>
        <ip_address>[ens192] 172.16.13.51</ip_address>
        <mac_address>[ens192] 00:50:56:a6:4a:80</mac_address>
        <item_no>6.1.10</item_no>
        <item_title>确保 /etc/shells 的权限已配置</item_title>
        <result>pass</result>
        <result_code>0</result_code>
        <raw_data>
          <![CDATA[
[ok] -rw-r--r-- 1 root root 44 Sep 10 20:51 /etc/shells
- 权限: 644
- 所有者:组: root:root          
          ]]>
        </raw_data>
  </items>    
</results>

4. 支持的操作系统

  • 基于 RHEL 的 Linux 发行版
    • CentOS
    • RHEL
    • Rocky Linux
  • 虽然该脚本主要针对基于 RHEL 的系统设计,但经过少量调整,它应该可以在所有 RHEL 衍生版上运行。
  • 该工具可根据需要进行定制和扩展。

5. 前提条件

  • Python 3.6+(无需外部依赖)。
  • 使用少量核心 shell 命令(在特定审计项目中为提高效率有选择地使用)。

6. 备注

6.1. 为什么制作它?

  • 安全审计工具通常使用 SHELL 脚本开发,因为它简单且能直接访问系统命令。
  • 尽管基于 SHELL 脚本的工具很常见,但缺乏用其他语言开发的工具。
  • 本工具旨在利用 Python 实现,Python 是大多数现代 Linux 发行版原生支持的语言。
  • 在未达到生命周期的 Linux 系统上,默认包含 Python 3.6+。

使命是使用几乎 100% 纯 Python 代码来实现此工具。然而,在某些特定情况下,使用 shell 命令是不可避免的。

不可避免的情况:

  • 当所需功能在 Python 标准库中不可用时。
  • 当使用 find 等命令搜索文件和目录比使用原生 Python 代码快得多时。

该脚本尽可能避免了常见的 Python 代码 > subprocess 运行 shell 命令 > 解析输出 模式,并且由超过 90% 的纯 Python 代码构成。

6.2. 使用技巧

  • 在大型环境(数千或数万台服务器)中,可以使用远程执行工具(如 Ansible 或其他系统)部署、执行 Python 脚本并检索审计日志。
  • 结果可以使用能够解析 XML 的日志聚合工具进行分析和可视化,或者通过构建自定义 Web 应用程序进行 XML 解析。
  • 日志包括审计结果(pass、fault、manual、error)以及用于验证的原始系统数据。
  • 无需直接访问服务器;原始日志包含足够的数据来验证发现和检测误报。
  • 您还可以将初始审计日志与修复后的日志进行比较,以跟踪更改和改进。

以及...

  • 根据您的视角,日志中的原始审计数据可能显得杂乱。
  • 请随意审查代码库,并根据您的具体要求进行定制。
下载工具