firewall - CentOS7


■ゾーン

ちょっと始める前にゾーンという概念について!

firewalldではゾーンという概念がある。
要するに分類みたいなもの。
このゾーンをNIC毎に適応して運用する。
デフォルトでは9種類のゾーンが存在している。

項目 内容
drop 全てのパケットを破棄する。内部から外部へのパケットは許可されるが、返信されてきたパケットも破棄してしまうので実質的に通信不可となる。
block 外部からのパケットは破棄される。内部からの通信パケットの返信は許可される。
public デフォルトでは「ssh」と「dhcpv6-client」のみが許可されている。
external デフォルトでは「ssh」のみ許可される。naptが有効になる。
dmz デフォルトでは「ssh」のみ許可されている。
work デフォルトでは「dhcpv6-client」と「ipp-client」と「 ssh」が許可される。
home デフォルトでは「dhcpv6-client」と「ipp-client」と「mdns」と「samba-client」と「ssh」が許可される。
internal デフォルトでは「dhcpv6-client」と「ipp-client」と「mdns」と「samba-client」と「ssh」が許可される。
trusted 全てのパケットが許可される。

1.サービスの有効化と確認

基本的にはデフォルトで有効になっている。

systemctl enable firewalld
systemctl start firewalld

動作状況を確認

firewall-cmd --state

もしくは

systemctl status firewalld

2.現状の確認

現状どうなっているか確認するには、

firewall-cmd --list-all


現在、NIC「enp0s3」はゾーン「public」に所属していることがわかる。

ゾーンを指定して確認するには、

firewall-cmd --zone=<ゾーン名> --list-all

<ゾーン名>にblockを指定してみると、

ゾーン「block」には何も所属していないことがわかる。

すべてのゾーンの設定を確認するには以下のとおりだ。

firewall-cmd --list-all-zones

設定時に指定できるサービス一覧を表示する。

firewall-cmd --get-services


3.変更してみる

デフォルトゾーンの変更。

firewall-cmd --set-default-zone=<ゾーン>

デフォルトのゾーンをblockに変更してみた。

インターフェイスのゾーンを変更するには以下の通りだ。

firewall-cmd --zone=<ゾーン> --change-interface=<インターフェイス>

恒久的にインターフェイスのゾーンを変更したいときは、インターフェイスそのものの記述を変えてしまう。

vi /et/sysconfig/network-scripts/ifcfg-<インターフェイス名>


↑ZONEの部分を変更。

ゾーンへサービスを追加する場合は、以下の通りだ。

firewall-cmd --zone=<ゾーン> --add-service=<サービス>

httpを追加してみよう。

今度は逆に削除してみよう。

firewall-cmd --zone=public --remove-service =http


4.permanentオプション

再起動をするともとに戻ってしまうので、恒久的に設定を反映させるのが、permanentオプションだ。

firewall-cmd --zone=public --add-service=http --permanent

設定を反映させるには、その後に、

fiewall-cmd --reload

とする。


5.元のサービス定義ファイルの場所など

デフォルトで用意されているサービス一覧

ls /usr/lib/firewalld/services/