FirewallD とは1

2020/04/18

FirewallD とは

firewalldは、ネットワークコネクションやインターフェースの信頼度を定義するネットワーク/ファイアウォールのゾーンに対応した動的に管理可能なファイアウォールを提供します。IPv4とIPv6のファイアウォール設定とイーサネットブリッジに対応し、一時的・永続的な設定オプションを分けて保持します。ファイアウォールのルールを直接追加するサービスへのインターフェースとアプリケーションにも対応します。

CentOS 6 は iptables というパケットフィルタリング型のファイアウォール機能でセキュリティを高めていましたが、CentOS 7 からは iptables ではなく、firewalld がデフォルトのファイアウォールとして提供されるようになりました。

iptables は静的ファイアウォールで、設定の反映はファイアウォールの再起動が必要でしたが、firewalld は動的ファイアウォールとなっているため、そのような再起動やカーネルモジュールのリロードは必要ないようです。

ゾーンとは

firewalld ではゾーンと呼ばれる概念があり、デフォルトで 9 つのゾーンが用意されています。

  • drop
  • block
  • public
  • external
  • dmz
  • work
  • home
  • internal
  • trusted

これらをネットワークと結びつけて使います。 恐らくよく使うのは、「クライアント PC で、自宅の Wifi のゾーンは home で、それ以外のネットワークに接続するときは public」や、「サーバーで public をデフォルトとして、必要なサービスを許可していく」という形ではないかな?と思う。

設定ファイル

/usr/lib/firewalld の下がデフォルト設定のファイルがあります。

# ls /usr/lib/firewalld/*
/usr/lib/firewalld/icmptypes:
destination-unreachable.xml  echo-request.xml       redirect.xml              router-solicitation.xml  time-exceeded.xml
echo-reply.xml               parameter-problem.xml  router-advertisement.xml  source-quench.xml

/usr/lib/firewalld/services:
RH-Satellite-6.xml  ftp.xml                kerberos.xml     ms-wbt.xml    pmwebapis.xml     smtp.xml
amanda-client.xml   high-availability.xml  kpasswd.xml      mysql.xml     pop3s.xml         ssh.xml
bacula-client.xml   http.xml               ldap.xml         nfs.xml       postgresql.xml    telnet.xml
bacula.xml          https.xml              ldaps.xml        ntp.xml       proxy-dhcp.xml    tftp-client.xml
dhcp.xml            imaps.xml              libvirt-tls.xml  openvpn.xml   radius.xml        tftp.xml
dhcpv6-client.xml   ipp-client.xml         libvirt.xml      pmcd.xml      rpc-bind.xml      transmission-client.xml
dhcpv6.xml          ipp.xml                mdns.xml         pmproxy.xml   samba-client.xml  vnc-server.xml
dns.xml             ipsec.xml              mountd.xml       pmwebapi.xml  samba.xml         wbem-https.xml

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

システム設定は /etc/firewalld の下に配置され、デフォルト設定と同じディレクトリ配置になっています。

読み込み順序はデフォルト設定が読み込まれた後、システム設定が読み込まれ、同じ設定ファイルがあったらシステム設定で上書きされます。

例. デフォルト設定の挙動を変える時

デフォルト設定の挙動を変える(カスタマイズする)時は、デフォルトの設定ディレクトリからシステム設定ディレクトリへ対象ファイルをコピーして書き換える。

例えば、HTTP の設定をカスタマイズするときには、

$ sudo cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services

として、コピー先の /etc/firewalld/services/http.xml を編集する。

例. 新しい設定を作成する時

/etc/firewalld の下に作成する。

実際は、デフォルトの挙動を変えるより、既存のポートから変更して新しいサービス用の設定を作ると思う。例えば、新しい Web サービス用の設定を作成するとして、

$ sudo cp /usr/lib/firewalld/services/http.xml /etc/firewalld/services/newservice.xml

として、コピー先の /etc/firewalld/services/newservice.xml を編集して使うパターンが多いと思う。

設定方法

Fedora Linux の GUI としてお馴染みの firewall-config や、コマンドラインツールとして firewall-cmd で設定することができます。

参考サイト