Iptablesの送信ブロックは受信を拒否します

Iptablesの送信ブロックは受信を拒否します

特定の IP アドレスへの送信接続のみをブロックしようとしていますが、同じ IP アドレスからの受信接続は許可したいと考えています。

発信接続をブロックすることについて私が理解しているところによると、すべきではない着信接続が正常に確立された場合はブロックします。

基本的に次のようなルールを設定します。

--append OUTPUT --jump DROP --destination x.x.x.x

確立された接続を許可するには:

--append INPUT --in-interface eth0 --match state --state RELATED,ESTABLISHED --jump ACCEPT

この IP アドレスがサーバーに接続しようとするときは接続を許可したいのですが、サーバーが送信接続を試行するときは接続できないようにする必要があります。

サーバーが に送信接続するための完全なアクセスをブロックしたいと思いますx.x.x.x。ただし、その IP のユーザーがサーバーにアクセスしたい場合は、特定のポートのサイトにアクセスできる必要があります。

答え1

ファイアウォール ルールの試行はほぼ完了です。ホストからの受信トラフィックを許可し10.10.10.10、そのアドレスへの送信トラフィックを停止するには、次の操作が必要です。

  1. 受信を許可する(おそらくどのポートに対しても)
  2. 確立された受信接続への送信応答を許可する
  3. 残りの送信トラフィックをブロックする

それで、

iptables -A INPUT --src 10.10.10.10 --jump ACCEPT

iptables -A OUTPUT --match state --state RELATED,ESTABLISHED --jump ACCEPT
iptables -A OUTPUT --dst 10.10.10.10 --jump DROP

後続のルールが/INPUTに到達する場合、またはポリシーがそのように設定されていない場合は、実際にこのルールは必要ありません。DENYREJECT

答え2

あなたは間違っています! 私が理解しているのは次の通りです:

まず、inputルールを確認してください。 による入力は許可されるはずですstateが、これはどういうstate意味でしょうか? これは、トラフィックが以前にサーバーからこのアドレスに送信されたことがあることを意味します。したがって、 (このアドレスに対して) 完全にoutブロックすると、このルールが一致することはありません。output

これが、あなたの完全な努力が不可能であり、stateでのみ利用可能である理由ですinput

何かハッキーな解決策があるかもしれません。しかし、与えられたオプションではそれは不可能です。

追伸

あなたの質問の後、私は古いトピックをもう一度確認しました。そして、あなたの投稿をもう一度読んだ後、これがまさにあなたが望んでいることだと気づきました。ポートノッキング

リクエストにコンポーネントが追加され、ランダム性がさらに向上します。

ノッキング スキームを設定するだけで、output接続を許可するだけでなく、input正しい処理knockingが行われた場合にのみ接続を許可します。

関連情報