RedHat Enterprise Linux 9 ( RHEL9 ) で firewalld のログ (deny) を有効・無効にする





RHLE 9 のファイアウォールデーモンである firewalld で拒否された (denyされた) 通信のログ出力の有効・無効を

切り替えるコマンドは、以下の通り。

まずは、設定がどうなっているか確認する。

# firewall-cmd --get-log-denied
off

上の例では、off と出力されたので、現在、無効になっていることが確認できた。

では、当該サーバ向けのユニキャスト通信で拒否された通信のログの出力を有効にしてみる。

# firewall-cmd --set-log-denied=unicast
success

設定が変更されたか確認してみる。

# firewall-cmd --get-log-denied
unicast

これで、ユニキャスト通信の内、firewalld が拒否した通信のログが出力されるようになった。

他にも、「all」「multicast」「broadcast」が指定可能。

unicast 以外の拒否した通信のログを出力してしまうと、

ネットワーク機器のマルチキャスト通信などを拒否してログを出力してしまうので、

ログが大量になってしまう可能性がある。

必要な時にだけ有効にすることをおすすめする。

ログの出力を有効にしたら、実際のログを見てみる。

firewalld が拒否したログは、/var/log/messages に出力されている。

# tail /var/log/messages
Mar 5 15:29:59 testhost kernel: filter_IN_public_REJECT: IN=ens33 OUT=MAC=00:50:56:11:22:33:44:55:66:77:88:99:aa:bb SRC=1.1.1.1 DST=2.2.2.2 LEN=512 TOS=0x00 PREC=0x00 TTL=119 ID=36720 DF PROTO=TCP SPT=60066 DPT=80 WINDOW=64240 RES=0x00 SYN URGP=0

送信元 IP アドレス (SRC) が 1.1.1.1 から、宛先 IP アドレス (DST) が 2.2.2.2 に対して、

プロトコル (PROTO) が TCP で、送信元ポート (SPT) が 60066 で、宛先ポート (DPT) の 80 に対して通信が届いて、

firewalld で拒否 (REJECT) したことが分かる。

testhost(2.2.2.2) 上で、http(80/tcp) が firewalld で許可されていないため拒否している。

http(80/TCP) を許可するようにする方法はこちらを参照。