[ホーム] -
[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