firewalld

NO IMAGE

ディストリビューション : CentOS7

アプリケーション : firewall(OS標準)

ここでは簡単な操作方法を説明する。CentOS7であれば既にインストール済みであるのでインストールの説明は省略します。

基本はfirewall-cmdコマンドを利用して設定していきます。

起動

systemctl start firewalld.service

停止

systemctl stop firewalld.service

起動確認

systemctl status firewalld.service
● firewalld.service - firewalld - dynamic firewall daemon
   Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)
   Active: active (running) since Tue 2018-05-08 21:00:15 JST; 10h ago
     Docs: man:firewalld(1)
 Main PID: 711 (firewalld)
   CGroup: /system.slice/firewalld.service
           └─711 /usr/bin/python -Es /usr/sbin/firewalld --nofork --nopid

May 08 21:00:14 test systemd[1]: Starting firewalld - dynamic firewall daemon...
May 08 21:00:15 test systemd[1]: Started firewalld - dynamic firewall daemon.
May 08 21:00:16 test firewalld[711]: WARNING: ICMP type 'beyond-scope' is not supported by the kernel for ipv6.
May 08 21:00:16 test firewalld[711]: WARNING: beyond-scope: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.
May 08 21:00:16 test firewalld[711]: WARNING: ICMP type 'failed-policy' is not supported by the kernel for ipv6.
May 08 21:00:16 test firewalld[711]: WARNING: failed-policy: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.
May 08 21:00:16 test firewalld[711]: WARNING: ICMP type 'reject-route' is not supported by the kernel for ipv6.
May 08 21:00:16 test firewalld[711]: WARNING: reject-route: INVALID_ICMPTYPE: No supported ICMP type., ignoring for run-time.

起動確認後、上記の内容が表示され、Active: active (running)が表示されていれば起動されています。また、WARNINGが表示されていますが、これはCentOSのバグなので無視しても正常動作しますが、毎回表示されて困る方は以下の回避方法があります。

回避方法

cd /usr/lib/firewalld/icmptypes
mv beyond-scope.xml beyond-scope.xml.original
mv failed-policy.xml failed-policy.xml.original
mv reject-route.xml reject-route.xml.original
systemctl restart firewalld.service
systemctl status firewalld.service

 

ゾーンに関するコマンド

初期状態では「eth0」に「publicが割り当て」られたゾーンとなる。通常利用であればこのままで問題はない。標準で9つのゾーン(追加は可能)が存在し、NICに対してゾーンの割り当てをおこないルールの管理をおこなう。

9つのうち変更できない特殊なゾーンは、

・drop
応答なく全てのコネクションをドロップします

・block
全てのコネクションをブロックします

・trusted
全てのコネクションを無条件に受け入れます。

マスカレードの利用であれば、

・external

割当ゾーンの確認

firewall-cmd --get-active-zones

全てのゾーンの確認

firewall-cmd --list-all-zones

NICに対してゾーンの変更 (例 publicからworkへ変更)

firewall-cmd --zone=work --change-interface=eth0 --permanent

指定したゾーンの確認

firewall-cmd --list-all --zone=public

 

サービスに関するコマンド

デフォルトで「SSH」「DHCPV6-CLIENT」の二つのサービスが登録されているが、IPv6を利用しなければDHCPV6-CLIENTは必要ないので削除しても問題はない。

サービスの削除(例 dhcpv6-clientをpublicから恒久的に削除)

firewall-cmd --remove-service=dhcpv6-client --zone=public --permanent
firewall-cmd --reloa

追加できるサービスの一覧

firewall-cmd --get-services

サービスの追加(例 httpsをpublicへ恒久的に追加)

firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --reload

ポート番号追加(例 8080ポート番号をpublicへ恒久的に追加)

firewall-cmd --add-port=8080/tcp --zone=public --permanent
firewall-cmd --reload

ポート番号削除(例 8080ポート番号をpublicから恒久的に削除)

firewall-cmd --remove-port=8080/tcp --zone=public --permanent
firewall-cmd --reload

恒久的ではなく一時的に設定をおこなうのであれば、–permanentを削除してコマンドを入力

設定の反映

firewall-cmd --reload

 

ログに関するコマンド

ログの出力先は、/var/log/messages

ログの出力オプション

・all

・unicast

・broadcast

・multicast

・off

ログの出力

firewall-cmd --set-log-denied all

ログの停止

firewall-cmd --set-log-denied off

 

例1 eth0をグローバルネットワーク網に繋げ、eth1をローカルネットワーク網に無条件で接続したい場合

eth0 = SSH,HTTP,HTTPS 3つの接続を許可

eth1 = ローカルネットワーク網の全てのコネクションを受け入れる

 

firewall-cmd --zone=trusted --change-interface=eth1 --permanent
firewall-cmd --add-service=http --zone=public --permanent
firewall-cmd --add-service=https --zone=public --permanent
firewall-cmd --reload
firewall-cmd --get-active-zone
public
  interfaces: eth0
trusted
  interfaces: eth1
firewall-cmd --list-all --zone=public --permanent
public (active)
  target: default
  icmp-block-inversion: no
  interfaces: eth0
  sources: 
  services: ssh http https
  ports: 
  protocols: 
  masquerade: no
  forward-ports: 
  source-ports: 
  icmp-blocks: 
  rich rules:

ファイヤーウォールカテゴリの最新記事