CentOS 8 Firewalld + nftablesまたは単にnftables

CentOS 8 Firewalld + nftablesまたは単にnftables

私は長い間CentOS 7を使用してきましたが、iptablesさまざまな個人やビジネスシステムでカスタム構成を構築することに慣れています。

私は最近CentOS 8を使い始めてiptablesからからの移行について学びましたnftables。だからルールセットを書き直し、すべてが正しく機能するようにすることができました。問題は、私のカスタムnftルールセットが再起動後も維持されず、自分のsystemctl restart nftablesルールを手動で再有効化する必要があることです。

firewalld私が理解したところによると(CentOS 7では使用したことがないので)、その原因はフロントエンド管理ツールでありiptablesnftablesそうでしょ?systemctl disable firewalld再起動すると、ルールnftablesセットが期待どおりに適用されました。問題が解決しました。

firewalld私の質問は使用しない場合の結果は何ですか?それでも実行中なので、nftables実際のファイアウォールがまだ存在すると仮定します。ファイアウォールfirewalldが使用中であることを確認するために設定を調整するのではなく、実行状態にしておく必要がある理由はありますか?代わりに私のnftablesルールが設定されました。その目的について説明していただきありがとうございます!

答え1

私は答えがとても簡単だと思います。まず、本当に正しいことをしました...

Firewalldは純粋なフロントエンドです。それ自体はスタンドアロンのファイアウォールではありません。これはガイドラインを受け入れ、それをファイアウォールのnftablesルール(以前のiptables)に変換するだけで簡単に機能します。したがって、「nftablesを使用してファイアウォールを実行する」と「nftablesのみを実行」から選択できます。 Nftablesは、2000年頃にカーネルの一部となったカーネルの「netfilter」フックシステムと、モジュールを複製した多くのモジュールを使用して、カーネルの一部として直接機能します。

Firewalldとnftables(以前のiptables)を並列に実行することはかなり混乱する可能性がありますが、一部の人はこれを行うと確信しています。独自のiptablesルールを実行することに慣れている場合は、それをnftablesルールに変換してファイアウォールルールにするのが完璧なソリューションです。最善の方法は、実際にファイアウォールを完全に無効にし、好ましくはブロックすることです。少し賢く言えば、次のことができます。

sudo systemctl stop firewalld
sudo systemctl disable firewalld
sudo systemctl mask --now firewalld

他の作業を行う必要はありません。私もnftablesとして直接実行します。私はこれがフロントエンド(そして確かにファイアウォール以外の他のフロントエンド)を使うよりもはるかに透明だと思います。これにより、実行中のタスクの完全な可視性を提供して実行するだけで、ルールの効果の完全なレビューを簡単に得ることができますsudo nft list ruleset > /etc/nftables.conf。 /etc/nftables.dで別々のnftテーブルを使用することは、実行する作業と場所を追跡するための優れた簡単な方法です。

@eriknelsonはコメントでサービスをブロックする理由を尋ねました。私が知っている限り、これはユーザーエクスペリエンスの実質的な理由とバグや見つけにくいバグを防ぐために行われます。多くのファイアウォールシステムを実行することは、ほとんどの人にとって結果を予測できず、他の望ましくないファイアウォールとの相互作用に関してファイアウォールから明確なエラーメッセージを受け取る可能性が低いため、あまり望ましくありません。しかし、カーネルは与えられた内容を処理しようとします。 nftablesまたはiptablesを使用している場合は、Firewalldを使用しないでください。またはUFW。または他のより高いレベルのシステム。そして、ファイアウォールなどの高レベルのファイアウォールを主に使用している場合は、詳細な低レベルのガイドラインを乱すのが好きではありません。

systemdサービスをブロックすると、すぐに起動またはアクティブ化できなくなります。サービスがブロックされていることを検出または認識した場合は、ブロックを解除して目的の操作を実行できます。これは、そのような変更が誤ってまたは自動的に行われるのを防ぐために行われます。以下を実行して、コンピュータに隠しサービスがあるかどうかを直接確認できます。sudo systemctl list-unit-files | grep mask

したがって、ファイアウォールを完全に削除したくない場合がありますが、意図せずファイアウォールを実行したくない場合があります。これはsudo systemctl mask xyz.service使用が便利な状況の1つです。

私はあなたが書いた記事を通してすでにこれらすべてを知っていると思います。しかし、私は少しnftables伝道師です。他の人がこの回答を読んでいる場合は、この小さなヒントを参考にしてください。 nftablesのドキュメントは素晴らしいですが、過度にそうではありません。

関連情報