CentOS7 Firewall Rich Rule 設定方法 ( ポート指定 )

2021年11月28日





CentOS7 Firewall Rich Rule 設定方法 ( ポート指定 )

  • 目的
    • CentOS6 時代の iptables から変わり、 CentOS7 では
      firewalld に変わりました、これに伴い、設定の仕方が
      変わってきますので、そこら辺を一握り理解する事が
      今回の目的となってきます。
    • CentOS8 では、nftables に置き換わります。
      こうも変わると滅入りますね。
  • ゴール
    • Firewall リッチルールの記述の仕方を理解し、ルールの削除
      ・追加を行うことができる。 ( ポート指定 )
    • Firewall ルールのゾーン指定で設定したルール一覧を見ることができる。
  • 前提条件
    • CentOS7 をインストール済みでコマンド操作にある程度慣れていること。
    • 管理者権限ユーザで操作可能であること。

  • 1. Firewall public ゾーンルール一覧表示

[root@sakuramoti ~]# firewall-cmd --zone=public --list-all /*===============================================================*/ public (active) target: default icmp-block-inversion: no interfaces: eth0 sources: services: dhcpv6-client mysql ports: protocols: masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: rule family="ipv4" source address="220.106.242.202" port port="49213" protocol="tcp" accept rule family="ipv4" source address="0.0.0.0/0" service name="http" accept rule family="ipv4" source address="0.0.0.0/0" service name="https" accept /*===============================================================*/

私の環境では、すでにいくつかルールが入ってしまっていますが気にしないでください。
firewall-cmd コマンドを用いてルールの追加・挿入・各種操作を行っていきます。
このコマンドでは、 public ゾーンのルールを全て表示して下さいという意味になります。

firewalldでいうゾーンとは、ある程度のカテゴリとテンプレートという認識で O.K. です。
デフォルトでは、九つのゾーンが用意されており、自分で追加することもできます。
それぞれのゾーンには、それぞれ意味ががりますが、ここでは割愛します。

  • 2. Firewall にリッチルールを追加・削除する。

    • リッチルールとは・・・複雑なルール設定を行ないたい時などに主に使用します。
      例えば、接続元 IP を制限して接続させたいなど、よりセキュアな環境にできます。
  • 2.1. Firewall へのリッチルール追加

[root@sakuramoti ~]# firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="1194" protocol="udp" accept' /*===============================================================*/ success /*===============================================================*/

上記コマンド ポート指定permanent ( 恒久的 )
0.0.0.0/0 ( 全ての IP からアクセスを受ける ) から
1194/udpaccept 許可するという意味のコマンドになります。

今回追加するゾーンは、 public ゾーンなので、 ゾーンは、 public を指定しています。
また、ソースアドレスは、 IPv4 形式で指定をしていきますので、 rule family は、
IPv4 を指定している形となっています。
source address を適宜変更することで接続を絞る事が可能となっています。
[root@sakuramoti ~]# firewall-cmd --reload /*===============================================================*/ success /*===============================================================*/

firewall を reload し設定を 適用 させます。

[root@sakuramoti ~]# firewall-cmd --zone=public --list-all | grep 1194 | grep udp /*===============================================================*/ rule family="ipv4" source address="0.0.0.0/0" port port="1194" protocol="udp" accept /*===============================================================*/

先ほど、追加したリッチルールか適用されているかを上記コマンドで確認します。
ここでは、先ほど追加したルールが正常に追加されていることが確認できますね。
grep の部分は付加してもしなくてもどちらでも構いません。


  • 2.2. Firewall からリッチルール削除

[root@sakuramoti ~]# firewall-cmd --list-rich-rules /*===============================================================*/ rule family="ipv4" source address="220.106.242.202" port port="49213" protocol="tcp" accept rule family="ipv4" source address="0.0.0.0/0" service name="http" accept rule family="ipv4" source address="0.0.0.0/0" service name="https" accept rule family="ipv4" source address="0.0.0.0/0" port port="1194" protocol="udp" accept /*===============================================================*/

先ほど追加したリッチルールを上記コマンドで表示しています。
先ほど追加したリッチルールの行頭 rule から 行末 accept まで範囲選択してコピーします。
リッチルールだけ表示できるのでリッチルールを削除した時なんかに便利です。

[root@sakuramoti ~]# firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" source address="0.0.0.0/0" port port="1194" protocol="udp" accept' /*===============================================================*/ success /*===============================================================*/

先ほど、範囲選択しコピーしたリッチルールを
firewall-cmd –permanent –remove-rich-rule=’ここに貼り付けます'
こうすることで簡単に削除を行うことができます。
permanent 恒久的なオプションを付けるのを忘れずに(;д;)ノシ

[root@sakuramoti ~]# firewall-cmd --reload /*===============================================================*/ success /*===============================================================*/

firewall を reload し設定を 適用 させます。

[root@sakuramoti ~]# firewall-cmd --zone=public --list-all | grep 1194 | grep udp /*===============================================================*/ 出力なし /*===============================================================*/

先ほど、追加したリッチルールか適用されているかを上記コマンドで確認します。
ここでは、先ほど追加したルールが正常に削除されていることが確認できますね。


    3. まとめ

以上で一通りの設定は説明出来たかなと思います。
CentOS7 の firewall リッチルール設定すごいややこしいですよね(・ω・`; )
以下に筆者が参考にしたサイトを書いておきます。
大体の設定は参考文献で網羅されていますので罷業に有用です。