Are you trying to enable FirewallD logging for denied packets on Linux?
This guide is for you.
FirewallD logs are located at /var/log/firewalld. To get debug messages, you need to run it with --debug or --debug=2.
Here at Ibmi Media, as part of our Server Management Services, we regularly help our Customers to perform FirewallD related queries.
In this context, we shall look into how to enable FirewallD logging for denied packets on Linux.
How to enable FirewallD logging for denied packets on Linux ?
Here, you will learn the process to enable the FirewallD logging.
In the /etc/firewalld/firewalld.conf file, we can set LogDenied options.
Another option is to use the firewall-cmd command. After enabling it, the Linux system will log all the packets that are rejected or dropped by FirewallD.
There are multiple methods to enable FirewallD logging.
They are:
i. firewalld.conf method
ii. firewall-cmd method
iii. firewall-config method
1. Configuring logging for denied packets {firewalld.conf method}
First, we edit the /etc/firewalld/firewalld.conf:
sudo vi /etc/firewalld/firewalld.conf
In this file, we find the below code:
LogDenied=off
Then we replace it with below:
LogDenied=all
After that, we save and close the file.
Then we restart the FirewallD service by running the below command:
sudo systemctl restart firewalld.service
The LogDenied option is turned off by default.
The LogDenied option turns on logging rules right before reject and drop rules in the INPUT, FORWARD, and OUTPUT chains for the default rules and also final reject and drop rules in zones.
The possible values are all, unicast, broadcast, multicast, and off.
For shell scripts we can use the combination of the grep command and sed command as below:
grep '^LogDenied' /etc/firewalld/firewalld.conf
grep -q -i '^LogDenied=off' /etc/firewalld/firewalld.conf && echo "Change it" || echo "No need to change"
grep -q -i '^LogDenied=off' /etc/firewalld/firewalld.conf | sed -i'Backup' 's/LogDenied=off/LogDenied=all/' /etc/firewalld/firewalld.conf
2. Firewalld enable logging {firewall-cmd method} on Linux
First, we find and list the actual LogDenied settings:
sudo firewall-cmd --get-log-denied
Next, we change the actual LogDenied settings:
sudo firewall-cmd --set-log-denied=all
After that, we verify it by running the below command:
sudo firewall-cmd --get-log-denied
3. Enable FirewallD log using a GUI configuration tool {firewall-config method}
Fedora or CentOS or OpenSUSE desktop users can try the GUI method.
First, we open the terminal window and then open the FirewallD GUI configuration tool. In other words, start firewall-config as follows:
firewall-config
Now, we find and click the “Options” menu and select the “Change Log Denied” option. Here, we choose the new LogDenied setting from the menu and click OK.
How to view denied packets?
In order to view the denied packets, we run the below command:
journalctl -x -e
Or else, we use the combination of dmesg and grep as follows:
dmesg
dmesg | grep -i REJECT
How to log all dropped packets to /var/log/firewalld-droppd.log file ?
First, we create a new config file called /etc/rsyslog.d/firewalld-droppd.conf on the CentOS/RHEL v7/8 server:
$ sudo vim /etc/rsyslog.d/firewalld-droppd.conf
Then we append the following configuration:
:msg,contains,"_DROP" /var/log/firewalld-droppd.log
:msg,contains,"_REJECT" /var/log/firewalld-droppd.log
& stop
$ sudo systemctl restart rsyslog.service
Finally, we can watch the log using the cat command/grep, command/egrep command or tail command:
$ sudo tail -f /var/log/firewalld-droppd.log