[1] Nftables – włączenie usługi
8 marca 2022Tutaj przedstawię podstawowe operacje na Nftables.
[1] W RHEL 8 / CentOS Stream 8 nftables jest używany jako domyślny backend zapory.
[root@vlsr01 ~]# grep nftables /etc/firewalld/firewalld.conf # - nftables (default) FirewallBackend=nftables
[2] Jeśli używasz nftables bezpośrednio, wyłącz usługę firewalld, aby uniknąć wzajemnego wpływu różnych usług zapory.
Ponadto włącz nftables.service, który przywraca zestaw reguł filtrowania po ponownym uruchomieniu systemu.
[root@vlsr01 ~]# systemctl disable --now firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@vlsr01 ~]# systemctl enable --now nftables Created symlink /etc/systemd/system/multi-user.target.wants/nftables.service → /usr/lib/systemd/system/nftables.service. # [nftables.service] przywraca/wczytuje reguły z [/etc/sysconfig/nftables.conf] [root@vlsr01 ~]# systemctl cat nftables.service # /usr/lib/systemd/system/nftables.service [Unit] Description=Netfilter Tables Documentation=man:nft(8) Wants=network-pre.target Before=network-pre.target [Service] Type=oneshot ProtectSystem=full ProtectHome=true ExecStart=/sbin/nft -f /etc/sysconfig/nftables.conf ExecReload=/sbin/nft 'flush ruleset; include "/etc/sysconfig/nftables.conf";' ExecStop=/sbin/nft flush ruleset RemainAfterExit=yes [Install] WantedBy=multi-user.target # [/etc/sysconfig/nftables.conf] domyślnie nie jest ustawiony [root@vlsr01 ~]# cat /etc/sysconfig/nftables.conf # Uncomment the include statement here to load the default config sample # in /etc/nftables for nftables service. #include "/etc/nftables/main.nft" # To customize, either edit the samples in /etc/nftables, append further # commands to the end of this file or overwrite it after first service # start by calling: 'nft list ruleset >/etc/sysconfig/nftables.conf'.
[3] Jeśli przełączysz się na usługę nftables za pomocą zestawu reguł skonfigurowanego na Firewalld, skonfiguruj jak poniżej.
# potwierdzić reguły Firewalld (na podstawie tego, że firewalld jest uruchomiony) [root@vlsr01 ~]# firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens192 sources: services: audit cockpit dhcpv6-client ftp ssh ports: protocols: forward: no masquerade: no forward-ports: source-ports: icmp-blocks: rich rules: # potwierdź obecny zestaw reguł nftables jako backend Firewalld [root@vlsr01 ~]# nft list ruleset table ip filter { chain INPUT { type filter hook input priority filter; policy accept; } chain FORWARD { type filter hook forward priority filter; policy accept; } chain OUTPUT { type filter hook output priority filter; policy accept; } } table ip6 filter { chain INPUT { type filter hook input priority filter; policy accept; } . . . . . # wypisz aktualny zestaw reguł do [/etc/sysconfig/nftables.conf] [root@vlsr01 ~]# nft list ruleset > /etc/sysconfig/nftables.conf # wyłącz usługę firewalld i włącz usługę nftables [root@vlsr01 ~]# systemctl disable --now firewalld Removed /etc/systemd/system/multi-user.target.wants/firewalld.service. Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service. [root@vlsr01 ~]# systemctl enable --now nftables Created symlink /etc/systemd/system/multi-user.target.wants/nftables.service → /usr/lib/systemd/system/nftables.service. # potwierdź wczytane reguły [root@vlsr01 ~]# nft list ruleset table ip filter { chain INPUT { type filter hook input priority filter; policy accept; } chain FORWARD { type filter hook forward priority filter; policy accept; } chain OUTPUT { type filter hook output priority filter; policy accept; } } table ip6 filter { chain INPUT { type filter hook input priority filter; policy accept; } . . . . . # na przykład możliwe jest pokazanie ustawień dozwolonych usług [services: cockpit dhcpv6-client ssh] na [firewalld] w następujący sposób [root@vlsr01 ~]# nft list chain inet firewalld filter_IN_public_allow table inet firewalld { chain filter_IN_public_allow { tcp dport 22 ct state { new, untracked } accept ip6 daddr fe80::/64 udp dport 546 ct state { new, untracked } accept tcp dport 9090 ct state { new, untracked } accept tcp dport 60 ct state { new, untracked } accept tcp dport 21 ct helper set "helper-ftp-tcp" tcp dport 21 ct state { new, untracked } accept } }