firewalldをインストールしているリバースプロキシやロードバランサー配下のWebサーバーに
HTTPリクエストが届かなかった場合に、firewalldが拒否しているのか、前段のサーバーが止めているのか把握しづらいことがある。
そこでfirewalldが拒否したログを出力するようにして、firewalldが拒否していることを確認できるようにする。
拒否ログの出力
firewalldは通信の接続を拒否した場合、ログは何も出力されない。
拒否した場合のログを残すには以下のコマンドを実行する。
$ sudo firewall-cmd --set-log-denied=all
上記コマンドにより、firewalldは通信の接続を拒否した場合、/var/log/messagesにログを出力するようになる。
Apr 22 04:59:31 ip-10-0-5-27 kernel: FINAL_REJECT: ↲
IN=eth0 OUT= MAC=0a:4b:a0:ec:7e:d7:0a:7a:6b:3e:2a:d1:08:00 ↲
SRC=xxx.xxx.xxx.xxx DST=yyy.yyy.yyy.yyy LEN=64 TOS=0x00 PREC=0x00 ↲
TTL=41 ID=0 DF PROTO=TCP SPT=58663 DPT=80 WINDOW=65535 RES=0x00 SYN URGP=0
設定の確認
設定状況を確認するには--get-log-deniedオプションを指定して以下のコマンドを実行する。
$ sudo firewall-cmd --get-log-denied
all
allならログを出力するように設定されている。offならログを出力しないように設定されている。
拒否ログの出力を停止
拒否ログの出力を停止するには以下のコマンドを実行する。
$ sudo firewall-cmd --set-log-denied=off
設定ファイルで拒否ログの出力を有効にする
設定ファイルでfirewalld起動時に拒否ログの出力を有効にするには/etc/firewalld/firewalld.confのLogDeniedの値をallに設定する。
LogDenied=all
上記のように設定しfirewalldを再起動すると有効になる。
\第一線のプログラマーの行動原理を学べる!/
