RHEL9 Firewalldのルールセットをnftables サービスに切り替える方法
環境
$cat /etc/redhat-release
Red Hat Enterprise Linux release 9.2 (Plow)
概要
nftables フレームワークはパケットを分類し、iptables、ip6tables、arptables、ebtables、および ipset ユーティリティーの後継です。利便性、機能、パフォーマンスにおいて、
以前のパケットフィルタリングツールに多くの改良が追加されました。
操作方法
1.nftablesを無効にする
$systemctl disable --now nftables Removed "/etc/systemd/system/multi-user.target.wants/nftables.service".
2.firewalldを有効にする
$systemctl enable --now firewalld Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service. Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
3. Firewalldサービスを確認する
$systemctl enable --now firewalld
Created symlink /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service → /usr/lib/systemd/system/firewalld.service.
Created symlink /etc/systemd/system/multi-user.target.wants/firewalld.service → /usr/lib/systemd/system/firewalld.service.
[水 12月 06 19:16:30] ~ $systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemon
Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; preset: enabled)
Active: active (running) since Wed 2023-12-06 19:16:30 JST; 29s ago
Docs: man:firewalld(1)
Main PID: 2332 (firewalld)
Tasks: 2 (limit: 22838)
Memory: 22.8M
CPU: 499ms
CGroup: /system.slice/firewalld.service
mq2332 /usr/bin/python3 -s /usr/sbin/firewalld --nofork --nopid
12月 06 19:16:30 localhost.localdomain systemd[1]: Starting firewalld - dynamic firewall daemon...
12月 06 19:16:30 localhost.localdomain systemd[1]: Started firewalld - dynamic firewall daemon.
4.Firewalld の現在の設定確認
$firewall-cmd --list-all public (active) target: default icmp-block-inversion: no interfaces: ens160 sources: services: cockpit dhcpv6-client ssh ports: protocols: forward: yes masquerade: no forward-ports: source-ports: icmp-blocks: rich rules:
5.Firewalld バックエンドの nftables の現在のルールセットを全て表示する
$nft list ruleset
table inet firewalld {
chain mangle_PREROUTING {
type filter hook prerouting priority mangle + 10; policy accept;
jump mangle_PREROUTING_ZONES
}
chain mangle_PREROUTING_POLICIES_pre {
jump mangle_PRE_policy_allow-host-ipv6
}
chain mangle_PREROUTING_ZONES {
iifname "ens160" goto mangle_PRE_public
goto mangle_PRE_public
}
略
6.現在のルールセットを [/etc/sysconfig/nftables.conf] に書き出します
$nft list ruleset > /etc/sysconfig/nftables.conf
7.firewalld サービス停止 & nftables サービス起動
$systemctl disable --now firewalld Removed "/etc/systemd/system/multi-user.target.wants/firewalld.service". Removed "/etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service". $systemctl enable --now nftables Created symlink /etc/systemd/system/multi-user.target.wants/nftables.service → /usr/lib/systemd/system/nftables.service.
8,確認
$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
}
}