過去の記事を見ていたら、2年以上前に「CentOS7.7 Firewalld Error : nf_conntrack」で対処したまま放置し忘れていたので、再度確認してみた。
◆現状確認
1 2 | # firewall-cmd --version 0.5.3 |
1行目:バージョンの確認
1 2 | # firewall-cmd --state running |
1行目:稼働状況確認
1 2 3 4 5 6 7 8 9 | # more /var/log/firewalld ~ 略 ~ 2022-09-26 23:08:46 WARNING: ipset not usable, disabling ipset usage in firewall. 2022-09-26 23:08:46 ERROR: Failed to read file "/proc/sys/net/netfilter/nf_conntrack_helper": [Errno 2] そのようなファイルやディレクトリはありません: '/proc/sys/net/netfilter/nf_conntrack_helper' 2022-09-26 23:08:46 WARNING: Failed to get and parse nf_conntrack_helper setting 2022-09-26 23:08:46 WARNING: ebtables not usable, disabling ethernet bridge firewall. ~ 略 ~ |
1行目:firewalldのログの確認
2022/9/26の時点でもエラーや警告は出力していたのを確認
◆バージョン変更
過去の記事でバージョンをダウングレードしていたのを「0.6.3」バージョンに戻します。
その際に、編集した「yum.conf」の自動アップデート設定をコメントアウトします。
1 2 3 4 5 6 | # vi /etc/yum.conf [main] ~ 中略 ~ #一時的にfirewalldのアップデートを停止 #exclude=firewalld*,python-firewall |
6行目:firewalldのアップデート除外設定をコメントアウト
・利用可能バージョンの確認
1 2 3 4 5 6 | # yum list firewalld 読み込んだプラグイン:langpacks, versionlock インストール済みパッケージ firewalld.noarch 0.5.3-5.el7 @/firewalld-0.5.3-5.el7.noarch 利用可能なパッケージ firewalld.noarch 0.6.3-13.el7_9 updates |
1行目:firewalldの利用可能なパッケージを確認
・インストール
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # yum install firewalld ~ 中略 ~ インストール: firewalld.noarch 0:0.6.3-13.el7_9 依存性関連をインストールしました: dbus-glib.x86_64 0:0.100-7.el7 dbus-python.x86_64 0:1.1.1-9.el7 ebtables.x86_64 0:2.0.10-16.el7 firewalld-filesystem.noarch 0:0.6.3-13.el7_9 gobject-introspection.x86_64 0:1.56.1-1.el7 ipset.x86_64 0:7.1-1.el7 python-decorator.noarch 0:3.4.0-3.el7 python-firewall.noarch 0:0.6.3-13.el7_9 python-gobject-base.x86_64 0:3.22.0-1.el7_4.1 python-slip.noarch 0:0.4.0-4.el7 python-slip-dbus.noarch 0:0.4.0-4.el7 完了しました! |
1行目:firewalldのインストール
◆確認
1 | # systemctl restart firewalld |
1行目:firewalldサービスの再起動
1 2 | # firewall-cmd --version 0.6.3 |
1行目:バージョンの確認
1 2 | # firewall-cmd --state running |
1行目:稼働状況確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | # systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 木 2022-11-03 14:23:28 JST; 1 day 1h ago Docs: man:firewalld(1) Process: 11987 ExecReload=/bin/kill -HUP $MAINPID (code=exited, status=0/SUCCESS) Main PID: 12798 (firewalld) CGroup: /system.slice/firewalld.service mq12798 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 11月 03 14:23:27 marusv.maruweb.jp.net systemd[1]: Starting firewalld - dynamic firewall daemon... 11月 03 14:23:28 marusv.maruweb.jp.net systemd[1]: Started firewalld - dynamic firewall daemon. 11月 03 14:23:28 marusv.maruweb.jp.net firewalld[12798]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now. 11月 03 14:23:28 marusv.maruweb.jp.net firewalld[12798]: WARNING: ipset not usable, disabling ipset usage in firewall. 11月 03 14:23:28 marusv.maruweb.jp.net firewalld[12798]: WARNING: Failed to load nf_conntrack module: modprobe: ERROR: could not find module by name='nf_conntrack' modprobe: ERROR: could not insert 'nf_conntrack': Function not implemented modprobe: ERROR: Error running install command for nf_conntrack... 11月 03 14:23:28 marusv.maruweb.jp.net firewalld[12798]: ERROR: Failed to read file "/proc/sys/net/netfilter/nf_conntrack_helper": [Errno 2] そのようなファイルやディレクトリはありません: '/proc/sys/net/netfilter/nf_conntrack_helper' 11月 03 14:23:28 marusv.maruweb.jp.net firewalld[12798]: WARNING: Failed to get and parse nf_conntrack_helper setting 11月 03 14:23:28 marusv.maruweb.jp.net firewalld[12798]: WARNING: ebtables not usable, disabling ethernet bridge firewall. |
1行目:firewalldサービスのステータスを確認
4行目:稼働状態も「active (running)」を確認
11行目以降:実行ログでは、警告やエラーが出力されているのを確認
◆原因調査
・カーネルモジュール
エラーが出力されているファイル「nf_conntrack_helper」の確認
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 | # ls /proc/sys/net/netfilter/ nf_conntrack_acct nf_conntrack_tcp_max_retrans nf_conntrack_buckets nf_conntrack_tcp_timeout_close nf_conntrack_checksum nf_conntrack_tcp_timeout_close_wait nf_conntrack_count nf_conntrack_tcp_timeout_established nf_conntrack_events nf_conntrack_tcp_timeout_fin_wait nf_conntrack_events_retry_timeout nf_conntrack_tcp_timeout_last_ack nf_conntrack_expect_max nf_conntrack_tcp_timeout_max_retrans nf_conntrack_generic_timeout nf_conntrack_tcp_timeout_syn_recv nf_conntrack_icmp_timeout nf_conntrack_tcp_timeout_syn_sent nf_conntrack_icmpv6_timeout nf_conntrack_tcp_timeout_time_wait nf_conntrack_log_invalid nf_conntrack_tcp_timeout_unacknowledged nf_conntrack_max nf_conntrack_udp_timeout nf_conntrack_tcp_be_liberal nf_conntrack_udp_timeout_stream nf_conntrack_tcp_loose nf_log |
1行目:ログで示されているディレクトリを確認したが、ログのとおり存在しない
色々調べてみると、参考になる記事を見つけました。
「Kagoya Cloud OpenVZではFirewalldが使えない件」
このサーバもKAGOYA CLOUD VPSでOpenVZを利用していますが、OpenVZは、コンテナ型のVPSのためホストOSのカーネルとは共有するため、カーネル操作ができないようになっています。
そのため、カーネルモジュールである「nf_conntrack」の読込等に失敗しているようです。
併せて、カゴヤ・ジャパンのサポートセンターページを確認してみると、「iptablesの設定」というOpenVZのマニュアルページを見つけました。
その中に、「OpenVZ ではセキュリティ対策のため、インスタンス作成時から iptables を設定しています。」と書いてあります。
・AllowZoneDrifting
「AllowZoneDrifting」は、ゾーンドリフトという複数のゾーンに渡って許可するように設定するパラメータです。
デフォルトでは設定値は「yes」で有効となっています。
1 2 3 4 5 6 7 8 9 10 11 | # cat /var/log/firewalld | grep 2022-11-03 2022-11-03 14:23:28 WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed in a future release. Please consider disabling it now. 2022-11-03 14:23:28 WARNING: ipset not usable, disabling ipset usage in firewall. 2022-11-03 14:23:28 WARNING: Failed to load nf_conntrack module: modprobe: ERROR: could not find module by name='nf_conntrack' modprobe: ERROR: could not insert 'nf_conntrack': Function not implemented modprobe: ERROR: Error running install command for nf_conntrack modprobe: ERROR: could not insert 'nf_conntrack': Operation not permitted 2022-11-03 14:23:28 ERROR: Failed to read file "/proc/sys/net/netfilter/nf_conntrack_helper": [Errno 2] そのようなファイルやディレクトリはありません: '/proc/sys/net/netfilter/nf_conntrack_helper' 2022-11-03 14:23:28 WARNING: Failed to get and parse nf_conntrack_helper setting 2022-11-03 14:23:28 WARNING: ebtables not usable, disabling ethernet bridge firewall. |
1行目:firewalldログの再確認
2行目:AllowZoneDriftingの警告
ログにあるように、無効化します。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 | # vi /etc/firewalld/firewalld.conf ~ 中略 ~ # AllowZoneDrifting # Older versions of firewalld had undocumented behavior known as "zone # drifting". This allowed packets to ingress multiple zones - this is a # violation of zone based firewalls. However, some users rely on this behavior # to have a "catch-all" zone, e.g. the default zone. You can enable this if you # desire such behavior. It's disabled by default for security reasons. # Note: If "yes" packets will only drift from source based zones to interface # based zones (including the default zone). Packets never drift from interface # based zones to other interfaces based zones (including the default zone). # Possible values; "yes", "no". Defaults to "yes". AllowZoneDrifting=no |
1行目:「firewalld.conf」設定ファイルの編集
14行目:設定値を「no」に変更
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | # systemctl restart firewalld # systemctl status firewalld ● firewalld.service - firewalld - dynamic firewall daemon Loaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled) Active: active (running) since 土 2022-11-05 15:29:18 JST; 2h 11min ago Docs: man:firewalld(1) Main PID: 11229 (firewalld) CGroup: /system.slice/firewalld.service mq11229 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopid 11月 05 15:29:18 marusv.maruweb.jp.net systemd[1]: Starting firewalld - dynamic firewall daemon... 11月 05 15:29:18 marusv.maruweb.jp.net systemd[1]: Started firewalld - dynamic firewall daemon. 11月 05 15:29:18 marusv.maruweb.jp.net firewalld[11229]: WARNING: ipset not usable, disabling ipset usage in firewall. 11月 05 15:29:19 marusv.maruweb.jp.net firewalld[11229]: WARNING: Failed to load nf_conntrack module: modprobe: ERROR: could not find module by name='nf_conntrack' modprobe: ERROR: could not insert 'nf_conntrack': Function not implemented modprobe: ERROR: Error running install command for nf_conntrack... 11月 05 15:29:19 marusv.maruweb.jp.net firewalld[11229]: ERROR: Failed to read file "/proc/sys/net/netfilter/nf_conntrack_helper": [Errno 2] そのようなファイルやディレクトリはありません: '/proc/sys/net/netfilter/nf_conntrack_helper' 11月 05 15:29:19 marusv.maruweb.jp.net firewalld[11229]: WARNING: Failed to get and parse nf_conntrack_helper setting 11月 05 15:29:19 marusv.maruweb.jp.net firewalld[11229]: WARNING: ebtables not usable, disabling ethernet bridge firewall. |
1行目:firewalldサービスの再起動
2行目:firewalldサービスのステータス確認
AllowZoneDriftingの警告ログが消えたのが確認できる
・ipset
「ipset」の設定については、実施できるが「nf_conntrack」と同様にカーネルモジュールであるため、OpenVZ環境では利用できないようです。
・ebtables
「ebtables」は、ブリッジファイアウォール用のフィルタリングツールでカーネルモジュールの「bridge-netfillter」と併せて使用するため、これもOpenVZ環境では利用できないようです。
◆対処
「ipset」及び「ebtables」は、「firewalld」をインストールした際の依存関連でインストールされました。
利用できないので、これらを「yum remove」でアンインストールしようとしましたが、当然、依存関連で「firewalld」もアンインストールされてしまいますので出来ません。
しかし、前回のエラーが発生した時とは違い、カーネルモジュール関連の設定が動作しないだけで「firewalld」のサービス自体は起動も出来て動作しているようなのでこのまま様子を見ようと思います。
問題が発生するようなら、OpenVZのマニュアル通り、「iptables」に切り替えようと思います。
結局それが、一番問題がない気がします…