[ホーム] - [Redhat Linux 7 FAQ 一覧] - [firewalld まとめ | CentOS7]



firewalld まとめ | CentOS7

環境:Redhat Enterprise linux 7(EL)




1.初めに


・CentOS6までは iptablesでパケットフィルタを行っていたが、CentOS7からは「Firewalld」が初期状態で有効となっている。
・CentOS7ではiptables、firewalld のどちらも使用可能だが、両方同時には使用できない。
・firewalldもiptablesも実態はnetfilterを使用している。

2.firewalldの考え方



原則は以下の2ステップ。

(1)事前にゾーンを定義する
(2)nic ごとにゾーンを結びつける

ネットワークの危険度などを勘案し、ゾーン及びそのゾーンで許可する通信を定義し、そのNICが属するネットワークで最適なゾーンを割り当てる。
ゾーンは新規に作成することもできる。

デフォルトのゾーンとは例えばNICでゾーンを指定していない場合などコマンドで割り当てられるゾーン。
ゾーンは全て明示してコマンドを実行する場合は、デフォルトという概念は使用しない。(設定ミス防止のためゾーン名を明示することを推奨する。)

・アクティブゾーンとは現在有効となっているゾーン。恐らく、NICに割り当てが行われ、実システムで有効なゾーンということ。
・デフォルトではoutboundは全てOK、inboundは全てNGとなっているらしい。

・ルールには「単純なルール」と「リッチルール」がある。「リッチルール」ではIPごとにポートを設定するなど細かい設定が可能。

「単純なルール」では以下が設定可能

sources:
services:
ports:
protocols:
masquerade:
forward-ports:
sourceports:
icmp-blocks:

3.保存方法



・設定したゾーンはゾーンごとに以下のファイルに保管されている。

/etc/firewalld/zones/*.xml

・コマンドラインツールを使用する。
firewall-cmd

・GUIツールでも設定が可能

firewall-config


--permanentを付けないと一時的な設定となる。reload後に無効となってしまう。
--permanentは逆に永遠に設定でreload後に反映。コマンド実行直後は反映されない。

逆に一時的なメモリ上のルールを保存するには、以下のコマンドを実行する。
#firewall-cmd --runtime-to-permanent


--direct オプションで直接ルールを追加することが可能。(昔のiptablesのように)

・デフォルトで定義されているサービスは以下に保管されている。
/usr/lib/firewalld/services/


4.コマンド


主に以下のようなコマンドが存在する。

(1)状態確認
firewall-cmd --state

(2)ゾーン一覧を表示 (Active)
firewall-cmd --list-all

(3)定義済の全てのゾーンを表示
firewall-cmd --list-all-zone

(4)デフォルトのゾーンを確認
# firewall-cmd --get-default-zone
public


(6)設定をリロード。

firewall-cmd --reload

(*)--permanentを指定した場合はreloadいないと反映されない。
逆に--directはすぐに反映されるが、reloadすると設定がなくなる。


(7)NIC割り当てゾーンの確認
・firewall-cmd --list-allでインターフェースを確認する。
そのインターフェースがどのゾーンに定義されているか確認する。


(8)新規ゾーンを作成
・firewall-cmd --permanent --new-zone=myzone
success


・firewall-cmd --reload
success

(9)デフォルトのゾーンを変更
# firewall-cmd --set-default-zone=myzone

(*)reload しないと、"firewall-cmd --list-all-zone" で表示されない。

(10)アクティブなゾーンを表示
# firewall-cmd --get-active-zones

・firewall-cmd --list-all-zone

・インターフェースをゾーンに適用
firewall-cmd --zone=myzone --change-interface=ens192
The interface is under control of NetworkManager, setting zone to 'myzone'.
success

(11)
通常のルール
・サービス一覧の表示
# firewall-cmd --list-services --zone=myzone

・サービスの追加
firewall-cmd --permanent --zone=myzone --add-service=ssh

(*)サービス一覧に登録されている必要あり。

・サービスの削除
# firewall-cmd --permanent --remove-service=ssh --zone=myzone
(*)リモートから接続している場合など、reloadした瞬間に接続できなくなったりするので注意。

(12)
リッチルール

・ポートとIPをセットで設定する[リッチルール]

firewall-cmd --permanent --zone=public --add-rich-rule=' rule family="ipv4" source address="10.0.0.1/32" port protocol="tcp" port="22" accept'

・リッチルールの一覧を表示
firewall-cmd --permanent --zone=public --list-rich-rules

・リッチルールを削除
firewall-cmd --permanent --zone=myzone --remove-rich-rul='rule xxxxxxxxxxxxxx'

(*)'rule xxxxxxxxxxxxxx' は firewall-cmd --list-rich-rulesで表示されたままを出力。

・sshを許可
firewall-cmd --permanent --add-service=ssh --zone=myzone


Whiteリスト方式


恐らく、単純ルールもリッチルールも指定しないと、誰も接続できない。その状態で許可する通信を入れていく。

・とりあえず ssh を許可する。

#firewall-cmd --permanent --zone=myzone --add-service=ssh


ログルール追加



#firewall-cmd --permanent --zone=myzone --add-rich-rule=' rule family="ipv4" source address="10.0.0.0/8" port protocol="tcp" port="21" log prefix="firewalld" level="info" accept'


accept・・・受け入れ
drop・・・応答なし
reject・・・相手に拒否の通知


ルールを削除
#firewall-cmd --permanent --zone=myzone --remove-rich-rul='rule xxxxxxxxxxxxxx'






(*)本ページは CentOS 7.2以後を想定しています。

最終更新日:2017/12/19



[ホーム] - [ Redhat Linux 7 FAQ 一覧]


本サイト内掲載されている情報は、著作権法により保護されています。いかなる場合でも権利者の許可なくコピー、配布することはできません。 このページはリンクフリーです。(このページへの直接リンクも可能です。) Copyright(c) tooljp.com 2007-2018