Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

firewall - CentOS7

More than 1 year has passed since last update.

■ゾーン

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

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

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

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

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

<ゾーン名>にblockを指定してみると、
image.png
ゾーン「block」には何も所属していないことがわかる。

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

firewall-cmd --list-all-zones

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

firewall-cmd --get-services

image.png


3.変更してみる

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

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

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

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

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

image.png

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

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

image.png
↑ZONEの部分を変更。

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

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

httpを追加してみよう。
image.png

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

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

image.png


4.permanentオプション

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

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

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

fiewall-cmd --reload

とする。


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

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

ls /usr/lib/firewalld/services/
leomaro7
AWS 認定 ソリューションアーキテクト – アソシエイト AWS 認定 SysOps アドミニストレーター – アソシエイト AWS 認定 デベロッパー – アソシエイト AWS 認定 クラウドプラクティショナー Linuc1
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away