CentOS
centos7
firewalld
firewall-cmd

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

■言い訳

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

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

  ・設定確認方法
  ・"サービス名"、"ポート番号"、"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"より簡単だって聞いたけど、そうでも無いね・・・。