【Linux】firewalldの設定と確認方法まとめ

Linux

firewalldの概要

RHEL7の公式ドキュメントからfirewalldの概要を引用します。

firewalld は、ゾーン および サービス の概念を使用して、トラフィック管理を簡素化します。ゾーンは、事前定義したルールセットです。ネットワークインターフェイスおよびソースをゾーンに割り当てることができます。許可されているトラフィックは、コンピューターが接続するネットワークと、このネットワークが割り当てられているセキュリティーレベルに従います。ファイアウォールサービスは、特定のサービスに着信トラフィックを許可するのに必要なすべての設定を扱う事前定義のルールで、ゾーンに適用されます。

https://docs.redhat.com/ja/documentation/red_hat_enterprise_linux/7/html/security_guide/sec-using_firewalls

firewalldの設定をする際は、firewalld.serviceをsystemctl restart firewalldコマンドで再起動せずともfirewalldコマンドを実行して設定を読み込むだけで問題ありません。

firewalld は、D-Bus インターフェイスを使用して動的にカスタマイズ可能なホストベースのファイアウォールを提供するファイアウォールサービスデーモンです。ルールが変更するたびに、ファイアウォールデーモンを再起動しなくても、ルールの作成、変更、および削除を動的に可能にします。

firewalldのサービス起動

firewalldの起動状態を確認します。

systemctl status firewalld

起動していなければ以下のコマンドでfirewalldを起動します。

systemctl start firewalld

停止する場合は以下。

systemctl stop firewalld

再起動する場合は以下。

systemctl restart firewalld

firewalldの通信許可設定を確認する

firewall-cmd --list-all-zones
zone名説明
publicデフォルトで使用されるルール
work会社のネットワークで想定されるルール (信頼できるネットワーク用)
home家庭内での利用を想定したルール (workより緩い)
internalファイアウォールを構築するのに使うルール。内側のインタフェース用
externalファイアウォールを構築するのに使うルール。外側のインタフェース用
dmz ファイアウォールを構築するのに使うルール。DMZのインタフェース用
block送信の戻りパケットだけを許可して、受信パケットを全て拒否するルール
drop送信の戻りパケットだけを許可して、受信パケットを全て破棄するルール
trusted全ての通信を許可するルール
https://qiita.com/suzutsuki0220/items/4a62cc0e676a80ed79f1

以下のコマンドでアクティブになっているゾーンを確認します。

# firewall-cmd --get-active-zones

以下のコマンドでデフォルトのゾーンを確認します。

# firewall-cmd --get-default-zone

httpとhttpsの通信をfirewalldで許可する

以下のコマンドを実行してfirewalldでhttpとhttpsの通信を許可します。–zoneにはpublicを指定します。–permanentをつけることで永続的に設定できます。–permanentオプションをつけない場合は再起動した場合に設定が削除されます。

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

なお、systemctl restart firewalldコマンドでfirewalldを再起動する必要はありません。

firewalld は、D-Bus インターフェイスを使用して動的にカスタマイズ可能なホストベースのファイアウォールを提供するファイアウォールサービスデーモンです。ルールが変更するたびに、ファイアウォールデーモンを再起動しなくても、ルールの作成、変更、および削除を動的に可能にします。

httpが許可されていることを以下のコマンドで確認します。以下のコマンドの出力結果にhttpとhttpsが含まれていれば問題なくhttpとhttpsの通信がfirewalldで許可されています。

# firewall-cmd --list-services

httpとhttpsの通信をfirewalldで許可しない状態に戻すに配下のコマンドを実行します。

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

以下のコマンドを実行して出力結果にhttpとhttpsが存在していないことを確認します。

# firewall-cmd --list-services

ポート番号を指定してfirewalldで通信を許可する

以下のコマンドを実行して特定の通信のポート番号を許可します。

以下2コマンドは/udpと/tcpの違いがあります。

# firewall-cmd --add-port=80/udp --zone=public --permanent
# firewall-cmd --add-port=80/tcp --zone=public --permanent

ポート番号の範囲を指定して通信を許可するには以下のようにコマンドを実行します。

# firewall-cmd --add-port=138-139/udp --zone=public --permanent

追加した設定を削除するには–add-portを–remove-portに変更します。

# firewall-cmd --remove-port=80/udp --zone=public --permanent
# firewall-cmd --remove-port=80/tcp --zone=public --permanent

参考資料

本記事の作成に使用した参考資料を掲載します。

firewalldを使ったファイアーウォールの設定 - Linux技術者認定 LinuC | LPI-Japan
Linuxのコラムを掲載しています。LinuCは、クラウド・DX時代に活躍するエンジニアに求められるLinuxを中心とした技術や知識を身につけることができるLinux技術者認定試験。出題範囲に含まれる技術解説動画やサンプル問題、教科書ダウン...
第1章 firewalld の使用および設定 | ファイアウォールおよびパケットフィルターの設定 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
第1章 firewalld の使用および設定 | ファイアウォールおよびパケットフィルターの設定 | Red Hat Enterprise Linux | 9 | Red Hat Documentation
タイトルとURLをコピーしました