ファイアウォールの背後にあるネットワーク運用性の基本要件を備えたサーバーシステムとしてのLinux

ファイアウォールの背後にあるネットワーク運用性の基本要件を備えたサーバーシステムとしてのLinux

私はLinuxが初めてで、Windowsに慣れています。特定の文脈で正しい質問をすることができるように、後者の状況を説明します。 Windowsでローカルシステムファイアウォールを厳密なブロックモードで実行している場合は、ネットワーク接続が正しく機能するためにいくつかの要件を満たす必要があります。デフォルトの組み込みファイアウォール設定には、ネットワーク接続を確保するために存在してアクティブにされる一般的に「コアネットワーク」といういくつかの規則があります。たとえば、

Core Networking - Destination Unreachable Fragmentation Needed (ICMPv4-In)
Core Networking - Dynamic Host Configuration Protocol (DHCP-In) 
Core Networking - Internet Group Management Protocol (IGMP-In)
Core Networking Diagnostics - ICMP Echo Request (ICMPv4-In)
(and their counterparts for Outbound)

これは、ネットワークが正常に動作するために必要な最小値です。残りは、必要なアプリケーションとその機能であるアプリケーションドメイン構成です。つまり、カスタムルールを追加します。

だから私の質問は次のようになりますLinuxにも同様のことがありますか?たとえば、デフォルトのArchをインストールする場合は、事前設定されたiptablesまたはファイアウォールルールがないため、自分で作成する必要があります。特定のコレクションがありますか?基本的な必須グローバルルールファイアウォールをインストールすると「明示的に許可されていないすべてのコンテンツをブロックします」コアネットワークを使用できますか?

私が尋ねる理由は、いくつかのディストリビューション、特にサーバーディストリビューションがデフォルトでこの状態を持っていることを知っているからです。必要なポートまたは必要なポートを明示的に許可/開く必要があります。私は付属の多くのVPS / VDSを使用しました。私が知らなかったのは設定の複雑さでした。私は教育的な結論を出す経験があまりありません。明らかに、私はすべてのポートからのすべての着信データを拒否するグローバルiptabelsルールを作成する方法と、ポート22の例外を作成する方法を知っています。私は何を知らないそれ以上の場合は、上記のWindowsの例と同様にバックグラウンドで設定する必要があります。

私は同様のことを試しました:

iptables -F
iptables -P INPUT DROP
iptables -A INPUT -i lo -p all -j ACCEPT
iptables -A INPUT -p tcp -m tcp --dport 22 -j ACCEPT 
iptables -A INPUT -j DROP

しかし、今ではsimpleのような発信コンテンツも許可されていませんping ip.ip.ip.ip

私は何を見逃していますか?

答え1

ping応答(またはすべての接続応答)をブロックしました。実装ルールがありません。ステートフルファイアウォール。たとえば、Arch Linuxを使用しているので、次の記事で説明します。シンプルなステートフルファイアウォール。あなたが逃した重要な部分は次のとおりです。

# iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT

これが言うでしょうiptablesすべての着信パケットについて尋ねるこれつながるサブシステム受信したパケットがすでにトレースストリームの一部である場合。ストリームが存在し、予期された状態にある場合、これは最初のビューでそのストリーム(たとえば、ストリームの最初のパケット)が以前に受け入れられたことを意味します(たとえば、OUTPUTリンクはOPの場合はすべてを受け入れます)。したがって、パケットを受け入れます。 (そして残りの規則を短絡)。

これをpingに適用:着信ping応答パケットは、発信ping要求によって生成されたフローの一部と見なされるため、それを許可するルールがないため、破棄されずに受け入れられます。

順序が重要であることを覚えておいてください。このルールは最初のルールである必要があります(または後で実行する場合は-I INPUT最初の位置に挿入する代わりに使用)。-A INPUT詳細については、Arch Linux Wikiページの残りの部分を読んでください。

他のオペレーティングシステムと同じ機能を見つけることを期待しないでください。これについて考える方法を変える必要があるかもしれません。

関連情報