5.16. ファイアウォールロックダウンの設定


ローカルアプリケーションやサービスは、root として実行している場合は、ファイアウォール設定を変更できます(例: libvirt)。管理者は、この機能を使用してファイアウォール設定をロックし、すべてのアプリケーションでファイアウォール変更を要求できなくするか、ロックダウンのホワイトリストに追加されたアプリケーションのみがファイアウォール変更を要求できるようにすることが可能になります。ロックダウン設定はデフォルトで無効になっています。これを有効にすると、ローカルのアプリケーションやサービスによるファイアウォールへの望ましくない設定変更を確実に防ぐことができます。

5.16.1. コマンドラインクライアントを使用したロックダウンの設定

ロックダウンが有効になっているかどうかを確認するには、root で以下のコマンドを実行します。
~]# firewall-cmd --query-lockdown
ロックダウンが有効な場合は、コマンドにより yes と出力され、終了ステータスは 0 になります。そうでなければ no と出力され、終了ステータスは 1 になります。
ロックダウンを有効にするには、root で以下のコマンドを入力します。
~]# firewall-cmd --lockdown-on
ロックダウンを無効にするには、root で以下のコマンドを実行します。
~]# firewall-cmd --lockdown-off

5.16.2. コマンドラインクライアントを使用したロックダウンのホワイトリストオプションの設定

ロックダウンのホワイトリストには、コマンド、セキュリティーのコンテキスト、ユーザー、およびユーザー ID を追加できます。ホワイトリストのコマンドエントリーがアスタリスク*で終了している場合は、そのコマンドで始まるすべてのコマンドラインが一致することになります。*がなければ、コマンドと引数が完全に一致する必要があります。
ここでのコンテキストは、実行中のアプリケーションやサービスのセキュリティー (SELinux) コンテキストです。実行中のアプリケーションのコンテキストを確認するには、次のコマンドを実行します。
~]$ ps -e --context
このコマンドは、実行中のアプリケーションをすべて返します。grep ツールを介して出力をパイプ処理して、対象のアプリケーションを取得します。以下に例を示します。
~]$ ps -e --context | grep example_program
ホワイトリストにあるコマンドラインの一覧を表示するには、root で次のコマンドを実行します。
~]# firewall-cmd --list-lockdown-whitelist-commands
ホワイトリストに command コマンドを追加するには、root で以下のコマンドを入力します。
~]# firewall-cmd --add-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
ホワイトリストから command コマンドを削除するには、root で次のコマンドを実行します。
~]# firewall-cmd --remove-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
command コマンドがホワイトリストにあるかどうかを確認するには、root で次のコマンドを実行します。
~]# firewall-cmd --query-lockdown-whitelist-command='/usr/bin/python -Es /usr/bin/command'
このコマンドは、true の場合は yes と出力され、終了ステータスは 0 になります。そうでなければ no と出力され、終了ステータスは 1 になります。
ホワイトリストにあるセキュリティーコンテキストの一覧を表示するには、root で次のコマンドを実行します。
~]# firewall-cmd --list-lockdown-whitelist-contexts
ホワイトリストに context コンテキスト を追加するには、root で次のコマンドを実行します。
~]# firewall-cmd --add-lockdown-whitelist-context=context
ホワイトリストから context コンテキスト を削除するには、root で次のコマンドを実行します。
~]# firewall-cmd --remove-lockdown-whitelist-context=context
context コンテキスト がホワイトリストにあるかどうかを確認するには、root で次のコマンドを実行します。
~]# firewall-cmd --query-lockdown-whitelist-context=context
yes を終了ステータス 0 で出力し、true の場合は no と出力し、それ以外は終了ステータス 1 を出力します。
ホワイトリストにあるユーザー ID の一覧を表示するには、root で次のコマンドを実行します。
~]# firewall-cmd --list-lockdown-whitelist-uids
ホワイトリストにユーザー ID ( uid )を追加するには、root で次のコマンドを実行します。
~]# firewall-cmd --add-lockdown-whitelist-uid=uid
ホワイトリストからユーザー ID ( uid )を削除するには、root で次のコマンドを実行します。
~]# firewall-cmd --remove-lockdown-whitelist-uid=uid
ホワイトリストにユーザー ID (uid) があるかどうかを確認するには、次のコマンドを実行します。
~]$ firewall-cmd --query-lockdown-whitelist-uid=uid
yes を終了ステータス 0 で出力し、true の場合は no と出力し、それ以外は終了ステータス 1 を出力します。
ホワイトリストにあるユーザー名の一覧を表示するには、root で次のコマンドを実行します。
~]# firewall-cmd --list-lockdown-whitelist-users
ユーザー名( user )をホワイトリストに追加するには、root で次のコマンドを実行します。
~]# firewall-cmd --add-lockdown-whitelist-user=user
ホワイトリストからユーザー名( user )を削除するには、root で次のコマンドを実行します。
~]# firewall-cmd --remove-lockdown-whitelist-user=user
ホワイトリストにユーザー名 (user) があるかどうかを確認するには、次のコマンドを実行します。
~]$ firewall-cmd --query-lockdown-whitelist-user=user
yes を終了ステータス 0 で出力し、true の場合は no と出力し、それ以外は終了ステータス 1 を出力します。

