Help us understand the problem. What is going on with this article?

CentOS7でのFirewalld設定(ほぼコマンド例)

More than 3 years have passed since last update.

■言い訳

 丁寧に解説してくれてるサイトはたくさんあるけど、ちょっと長くて目的のコマンドが
 見つけ辛い・・・。

 詳細なあとで時間があるときに自分で調べるから、とにかく、

  ・設定確認方法
  ・"サービス名"、"ポート番号"、"IPアドレス"ベースでの許可/削除コマンド
  ・複数条件で許可設定する場合のコマンド

 上記だけを至急知りたい!

 という落着きが無い私のためのページ。
 (ほかにもこういうタイプの人居ます・・、よね・・・?)

■ここにはこんなことを記載しているよ

 CentOS7での、Firewalldの

 ①設定確認方法
 ②"サービス名"ベースでの許可/削除コマンド
 ③"ポート番号"ベースでの許可/削除コマンド
 ④"送信元IPアドレス"ベースでの許可/削除コマンド
 ⑤"宛先IPアドレスベース"や"複数条件"での許可/削除コマンド

■環境

 CentOS 7.3.1611 (Core)

■各種コマンド

  ※"< >"の、<サービス名>や<設定/削除したいゾーン名>は必須項目。

  ※(--permanent)は任意。(--permanent)を入力することで、恒久的な設定となるが、
   その場合、設定を有効にするためには、別途"firewall-cmd --reload"が必要となる。

   (--permanent)を付けない場合は、一時的な設定となり、即時反映。
   ただし、再起動と共に消える。

 ①設定確認方法

  個別にゾーンを確認するコマンドもあるけど、覚えてられない!という人は、
  とにかくこれだけ覚えていれば設定確認は問題無し。
  
  [root@onaka-suita ~]# firewall-cmd --list-all-zones

 ②"サービス名"ベースでの 許可/削除 コマンド

  ・許可:
  [root@onaka-suita ~]# firewall-cmd --add-service=<サービス名> --zone=<設定したいゾーン名> (--permanent)

  例:「public」ゾーンに、"http"サービスを恒久的に許可する場合
  [root@onaka-suita ~]# firewall-cmd --add-service=http --zone=public --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success

  ・削除:
  [root@onaka-suita ~]# firewall-cmd --remove-service=<サービス名> --zone=<削除したいゾーン名> (--permanent)

  例:「public」ゾーンから、"http"サービスの許可設定を恒久的に削除する場合
  [root@onaka-suita ~]# firewall-cmd --remove-service=http --zone=public --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success

 ③"ポート番号"ベースでの 許可/削除 コマンド

  ・許可:
  [root@onaka-suita ~]# firewall-cmd --add-port=<ポート番号/tcp or udp> --zone=<設定したいゾーン名> (--permanent)

  例:「public」ゾーンにて、ポート番号"8080"番(TCP)を恒久的に許可する場合
  [root@onaka-suita ~]# firewall-cmd --add-port=8080/tcp --zone=drop --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success

  ・削除:
  [root@onaka-suita ~]# firewall-cmd --remove-port=<ポート番号/tcp or udp> --zone=<削除したいゾーン名> (--permanent)

  例:「public」ゾーンから、ポート番号"8080"番(TCP)の許可設定を恒常的に削除する場合
  [root@onaka-suita ~]# firewall-cmd --remove-port=8080/tcp --zone=public --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success

 ④"送信元IPアドレス"ベースでの 許可/削除 コマンド

  ・許可:
  [root@onaka-suita ~]# firewall-cmd --add-source= --zone=<設定したいゾーン名> (--permanent)

  例:「public」ゾーンにて、送信元IPアドレスが"192.168.1.0/24"の範囲のNWを恒久的に許可したい場合
  [root@onaka-suita ~]# firewall-cmd --add-source=192.168.1.0/24 --zone=public --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success

  ・削除:
  [root@onaka-suita ~]# firewall-cmd --remove-source= --zone=<設定したいゾーン名> (--permanent)

  例:「public」ゾーンから、送信元IPアドレスが"192.168.1.0/24"の許可設定を恒久的に削除する場合
  [root@onaka-suita ~]# firewall-cmd --remove-source=192.168.1.0/24 --zone=drop --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success

 ⑤複数条件での 許可/削除 コマンド

  "宛先IPアドレス"ベースや、複数条件で通信を許可する設定を入れる場合、
  上記までとは異なり、リッチルールという少し面倒なコマンドを入力する必要がある。

  設定例として、一部の例を下部に記載もしておきますが、リッチルールの書式や
  詳細については、以下のページを参考としていただくのが分かりやすいのではないかと
  思います。(リンク先の真ん中ぐらいにあります。)

  CentOS7徹底入門 -firewalld- 2-2

  このルールの書式も、上記ページより転載させていただきました。
rule.png

 以下、いくつか設定例を記載します。

  ・許可:

  例:「public」ゾーンにて、宛先IPアドレスが"192.168.50.1"だけの通信を許可する場合
  [root@onaka-suita ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 destination address=192.168.50.1/32 accept' --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success
  例:「public」ゾーンにて、"192.168.153.0/24"のNW帯だけ"http"の通信を許可する場合
  [root@onaka-suita ~]# firewall-cmd --zone=public --add-rich-rule='rule family=ipv4 source address="192.168.153.0/24" service name=http accept' --permanent

  ・削除:

  例:「public」ゾーンから、"192.168.50.1"宛ての許可設定を恒久的に削除したい場合
  [root@onaka-suita ~]# firewall-cmd --zone=public --remove-rich-rule='rule family=ipv4 destination address=192.168.50.1/32 accept' --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success
  例:「public」ゾーンから、"192.168.153.0/24"のNW帯だけ"http"の許可設定を削除する場合
  [root@onaka-suita ~]# firewall-cmd --zone=public --remove-rich-rule='rule family=ipv4 source address="192.168.153.0/24" service name=http accept' --permanent
  success
  [root@onaka-suita ~]# firewall-cmd --reload
  success

  削除コマンドは、許可コマンドより若干楽に入力する方法があり、
  まず、"firewall-cmd --permanent --list-rich-rules"というコマンドを入力する。  

  [root@onaka-suita ~]# firewall-cmd --permanent --list-rich-rules
  rule family="ipv4" destination address="192.168.50.0/24" accept
  rule family="ipv4" source address="192.168.153.0/24" service name="http" accept

  すると、上記のように現在設定されているrich-rulesが表示されるため、消したいrich-rulesをコピーして、
  
  [root@onaka-suita ~]# firewall-dmc --zone=public --remove-rich-rule='(ここにコピーしたものを貼り付け)' --permanent

  で、コマンドを作成することが可能。

あとがき

 "firewalld"は、前までの"iptables"より簡単だって聞いたけど、そうでも無いね・・・。

t-morisoba
自分が忘れないため、今後、流用できるためのメモとして利用。 他の誰の役にも立たないどころか、邪魔となる可能性もあるかも。すまぬぬぬです。
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