firewalld のメモ書き

概要

CentOS7 で導入された firewalld のメモ書き

firewalld のメリット

  • ダイナミックに動作するので,ルール変更時などに通信を切断しなくて良い
  • ステートフルパケットインスペクションが可能
  • Zeroconf に対応

firewalld のゾーン

標準で以下の9つのゾーンが定義されている.

  1. drop
  2. block
  3. public
  4. external
  5. dmz
  6. work
  7. home
  8. internal
  9. trusted

各ゾーンのデフォルト設定ファイルは /usr/lib/firewalld/zones に格納されている.
実際に,設定をする際は firewall-cmd コマンドなどで /etc/firewalld/zones 配下のファイルを変更する.

# pwd
/usr/lib/firewalld/zones
# ls
block.xml  dmz.xml  drop.xml  external.xml  home.xml  internal.xml  public.xml  trusted.xml  work.xml

# pwd
/etc/firewalld/zones
# ls
public.xml  public.xml.old

設定ファイルの参照順序

以下の順番で参照される

  1. /etc/firewalld 配下
  2. /usr/lib/firewalld 配下

firewalld の起動と停止など

// 状態確認
# systemctl status firewalld

// 起動
# systemctl start firewalld

// 終了
# systemctl stop firewalld

// 設定ファイルの読み込み
# systemctl reload firewalld

// 有効にする
# systemctl enable firewalld

// 無効にする
# systemctl disable firewalld

// disable よりも強い無効化
# systemctl unmask firewalld

// unmask の取り消し
# systemctl mask firewalld

ゾーンとその設定の確認方法

// 現在のゾーンを確認する
# firewall-cmd --get-active-zone
public
  interfaces: enp0s25

// ゾーンの設定を確認する
# firewall-cmd --zone=public --list-all
public (default, active)
  interfaces: enp0s25
  sources: 
  services: dhcpv6-client ssh
  ports: 5000/tcp
  masquerade: no
  forward-ports: 
  icmp-blocks: 
  rich rules: 

ゾーンにパケットの設定をする

// 5000番ポートを恒久的に通信を許可する
# firewall-cmd --zone=public --add-port=5000/tcp --permanent

// 恒久的にサービスを追加する
# firewall-cmd --zone=public --add-service=http --permanent