
堅牢化されたDebian GNU/Linuxディストリビューションの監査
ハードニングされたDebian GNU/LinuxおよびCentOS 8ディストリビューションの監査。
主なテスト環境はDebian GNU/Linux 9/10/11/12/13、CentOS 8、Ubuntu 22であり、その他のバージョンは完全にはテストされていません。このリリースではデスクトップ関連の項目は実装されていません。
コードフレームワークはOVH-debian-cisプロジェクトに基づいており、Debian 9/10/11/12/13およびCentOS 8の機能に応じて元の実装の一部を修正し、STIG Red_Hat_Enterprise_Linux_7_V2R5、STIG Ubuntu V1R2、cisecurity.orgの推奨事項に対するチェック項目を追加・実装し、HardenedLinuxコミュニティによるいくつかのチェック項目も追加・実装しました。インフラの監査および適用機能が実装されており、自動修正可能な項目については自動修正機能が実装されています。
# bash bin/hardening.sh --audit-all
[...]
hardening [INFO] Treating /home/test/harbian-audit/bin/hardening/13.15_check_duplicate_gid.sh
13.15_check_duplicate_gid [INFO] Working on 13.15_check_duplicate_gid
13.15_check_duplicate_gid [INFO] Checking Configuration
13.15_check_duplicate_gid [INFO] Performing audit
13.15_check_duplicate_gid [ OK ] No duplicate GIDs
13.15_check_duplicate_gid [ OK ] Check Passed
[...]
################### SUMMARY ###################
Total Available Checks : 271
Total Checks Run : 271
Total Passed Checks : [ 226/271 ]
Total Failed Checks : [ 44/271 ]
Enabled Checks Percentage : 100.00 %
Conformity Percentage : 83.39 %
$ git clone https://github.com/hardenedlinux/harbian-audit.git && cd harbian-audit
# cp etc/default.cfg /etc/default/cis-hardening
# sed -i "s#CIS_ROOT_DIR=.*#CIS_ROOT_DIR='$(pwd)'#" /etc/default/cis-hardening
# bin/hardening.sh --init
# bin/hardening.sh --audit-all
hardening [INFO] Treating /home/test/harbian-audit/bin/hardening/1.1_install_updates.sh
1.1_install_updates [INFO] Working on 1.1_install_updates
1.1_install_updates [INFO] Checking Configuration
1.1_install_updates [INFO] Performing audit
1.1_install_updates [INFO] Checking if apt needs an update
1.1_install_updates [INFO] Fetching upgrades ...
1.1_install_updates [ OK ] No upgrades available
1.1_install_updates [ OK ] Check Passed
[...]
################### SUMMARY ###################
Total Available Checks : 284
Total Checks Run : 284
Total Passed Checks : [ 260/284 ]
Total Failed Checks : [ 24/284 ]
Enabled Checks Percentage : 100.00 %
Conformity Percentage : 91.55 %
# bin/hardening.sh --set-hardening-level 5
# bin/hardening.sh --apply
hardening [INFO] Treating /home/test/harbian-audit/bin/hardening/1.1_install_updates.sh
1.1_install_updates [INFO] Working on 1.1_install_updates
1.1_install_updates [INFO] Checking Configuration
1.1_install_updates [INFO] Performing audit
1.1_install_updates [INFO] Checking if apt needs an update
1.1_install_updates [INFO] Fetching upgrades ...
1.1_install_updates [ OK ] No upgrades available
1.1_install_updates [INFO] Applying Hardening
1.1_install_updates [ OK ] No Upgrades to apply
1.1_install_updates [ OK ] Check Passed
[...]
最小限のCDからネットワークインストールを使用してDebian GNU/Linuxをインストールする場合、ハードニングツールを使用する前にパッケージをインストールする必要があります。
# apt-get install -y bc net-tools pciutils network-manager
Redhat/CentOSでもハードニングツールを使用する前にパッケージをインストールする必要があります:
# yum install -y bc net-tools pciutils NetworkManager epel-release
ハードニング前にすべてのユーザーのパスワードを設定する必要があります。設定しないと、ハードニング完了後にログインできなくなります。例(OSユーザー:rootおよびtest):
# passwd
# passwd test
ハードニングスクリプトはbin/hardeningにあります。各スクリプトにはetc/conf.d/[script_name].cfgに対応する設定ファイルがあります。
各ハードニングスクリプトは、設定ファイルから個別に有効化できます。例えば、以下はdisable_system_accountsのデフォルト設定ファイルです:
# Configuration for script of same name
status=disabled
# Put here your exceptions concerning admin accounts shells separated by spaces
EXCEPTIONS=""
statusパラメータは3つの値を取ることができます:
disabled(何もしない): スクリプトは実行されません。audit(読み取り専用): スクリプトは変更を適用すべきかどうかをチェックします。enabled(読み書き): スクリプトは変更が必要かどうかをチェックし、可能なものを自動的に適用します。また、以下のコマンドでレベルを変更して設定項目を有効にすることもできます:
# bash bin/hardening.sh --audit-all
# bash bin/hardening.sh --set-hardening-level <level>
グローバル設定はetc/hardening.cfgにあります。このファイルはログレベルとバックアップディレクトリを制御します。スクリプトがファイルを編集するように指示されるたびに、このディレクトリにタイムスタンプ付きのバックアップが作成されます。
チェックを実行し修正を適用するには、bin/hardening.shを実行します。
このコマンドには2つの主要な操作モードがあります:
--audit: 有効なすべてのスクリプトと監査モードのスクリプトでシステムを監査--apply: 有効なすべてのスクリプトと監査モードのスクリプトでシステムを監査し、有効なスクリプトの変更を適用さらに、--audit-allを使用すると、無効なスクリプトも含めてすべての監査スクリプトを強制的に実行できます。これはシステムを変更しません。
--audit-all-enable-passedは、設定を素早く開始する方法として使用できます。すべてのスクリプトを監査モードで実行します。スクリプトが合格した場合、将来の実行のために自動的に有効になります。すでに設定のカスタマイズを開始している場合は、このオプションを使用しないでください。
以下のコマンドを使用してOSをハードニングします:
# bash bin/hardening.sh --apply
rsyslogを使用していて、harbian-auditのログを別のログファイルに出力したい場合、設定は以下の通りです:
user.info /var/log/harbian-audit.log
user.* -/var/log/user.log
ログはファイル/var/log/harbian-audit.logに出力されます。
docs/configurations/etc.iptables.rules.v4.shをファイアウォールルールに適用し、iptablesのログを別のログファイルに出力したい場合は、rsyslog.confに以下の行を挿入してください:
:msg,contains,"FW-" -/var/log/firewalllog.log
& stop
--applyを実行し、set-hardening-levelが5(最高レベル)に設定されている場合、以下を実行する必要があります:
# sed -i '/^[^#].*pam_wheel.so.*/s/^/# &/' /etc/pam.d/su
pam_wheel.soを含む行を一時的にコメントアウトします。suコマンドの使用が終了したら、その行のコメントを解除してください。
# echo "ALL: 192.168.1. 192.168.5." >> /etc/hosts.allow
この例では、192.168.1.[1-255]および192.168.5.[1-255]のみがこのシステムにアクセスできます。状況に応じて設定してください。
# sed -i "/^root/a\test ALL=(ALL:ALL) ALL" /etc/sudoers
etc.iptables.rules.v4.sh まずiptables-persistentパッケージをインストールし、その後以下を実行します:
$ INTERFACENAME="your network interfacename(Example eth0)"
# bash docs/configurations/etc.iptables.rules.v4.sh $INTERFACENAME
# iptables-save > /etc/iptables/rules.v4
# ip6tables-save > /etc/iptables/rules.v6
nftables.conf 以下を実行します(ネットワークインターフェース名(例: eth0)):
$ sed -i 's/^define int_if = ens33/define int_if = eth0/g' etc.nftables.conf
# nft -f ./etc.nftables.conf
# bin/hardening.sh --final
一部のチェック項目はさまざまな状況をチェックし、相互に依存しています。これらは複数回適用(修正)する必要があり、各適用(修正)後にOSを再起動する必要があります。
8.1.35 この項目が設定されているため、監査ルールは追加されません。
8.4.1
8.4.2
これらはすべてaideに関連しています。システム内のデータベースの整合性を修正するために、すべての項目を修正した後に修正するのが最善です。
4.5
ソースの入手
$ git clone https://github.com/hardenedlinux/harbian-audit.git
カスタムハードニングスクリプトの追加
$ cp src/skel bin/hardening/99.99_custom_script.sh
$ chmod +x bin/hardening/99.99_custom_script.sh
$ cp src/skel.cfg etc/conf.d/99.99_custom_script.cfg