RHEL Engineering is moving the tracking of its product development work on RHEL 6 through RHEL 9 to Red Hat Jira (issues.redhat.com). If you're a Red Hat customer, please continue to file support cases via the Red Hat customer portal. If you're not, please head to the "RHEL project" in Red Hat Jira and file new tickets here. Individual Bugzilla bugs in the statuses "NEW", "ASSIGNED", and "POST" are being migrated throughout September 2023. Bugs of Red Hat partners with an assigned Engineering Partner Manager (EPM) are migrated in late September as per pre-agreed dates. Bugs against components "kernel", "kernel-rt", and "kpatch" are only migrated if still in "NEW" or "ASSIGNED". If you cannot log in to RH Jira, please consult article #7032570. That failing, please send an e-mail to the RH Jira admins at rh-issues@redhat.com to troubleshoot your issue as a user management inquiry. The email creates a ServiceNow ticket with Red Hat. Individual Bugzilla bugs that are migrated will be moved to status "CLOSED", resolution "MIGRATED", and set with "MigratedToJIRA" in "Keywords". The link to the successor Jira issue will be found under "Links", have a little "two-footprint" icon next to it, and direct you to the "RHEL project" in Red Hat Jira (issue links are of type "https://issues.redhat.com/browse/RHEL-XXXX", where "X" is a digit). This same link will be available in a blue banner at the top of the page informing you that that bug has been migrated.
Bug 1452137 - firewall-cmd: man page should mention that reload does not purge direct runtime rules
Summary: firewall-cmd: man page should mention that reload does not purge direct runti...
Keywords:
Status: CLOSED ERRATA
Alias: None
Product: Red Hat Enterprise Linux 7
Classification: Red Hat
Component: firewalld
Version: 7.3
Hardware: x86_64
OS: Unspecified
medium
medium
Target Milestone: rc
: ---
Assignee: Phil Sutter
QA Contact: Tomas Dolezal
URL:
Whiteboard:
Depends On:
Blocks: 1472751
TreeView+ depends on / blocked
 
Reported: 2017-05-18 12:21 UTC by lubomir.prda
Modified: 2018-04-10 10:31 UTC (History)
5 users (show)

Fixed In Version: firewalld-0.4.4.4-11.el7
Doc Type: If docs needed, set a value
Doc Text:
Clone Of:
Environment:
Last Closed: 2018-04-10 10:30:16 UTC
Target Upstream Version:
Embargoed:


Attachments (Terms of Use)


Links
System ID Private Priority Status Summary Last Updated
Red Hat Product Errata RHEA-2018:0702 0 None None None 2018-04-10 10:31:37 UTC

Description lubomir.prda 2017-05-18 12:21:22 UTC
When adding direct firewall rule to runtime, this does not get wiped on firewalld reload. Therefore custom admin user rules cannot be purged without restarting firewalld or removing rules one by one. (in our case puppet cannot get rid of any custom rules)

Version:0.4.3.2-8.1.el7_3.2

Reproduction steps:
1. First we add direct rule into firewalld:
# firewall-cmd --direct --add-rule ipv4 filter INPUT 120 -m state --state NEW -s 10.0.16.0/24 -m tcp -p tcp --dport 55555 -j ACCEPT

2. Check if the rule has been added correctly:
# firewall-cmd --direct --get-all-rules | grep 55555
ipv4 filter INPUT 120 -m state --state NEW -s 10.0.16.0/24 -m tcp -p tcp --dport 55555 -j ACCEPT

3. Reload firewalld so only permanent rules should reapply
# firewall-cmd --reload
-OR-
# systemctl reload firewalld
-OR-
# firewall-cmd --complete-reload

4. Check if the rule is still present:
# firewall-cmd --direct --get-all-rules | grep 55555
ipv4 filter INPUT 120 -m state --state NEW -s 10.0.16.0/24 -m tcp -p tcp --dport 55555 -j ACCEPT

- empty response was expected but the rule is still present. The rule is successfully removed only after restarting firewalld:
# systemctl restart firewalld

Comment 2 Thomas Woerner 2017-05-29 11:41:09 UTC
firewalld is trying to keep runtime only direct rules while reloading to minimize the need to recreate rules added by services and applications.

Comment 4 lubomir.prda 2017-05-29 13:01:01 UTC
There are multiple problems with this approach:

1. Is this documented somewhere? I have tried to find some mention of this in manpages, but was not successful. According them, everything, that is not in config should be purged after reload.

2. Even if this was true, firewalld should not retain rules put in runtime by itself. It should know, that the rule was not created by some service, but itself. Also we do not want other services to punch holes through firewall. That is why firewall is there in the first place.

3. So we are not able to purge  unwanted direct rules via remote management at all. No switch? Only complete restart of firewalld?

Comment 6 Eric Garver 2017-09-07 18:01:00 UTC
(In reply to lubomir.prda from comment #4)
> There are multiple problems with this approach:
> 
> 1. Is this documented somewhere? I have tried to find some mention of this
> in manpages, but was not successful. According them, everything, that is not
> in config should be purged after reload.

This caveat should probably be added to the man page under --reload/--complete-reload. I'll use this BZ as the work item for that.

> 
> 2. Even if this was true, firewalld should not retain rules put in runtime
> by itself. It should know, that the rule was not created by some service,
> but itself. Also we do not want other services to punch holes through
> firewall. That is why firewall is there in the first place.

Only applications authenticated via policy kit can add direct rules.

> 
> 3. So we are not able to purge  unwanted direct rules via remote management
> at all. No switch? Only complete restart of firewalld?

You can remove all rules in a given chain.
e.g.

   # firewall-cmd --direct --remove-rules ipv4 filter INPUT

Or do something like this to remove direct all rules:

   # firewall-cmd --direct --get-all-rules |while read LINE; do firewall-cmd --direct --remove-rule $LINE; done

Comment 12 errata-xmlrpc 2018-04-10 10:30:16 UTC
Since the problem described in this bug report should be
resolved in a recent advisory, it has been closed with a
resolution of ERRATA.

For information on the advisory, and where to find the updated
files, follow the link below.

If the solution does not work for you, open a new bug report.

https://access.redhat.com/errata/RHEA-2018:0702


Note You need to log in before you can comment on or make changes to this bug.