RHELでのファイアウォール管理 – firewall-cmdを使った設定マニュアル

RHELでのファイアウォール管理 – firewall-cmdを使った設定マニュアル

Red Hat Enterprise Linux (RHEL)では、firewalldを使用してファイアウォールを管理します。この記事では、firewall-cmdコマンドを使用してRHELのファイアウォールを効果的に設定し、管理する方法を詳しく説明します。初心者から上級者まで、RHELのセキュリティを強化したい管理者にとって有用な情報となるでしょう。

firewalldの基本概念

firewalldは、動的なファイアウォール管理を可能にするデーモンです。従来のiptablesと比較して、より柔軟で使いやすい設計となっています。firewalldの主な特徴は以下の通りです:

  • ゾーンベースの設定
  • 動的なルール変更(再起動不要)
  • サービスベースの設定
  • 永続的および一時的な設定の区別

firewalldの状態確認

まず、firewalldの現在の状態を確認します:

# systemctl status firewalld
# firewall-cmd --state

ゾーンの概念と管理

firewalldはゾーンを使用してネットワークの信頼レベルを定義します。デフォルトのゾーンには public, trusted, home などがあります。ゾーンの管理は以下のように行います:

# firewall-cmd --get-default-zone
# firewall-cmd --set-default-zone=home
# firewall-cmd --get-active-zones
# firewall-cmd --list-all-zones

サービスの追加と削除

特定のサービスを許可または拒否するには:

# firewall-cmd --zone=public --add-service=http --permanent
# firewall-cmd --zone=public --remove-service=ftp --permanent
# firewall-cmd --reload

ポートの開放と閉鎖

特定のポートを開放または閉鎖するには:

# firewall-cmd --zone=public --add-port=8080/tcp --permanent
# firewall-cmd --zone=public --remove-port=8080/tcp --permanent
# firewall-cmd --reload

ソースIPアドレスの管理

特定のIPアドレスからのアクセスを許可または拒否するには:

# firewall-cmd --permanent --zone=trusted --add-source=192.168.1.0/24
# firewall-cmd --permanent --zone=drop --add-source=10.0.0.1
# firewall-cmd --reload

フォワーディングとマスカレード

ポートフォワーディングとIPマスカレードの設定:

# firewall-cmd --zone=public --add-masquerade --permanent
# firewall-cmd --zone=public --add-forward-port=port=80:proto=tcp:toport=8080 --permanent
# firewall-cmd --reload

リッチルールの使用

より複雑なルールを設定するためのリッチルール:

# firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/24" service name="ssh" accept'
# firewall-cmd --reload

カスタムサービスの作成

新しいサービスを定義するには:

# firewall-cmd --permanent --new-service=myservice
# firewall-cmd --permanent --service=myservice --add-port=12345/tcp
# firewall-cmd --permanent --zone=public --add-service=myservice
# firewall-cmd --reload

ログの設定と分析

ファイアウォールのログを設定し、分析するには:

# firewall-cmd --set-log-denied=all
# firewall-cmd --reload
# journalctl -f -u firewalld

バックアップと復元

firewalldの設定をバックアップおよび復元するには:

# firewall-cmd --runtime-to-permanent
# firewall-cmd --permanent --get-zones > firewall-zones.txt
# firewall-cmd --permanent --get-services > firewall-services.txt
# firewall-cmd --permanent --zone=public --list-all > firewall-public-zone.txt

トラブルシューティング

ファイアウォールの問題をトラブルシューティングするための一般的な手順:

  1. ファイアウォールのログを確認する
  2. 一時的にファイアウォールを無効にして問題が解決するか確認する
  3. 特定のサービスやポートのルールを個別に確認する
  4. ネットワークインターフェースの割り当てを確認する

ベストプラクティス

RHELでfirewalldを使用する際のベストプラクティス:

  • デフォルトゾーンは最小限の許可で設定する
  • 不要なサービスやポートは常に閉じておく
  • 変更を加える前に現在の設定をバックアップする
  • 本番環境に適用する前にテスト環境で設定をテストする
  • 定期的にファイアウォールの設定を監査し、不要なルールを削除する

firewalldを使用したRHELのファイアウォール管理は、システムのセキュリティを強化する上で重要な役割を果たします。この記事で紹介した手法を適切に適用することで、より安全で堅牢なネットワーク環境を構築できます。