iptableルールが有効であることを確認する方法

iptableルールが有効であることを確認する方法

私はiptablesとネットワーキング全体に慣れていないので試してみています。

ポートを閉じる方法を学んでいます。特に、ネットワーク上の他のシステムがパケットを受信しないようにホストの特定のポートを閉じようとします。

特定のシステム(192.168.100.3)からシステム(192.168.100.10)にSSHを接続できないように、ポート22からのトラフィックを削除したいと思います。

トラフィックを削除するコンピュータ(192.168.100.3)にこのルールを作成しました。

iptables -I OUTPUT -s 192.168.100.10 -p tcp --dport 22 -j DROP

これまではエラーは発生していませんが、このコンピュータにSSHで接続しようとすると問題なく実行できます。

私のルールは、「そのポートの対応するIPに転送される出力からすべてのパケットを破棄する」ことです。これにより、ポート22で実行されているため、ssh接続は開始されません。

私は何を見逃していますか?ルールが実際に有効であることをどのように確認できますか?

編集:あなたのコメントに感謝します。 dの代わりにsを使ったので、おそらくうまくいかなかったでしょう。

答え1

たぶん誰かがより良い答えをするかもしれませんが、これは私のものです。

  1. LOGまたは、ACCEPT等しくDROPないターゲットを使用して同じルールを作成します。このルールは以下に由来します。今後テストしたいこと。

    iptables -I OUTPUT -s 192.168.100.10 -p tcp --dport 22 -j LOG --log-level info 
    

    カーネルログを指示するどこにでもログ出力を見つけることができます。 (わからない場合は別の問題です。)tail -f他のホストがそのポートに接続しようとするときにこのファイルを使用してください。

  2. /u/richardが提案したようにルールが適用されたら、nmap他のツールを使用してテスト中のポートに到達しようとし、オプションを実行して各ルールiptables-v合っ-xた正しいパケット数を確認します。私は使用する:

    iptables -L OUTPUT -nvx
    

    ルールがリストの#6であるとしましょう。便利なプログラムを使用してこのプログラムを監視できますwatch

    watch -n 0.5 iptables -L OUTPUT 6 -nvx
    

    ディスプレイは1/2秒ごとに更新されます。

答え2

iptables着信要求が強力な TRACE目標と一致する規則を詳細に確認するために、
文書にこれを最もまとめています。

TRACE
この目標は、パケットがテーブル、チェーン、およびルールを通過したときにカーネルがパケットと一致する各ルールを記録するようにパケットを表示します。
...
元のテーブルでのみ使用できます。

あなたの場合は、次のことを行います。

iptables -t raw -A PREROUTING -s 192.168.100.10 -p tcp --dport 22 -j TRACE

説明:
192.168.100.10からシステムポート22に送信されたすべてのTCPパケットが表示されるため、そのパケットに適用されるすべてのルールがカーネルログに記録されます。
これを使用するには、TRACEチェーンを含むソーステーブルに追加する必要がありますPREROUTING

パケットがテーブルとチェーンを通過する方法を知りたい場合は、iptables図を見てください。 iptablesを介したデータパケットのパス

テーブル、チェーンなどが何であるかをよりよく理解するには、次を参照してください。ここ

答え3

着信接続テスト:nmapは、他のコンピュータで実行するために必要な素晴らしいツールです。 Zenmapはnmapのグラフィカルユーザーインターフェースです。これを使用して開いているポートなどを検索できます。

特定のIPポートをブロックしている場合は、簡単に変更できます。ポート22を無効にするには、SSHサーバーを別のポートに追加します。

通常、必要なコンテンツを除くすべてのコンテンツをブロックしようとしています。

関連情報