ちょうどセキュリティ問題を発見しました。 IPテーブルのルールを確認し、DHCPトラフィックのルールがないことを確認しました(すべてのチェーンに対してDROPポリシーがあります)。しかし、まだDHCPからIPアドレス、サブネットマスクなどを取得します。仕える人。だから私は学び始め、Wiresharkを実行して検索してみると、DHCPCDがAF_PACKETソケットを使用するので、TCP / IPスタック(?)をバイパスすることがわかりました。
私はそれについてもう少し掘り下げて(AF_PACKET、SOCK_RAW、ETH_P_ALL)と静的HW、IP、およびTCPヘッダ(単なるテスト目的のために)を使用してCで短いプログラムを書いた。 IPTablesホワイトリストにないサーバーからデータを要求してみてください。 IPTablesがそれをブロックする可能性がないという事実を発見したとき、私は少しおっぱいでした。
私はDebian 8 "Jessie"を実行しています。 IPTablesルールで何かを見落としていると思う人のために、インターフェイス、IPアドレス、宛先ポート、プロトコル、ctstateなどに基づいてフィルタリングして、各宛先を非常に具体的に指定する非常に厳しいルールを適用しました.
この問題についてもっと知っている人はいますか?それとも、このトラフィックをブロックしたりホストを離れたりする前に、すべてのトラフィックがTCP / IPスタックとIPTableを通過することを強制するソリューションはありますか?
答え1
AF_PACKETを使用するには、root権限(または少なくともCAP_NET_RAW)が必要です。ルートプロセスが何もしないようにすることはしばしば困難です。最善の解決策は、信頼できないプロセスを実行しないことです。
別のアプローチは、すべてのトラフィックがホストを介してルーティングされるように、別々のネットワーク名前空間ですべての(ルート)プロセスを実行することです。このようにして、(名前空間)AF_PACKETトラフィックを(ホストの)IPスタックを介して強制的に送信できます。
答え2
これは注目に値する意味を持ちます。これは比較的ユニークなケースであるにもかかわらず迷惑です。
AF_PACKETは特権アクションです。これは、権限のないユーザーがそれを使用しても問題が発生しないことを意味します。
これを使用するソフトウェアは、低レベルのネットワークインフラストラクチャDHCPサーバーに似ています。それ以外の場合は、一般的でシンプルなインターフェースを使用できます。システム管理者は、DHCPサーバーがインストールされていることを確認しています。他の状況にも同様に適用されます。
1. さまざまなゾーンのファイアウォール
iptablesを使用して、複数の「ゾーン」または同様のファイアウォールを定義できます。たとえば、Linuxボックスでは、ネットワークとインターネットの間のファイアウォールとして機能します。この場合、DHCPDなどはこのファイアウォールをバイパスするため、DHCPDなどのポリシーを個別に設定する必要があります。例えば
システムに複数のネットワークインターフェイスが接続されているが、DHCPサーバーがインターフェイスの1つでのみ起動する必要がある場合は、DHCPサーバーがそのデバイスでのみ起動するように設定します。 /etc/sysconfig/dhcpd の DHCPDARGS リストにインターフェイス名を追加します。
# Command line options here DHCPDARGS=eth0
これは、2つのネットワークカードを持つファイアウォールが取り付けられているシステムに役立ちます。ネットワークカードをDHCPクライアントとして設定して、インターネットからIPアドレスを取得できます。他のネットワークカードは、ファイアウォールの背後にある内部ネットワーク用のDHCPサーバーとして使用できます。内部ネットワークに接続されているネットワークカードのみを指定すると、ユーザーはインターネットを介してデーモンに接続できなくなり、システムがより安全になります。
-https://www.centos.org/docs/5/html/Deployment_Guide-en-US/s1-dhcp-configuring-server.html
AFAICT、ISC DHCPDにはもう詳細なオプションはありません。より細かい制御が必要な場合は、必要なDHCPリレーを使用しながらネットワークレベルでそれを実装する必要があります。するより細かい制御機能を提供します。これは、初期のDHCPリスナーがDHCPクライアントと同じネットワーク上にある必要があるためです。 Hauke Lagingが指摘したように、Linuxサーバーはさまざまな方法で仮想ネットワークを作成できます。たとえば、実際に望まない限り、物理的に分離されたファイアウォールボックスに頼る必要はありません。
2. パケットスニファー
Wiresharkパケットスニファは、メモリに安全でない言語で書かれた複数のパーサを実行するため、実行することを恐れる必要があります。そして、受信されるトラフィックはファイアウォールによって制限されません。https://wiki.wireshark.org/セキュリティ
3. アウトバウンドファイアウォール
これは少しあいまいですが、テストプログラムのように聞こえます。送るiptablesファイアウォールによってブロックされたパケット。つまり、発信パケットをフィルタリングしています。
これは最も一般的な構成ではありません。どの脅威モデルが使用されているのか、なぜこのような珍しい構成が使用されるのかという質問は、あまり具体的ではないようで、どのアドバイスができるのかわかりません。
CAP_NET_RAWを含む権限でプログラムを実行すると、iptablesの影響を受けないパケットを送信できます。ただし、繰り返しますが、CAP_NET_ADMINを含む権限でプログラムを実行すると、目的のパケットを送信できるようにするiptablesルールをインストールできます。 :)