
堅牢化された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
チェック内容を説明するコードを書き、テストしたい場合は以下のコマンドを実行します
$ sed -i "s/status=.+/status=enabled/" etc/conf.d/99.99_custom_script.cfg
$ bash bin/hardening.sh --audit --only 99.99
$ bash bin/hardening.sh --apply --only 99.99
このドキュメントは、CISリファレンスドキュメントに含まれていないセクションへの追加説明です。STIGリファレンスドキュメントおよびHardenedLinuxコミュニティ推奨の追加チェックを含みます。
CIS Debian GNU/Linux 8 Benchmark v1.0.0
CIS Debian GNU/Linux 9 Benchmark v1.0.0
harbian audit Debian Linux 9 Benchmark
grub2パスワード保護の設定方法
Debian 9でiptablesルールを永続化する方法
監査ログ用のaudisp-remoteのデプロイ方法
Debian 10でiptablesからnftablesに移行する方法
Debian 10でnftルールを永続化する方法
SELinuxアクセス拒否の修正方法
Nodejs + redis + mysql デモ
Debian 9へのhyperledger-celloのデプロイ
nginx相互SSLプロキシHTTP
nginx相互SSLプロキシTCP-UDP
AMIを作成して公開する方法
GNU/Linux Debian 9向けharbian-audit準拠イメージの使用方法
harbian-audit準拠のDebian GNU/Linux 9 QEMUイメージを作成する方法
harbian-audit準拠のDebian GNU/Linux 9 QEMUイメージの使用方法
GPL 3.0
このプロジェクトは、ツールのセットです。これらは、システム管理者が安全な環境を構築するための支援を目的としています。OVHではPCI-DSS準拠のインフラをハードニングするためにこれを使用していますが、お客様の環境で動作することを保証するものではありません。任意のホストを自動的にセキュアにすることはありません。
さらに、ライセンスに引用されているとおり:
THIS SOFTWARE IS PROVIDED BY OVH SAS AND CONTRIBUTORS ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL OVH SAS AND CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
3-Clause BSD