CentOS7.9のFirewalldエラーの確認

過去の記事を見ていたら、2年以上前に「CentOS7.7 Firewalld Error : nf_conntrack」で対処したまま放置し忘れていたので、再度確認してみた。

◆現状確認

# firewall-cmd --version
0.5.3

1行目:バージョンの確認

# firewall-cmd --state
running

1行目:稼働状況確認

# 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」の自動アップデート設定をコメントアウトします。

# vi /etc/yum.conf
[main]
~ 中略 ~

#一時的にfirewalldのアップデートを停止
#exclude=firewalld*,python-firewall

6行目:firewalldのアップデート除外設定をコメントアウト

・利用可能バージョンの確認

# 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の利用可能なパッケージを確認

・インストール

# 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のインストール

◆確認

# systemctl restart firewalld

1行目:firewalldサービスの再起動

# firewall-cmd --version
0.6.3

1行目:バージョンの確認

# firewall-cmd --state
running

1行目:稼働状況確認

# 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」の確認

# 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 VPSOpenVZを利用していますが、OpenVZは、コンテナ型のVPSのためホストOSのカーネルとは共有するため、カーネル操作ができないようになっています。
そのため、カーネルモジュールである「nf_conntrack」の読込等に失敗しているようです。

併せて、カゴヤ・ジャパンのサポートセンターページを確認してみると、「iptablesの設定」というOpenVZのマニュアルページを見つけました。
その中に、「OpenVZ ではセキュリティ対策のため、インスタンス作成時から iptables を設定しています。」と書いてあります。

・AllowZoneDrifting

「AllowZoneDrifting」は、ゾーンドリフトという複数のゾーンに渡って許可するように設定するパラメータです。
デフォルトでは設定値は「yes」で有効となっています。

# 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の警告

ログにあるように、無効化します。

# 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」に変更

# 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」に切り替えようと思います。
結局それが、一番問題がない気がします…

いいね! & シェア お願いします。

コメントは受け付けていません。