概要
firewall-cmd は firewalld サービスと連携してシステムのネットワークトラフィックを制御します。永続的なルールとランタイムルールを区別して適用でき、さまざまなネットワークゾーン(zone)を通じて柔軟なセキュリティポリシーを提供します。これにより、サーバーのセキュリティを強化し、特定のサービスへのアクセスを許可または拒否できます。
主な機能
- ポートおよびサービス管理(追加/削除)
- ネットワークゾーン(Zone)の設定および管理
- IPアドレスおよびネットワークベースのルール(Rich Rules)
- ランタイムおよび永続ルールの適用
- マスカーレード(Masquerading)およびポートフォワーディング設定
主なオプション
firewall-cmd はさまざまなオプションを通じてファイアウォールルールを照会および設定できます。
ルールの適用と管理
情報照会
生成されたコマンド:
コマンドを組み合わせてみてください。
説明:
`firewall-cmd` コマンドを実行します。
これらのオプションを組み合わせて、AIと一緒に仮想的にコマンドを実行してみてください。
使用例
firewall-cmd を使用してファイアウォールルールを設定および管理するさまざまな例です。
現在アクティブなゾーンとルールの確認
firewall-cmd --list-all
デフォルトゾーン(public)の現在のランタイム設定をすべて確認します。
特定のゾーンの全設定確認
firewall-cmd --zone=internal --list-all
指定されたゾーン(例:internal)の全設定を確認します。
HTTPサービス追加(ランタイム)
sudo firewall-cmd --zone=public --add-service=http
public ゾーンに HTTP サービスを一時的に許可します。再起動すると消えます。
HTTPサービス追加(永続的)
sudo firewall-cmd --zone=public --add-service=http --permanent
public ゾーンに HTTP サービスを永続的に許可します。変更を適用するには --reload が必要です。
ファイアウォールルールのリロード
sudo firewall-cmd --reload
永続的に設定されたすべてのルールを現在のランタイムファイアウォールに適用します。
ポート 8080/tcp 追加(永続的)
sudo firewall-cmd --zone=public --add-port=8080/tcp --permanent
public ゾーンに TCP 8080 ポートを永続的に許可します。適用後リロードが必要です。
SSHサービス削除(永続的)
sudo firewall-cmd --zone=public --remove-service=ssh --permanent
public ゾーンから SSH サービスを永続的に削除します。適用後リロードが必要です。
全永続ルール適用
sudo firewall-cmd --reload
永続的に変更されたすべてのルールを即座に適用します。
インストール
firewall-cmd は firewalld パッケージの一部です。ほとんどの最新 Linux ディストリビューションにはデフォルトでインストールされているか、簡単にインストールできます。
CentOS/RHEL/Fedora
sudo dnf install firewalld
Red Hat 系 Linux で firewalld をインストールします。
Ubuntu/Debian
sudo apt install firewalld
Debian 系 Linux で firewalld をインストールします。
サービス開始と有効化
sudo systemctl start firewalld
sudo systemctl enable firewalld
インストール後、firewalld サービスを開始し、システム起動時に自動実行されるように有効化します。
ヒントと注意点
firewall-cmd 使用時の注意点と役立つヒントです。
ランタイム vs 永続ルール
- `--permanent` オプションなしでは、現在のセッションにのみルールが適用され、再起動すると消えます。
- 永続的に適用するには `--permanent` を使用した後、`firewall-cmd --reload` コマンドで変更を適用する必要があります。
ゾーン(Zone)の理解
- firewalld はネットワークインターフェースを複数のセキュリティゾーンに割り当てて管理します。各ゾーンは異なるセキュリティレベルを持つことができます。
- デフォルトゾーンは `public` で、ほとんどの外部接続に使用されます。`home`, `internal`, `trusted` など、さまざまなゾーンがあります。
サービス名の使用
- ポート番号(例:80/tcp)の代わりに `http`, `https`, `ssh` のようなあらかじめ定義されたサービス名を使用する方が、可読性と管理の利便性の面で優れています。
- `firewall-cmd --get-services` コマンドで利用可能なサービスの一覧を確認できます。
バックアップとテスト
- 重要な変更を行う前に、`firewall-cmd --list-all --zone=<zone>` コマンドで現在の設定を記録しておくことをお勧めします。
- 変更適用後、該当サービスが正常に動作するか必ずテストしてください。