Ensure a Table Exists for Nftables
Cette page n'est pas encore disponible en français, sa traduction est en cours.
Si vous avez des questions ou des retours sur notre projet de traduction actuel,
n'hésitez pas à nous contacter.
Description
Tables in nftables hold chains. Each table only has one address family and only applies
to packets of this family. Tables can have one of six families.
Rationale
Nftables doesn’t have any default tables. Without a table being built, nftables will not filter
network traffic.
Note: adding rules to a running nftables can cause loss of connectivity to the system.
Shell script
The following script can be run on the host to remediate the issue.
#!/bin/bash
# Remediation is applicable only in certain platforms
if dpkg-query --show --showformat='${db:Status-Status}\n' 'nftables' 2>/dev/null | grep -q installed; then
#Set nftables family name
var_nftables_family='inet'
#Set nftables table name
var_nftables_table='filter'
IS_TABLE=$(nft list tables)
if [ -z "$IS_TABLE" ]
then
nft create table "$var_nftables_family" "$var_nftables_table"
fi
else
>&2 echo 'Remediation is not applicable, nothing was done'
fi
Ansible playbook
The following playbook can be run with Ansible to remediate the issue.
- name: Gather the package facts
package_facts:
manager: auto
tags:
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- restrict_strategy
- set_nftables_table
- name: XCCDF Value var_nftables_family # promote to variable
set_fact:
var_nftables_family: !!str inet
tags:
- always
- name: XCCDF Value var_nftables_table # promote to variable
set_fact:
var_nftables_table: !!str filter
tags:
- always
- name: Collect Existing Nftables
ansible.builtin.command: nft list tables
register: existing_nftables
when: '"nftables" in ansible_facts.packages'
tags:
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- restrict_strategy
- set_nftables_table
- name: Set Nftable Table
ansible.builtin.command: nft create table {{ var_nftables_family }} {{ var_nftables_table
}}
when:
- '"nftables" in ansible_facts.packages'
- existing_nftables is not skipped
- existing_nftables.stdout_lines | length == 0
tags:
- low_complexity
- low_disruption
- medium_severity
- no_reboot_needed
- restrict_strategy
- set_nftables_table
Warning
Adding rules to a running nftables can cause loss of connectivity to the system.