5.16.3. 設定ファイルを使用したロックダウンのホワイトリストオプションの設定

デフォルトのホワイトリスト設定ファイルには、NetworkManager コンテキストと、libvirt のデフォルトのコンテキストが含まれます。リストには、ユーザー ID (0) もあります。
<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <selinux context="system_u:system_r:virtd_t:s0-s0:c0.c1023"/>
	  <user id="0"/>
	</whitelist>
以下は、firewall-cmd ユーティリティーで、ユーザー ID が 815 である user ユーザーのすべてのコマンドを有効にするホワイトリスト設定ファイルの例です。
<?xml version="1.0" encoding="utf-8"?>
	<whitelist>
	  <command name="/usr/bin/python -Es /bin/firewall-cmd*"/>
	  <selinux context="system_u:system_r:NetworkManager_t:s0"/>
	  <user id="815"/>
	  <user name="user"/>
	</whitelist>
この例では、user iduser name の両方が使用されていますが、実際にはどちらか一方のオプションだけが必要です。Python はインタープリターとしてコマンドラインに追加されています。特定のコマンドを使用することもできます(例:
/usr/bin/python /bin/firewall-cmd --lockdown-on
-lockdown-on コマンドのみが許可されます)。
注記
Red Hat Enterprise Linux 7 では、すべてのユーティリティーが /usr/bin/ ディレクトリーに格納され、/bin/ ディレクトリーは /usr/bin/ ディレクトリーへのシンボリックリンクになります。つまり、root で実行する際の firewall-cmd のパスは /bin/firewall-cmd に解決しますが、/usr/bin/firewall-cmd を使用できるようになりました。新たなスクリプトは、すべて新しい格納場所を使用する必要があります。ただし、root で実行するスクリプトが /bin/firewall-cmd パスを使用するように書き込まれている場合は、これまではroot 以外のユーザーにのみ使用されていた /usr/bin/firewall-cmd パスに加えて、このコマンドのパスもホワイトリスト化する必要があります。
コマンドの名前属性の最後にある * は、この文字列で始まるすべてのコマンドが一致することを意味します。* がない場合は、引数を含む絶対コマンドが一致する必要があります。
Red Hat logoGithubRedditYoutubeTwitter

詳細情報

試用、購入および販売

コミュニティー

Red Hat ドキュメントについて

Red Hat をお使いのお客様が、信頼できるコンテンツが含まれている製品やサービスを活用することで、イノベーションを行い、目標を達成できるようにします。

多様性を受け入れるオープンソースの強化

Red Hat では、コード、ドキュメント、Web プロパティーにおける配慮に欠ける用語の置き換えに取り組んでいます。このような変更は、段階的に実施される予定です。詳細情報: Red Hat ブログ.

会社概要

Red Hat は、企業がコアとなるデータセンターからネットワークエッジに至るまで、各種プラットフォームや環境全体で作業を簡素化できるように、強化されたソリューションを提供しています。

© 2024 Red Hat, Inc.