memo: CentOS7系のfirewalld

firewalld

CentOS6系までのiptablesの代わりに、7系からではfirewalldを用います。
中身はiptablesのままらしいです。

設定の操作はfirewall-cmdを用います。

バージョン

CentOS Linux release 7.5.1804 (Core)

共通操作

現在の設定の確認

firewall-cmd --list-all

こんな感じで出ます。

public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources:
  services: ssh dhcpv6-client
  ports:
  protocols:
  forward-ports:
  source-ports:
  icmp-blocks:

設定再読み込み

一時的な設定を破棄して、設定を再読み込みをするときは、

firewall-cmd --reload

systemctlでもいけます。

systemctl restart firewalld

各種設定

サービス追加

httphttpsなどの元からデフォルト値があるものは、 add-serviceで追加すると、対応するポート(80,443...)を開けてくれます。

firewall-cmd --add-service=http

ポート追加

それ以外の物は、ポート番号を指定して開ける事ができます。

firewall-cmd --add-port=1234/tcp

永続設定

firewalldが再起動した場合にも残る設定をしたいときは、--permanentをつけます。

firewall-cmd --add-port=1234/tcp --permanent

Zone

設定値をまとめたプロファイルのようななものです。
デフォルトではpublicになっていますが、 zoneごとに設定を変えて、異なるネットワークインターフェースに適用したりできます。

デフォルトゾーンの変更

# externalの初期値ではsshのみ許可されます
firewall-cmd --set-default-zone=external

設定値変更

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