Skip to content
KitploitKITPLOIT
ツールブログ
提出
ツールブログ
提出

ハッキング、侵入テスト、サイバーセキュリティツールをあなたのセキュリティアーセナルに!

Kitploitはハッキング、サイバーセキュリティ、ペネトレーションテストのツールディレクトリです。最新のプロジェクトアップデートを見つけて、脆弱性の発見、システム分析、テストの自動化、セキュリティの強化を行いましょう。

··フィード·お問い合わせ·プライバシー·© 2026 Kitploit

ツールディレクトリ

カテゴリ

すべてのカテゴリを見る
Loading categories
linux-security-audit — RHELベースのシステム向けに130以上のCISベンチマーク項目をチェックし、システム構成、暗号ポリシー、サービス強化に関する詳細なXMLレポートを生成する自動化されたLinuxセキュリティ監査ツール。 | Kitploit
ツール/GitHubGitHub/password123456/linux-security-audit
脆弱性スキャナー構成監査
GitHubpassword123456/linux-security-audit

linux-security-audit

RHELベースのシステム向けに130以上のCISベンチマーク項目をチェックし、システム構成、暗号ポリシー、サービス強化に関する詳細なXMLレポートを生成する自動化されたLinuxセキュリティ監査ツール。

リポジトリを見る

人気

すべて見る →

コミュニティで最も使われているツールを見つけましょう。

すべてのツールを探索

ツールコレクションを閲覧

すべてのツールを見る →
共有
3041年前Kitploit レビュー済み

Linux セキュリティ監査ツール

made-with-python Python Versions Hits

  • CIS - Red Hat Enterprise Linux 8 Benchmark v3.0.0 に基づく Linux セキュリティ監査ツール
  • 参考になりましたら、「スター」🌟 を押してさらなる改善をサポートしてください。

目次

  • 1. 特徴
  • 2. プレビュー
  • 3. 結果ログ
  • 4. サポート対象OS
  • 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ビット未満のmacを無効にしていることを確認

 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ウィンドウサーバーサービスが使用されていないことを確認
  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 MACが設定されていることを確認
  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 プラグイン可能な認証モジュール(PAM)の設定
  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 シャドウパスワードスイートパラメータの設定
  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 デフォルトユーザーシェルタイムアウトが設定されていることを確認
  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のアカウントがシャドウパスワードを使用していることを確認
  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. プレビュー

preview

root@kitploit:~
$ date
Tue Aug  6 04:00:37 UTC 2024

$ python3 -V
Python 3.6.8

$ sudo python3 main.py
===========================================================
		Linux Security Audit Tool 1.0.1 (2024.08.06)
				by password123456
 ===========================================================

[+][2024-08-06 04:01:14] Start Security Audit.
---------------------------------------------------------

 Hostname: buddy2
 OS: Rocky Linux 8.8 (Green Obsidian)
 IP Address: [ens192] 172.16.13.51
 MAC Address: [ens192] 00:50:56:a6:76:b8

[+] 1.Initial Setup
---------------------------------------------------------
 1.6.Configure system wide crypto policy
  [pass]  1.6.1 : Ensure system wide crypto policy is not set to legacy
  [fault] 1.6.2 : Ensure system wide crypto policy disables sha1 hash and signature support
  [pass]  1.6.3 : Ensure system wide crypto policy disables cbc for ssh
  [manual] 1.6.4 : Ensure system wide crypto policy disables macs less than 128 bits

 1.7.Configure Command Line Warning Banners
  [pass]  1.7.1 : Ensure message of the day is configured properly
  [fault] 1.7.2 : Ensure local login warning banner is configured properly
  [pass]  1.7.3 : Ensure remote login warning banner is configured properly
  [pass]  1.7.4 : Ensure access to /etc/motd is configured
  [pass]  1.7.5 : Ensure access to /etc/issue is configured
  [pass]  1.7.6 : Ensure access to /etc/issue.net is configured

...

[*] RESULT
---------------------------------------------------------
output=/home/buddy/1722884474_buddy2_audit.xml
---------------------------------------------------------

[+][2024-08-06 04:01:57] End Security Audit.

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>Ensure system wide crypto policy is not set to legacy</item_title>
	<result>pass</result>
	<result_code>0</result_code>
	<raw_data>
	  <![CDATA[
[ok] Not Found: /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>Ensure system wide crypto policy disables sha1 hash and signature support</item_title>
	<result>fault</result>
	<result_code>1</result_code>
	<raw_data>
	  <![CDATA[
[vul] Found: /etc/crypto-policies/state/CURRENT.pol
- found: ^[ \t]*(hash|sign)[ \t]*=[ \t]*([^\n\r#]+)?-sha1\b --> `ECDSA-SHA1,RSA-PSS-SHA1,RSA-SHA1` near at line: 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] Found: /etc/crypto-policies/state/CURRENT.pol
- found: ^[ \t]*sha1_in_certs[ \t]*=[ \t]*(0|1)$ --> `1` near at line: 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>Ensure permissions on /etc/shells are configured</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
- permissions: 644
- owner:group: root:root          
          ]]>
        </raw_data>
  </items>    
</results>

4. サポート対象OS

  • RHELベースのLinuxディストリビューション
    • CentOS
    • RHEL
    • Rocky Linux
  • このスクリプトは主にRHELベースのシステム向けに設計されていますが、最小限の調整で全てのRHEL派生システムでも動作するはずです。
  • 必要に応じてツールをカスタマイズおよび拡張できます。

5. 前提条件

  • Python 3.6+(外部依存関係は不要)。
  • 少数のコアシェルコマンドを利用します(特定の監査項目で効率化のために選択的に使用)。

6. 注意事項

6.1. なぜ作ったのか?

  • セキュリティ監査ツールは、そのシンプルさとシステムコマンドへの直接アクセスから、シェルスクリプトで開発されることがよくあります。
  • シェルスクリプトベースのツールは一般的に知られていますが、他の言語で開発されたツールは不足しています。
  • このツールは、ほとんどの最新LinuxディストリビューションでネイティブサポートされているPythonを活用して実装することを目指しています。
  • EOLではないLinuxシステムでは、Python 3.6+がデフォルトで含まれています。

目標は、ほぼ100%純粋なPythonコードでこのツールを実装することでした。ただし、シェルコマンドの使用が避けられない特定のケースがありました。

避けられないケース:

  • 必要な機能がPythonの標準ライブラリで利用できない場合。
  • find などのコマンドを使ったファイルやディレクトリの検索操作が、ネイティブのPythonコードよりも大幅に高速な場合。

このスクリプトは、可能な限り Pythonコード > サブプロセスでシェルコマンド実行 > 出力を解析 という一般的なパターンを避け、90%以上の純粋なPythonコードで構成されています。

6.2. 使用方法

  • 大規模環境(数千から数万台のサーバー)では、Pythonをデプロイ、実行し、Ansibleなどのリモート実行ツールを使用して監査ログを取得できます。
  • 結果は、XMLを解析できるログ集約ツールを使用して分析・可視化することも、XML解析用のカスタムWebアプリケーションを構築することもできます。
  • ログには、監査結果(pass、fault、manual、error)と検証用の生のシステムデータの両方が含まれます。
  • サーバーに直接アクセスする必要はありません。生ログには、結果を検証し誤検出を検出するための十分なデータが含まれています。
  • 初期監査のログと修復後のログを比較して、変更や改善を追跡することもできます。

そして...

  • ログ内の生監査データは、見方によっては乱雑に見えるかもしれません。
  • コードベースを確認し、特定の要件に合わせて自由に調整してください。
ツールをダウンロード