Posted at

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

More than 1 year has 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"より簡単だって聞いたけど、そうでも無いね・・・。