タイトルはおそらくそれをすべて言います。サーバーで開いているポートをポートスキャナーが検出しないようにするための最良の方法を知りたいだけです。 LinuxディストリビューションをOS(Ubuntuサーバー)として使用しています。
ポートノッキングは、他のポートへの一連の接続試行(ノック)を実行することにより、ファイアウォールが通常閉じているポートを開く方法です。ポートノックの有効なシーケンスが発生すると、必要なポートが開きます。
ポートノッキングは、ドアが開くためのドアを特別にノックすることと考えてください。
ArchLinux wiki の例を次に示します。
$ ssh username@Host
(Ctrl+c to exit) ^C
$ nmap -Pn --Host_timeout 201 --max-retries 0 -p 1111 Host
$ nmap -Pn --Host_timeout 201 --max-retries 0 -p 2222 Host
$ ssh user@Host
user@Host's password:
ユーザーがポートをノックする1111
に続く 2222
ポートを開くには22
SSHの場合。
Portspoof は、ポートスキャン結果の解釈を非常に困難にするプログラムです。そのため、開いているポートを特定するのが遅くなります。
Portspoofプログラムの主な目的は、一連の新しい手法を通じてOSのセキュリティを強化することです。
- すべてTCPポートは常に開いています
特定のポートがCLOSEDまたはFILTERED状態であることを攻撃者に通知する代わりに、Portspoofはすべてのポート接続試行に対してSYN + ACKを返します。
その結果、すべてのポートが常にOPENとして報告されるため、システムに対してステルス(SYN、ACKなど)ポートスキャンを使用することは現実的ではありません。
すべてのオープンTCPポートはサービスをエミュレートします
Portspoofには動的なサービス署名の巨大なデータベースがあり、スキャナーをだまして正当なサービスが実行されていると信じ込むために使用されます。スキャンソフトウェアは通常、開いているポートで実行されているサービスバージョンを特定しようとします。 Portspoofは、サービス署名の正規表現データベースに基づいて動的に生成される有効なサービス署名ですべてのサービスプローブに応答します。その結果、攻撃者はシステムが実際に使用しているポート番号を特定できなくなります。
https://github.com/drk1wi/portspoofから引用
Portspoofは、リスニングサービスの識別をはるかに困難にします。READMEに記載されているように、実際にリッスンしているポートを識別するには8時間以上かかります。実際のポートの識別には時間がかかるため、攻撃者はその可能性が高くなります。あきらめる。
このガイド は、Portspoofのインストール方法を示しています。
- ソフトウェアをコンパイルし、ソースを解凍/配置したディレクトリに移動して、次のコマンドを実行します。
$。/ configure $ make $ Sudo make install
OR
$ g ++ -lpthread -Wall -g Configuration.cpp connection.cpp Portspoof.cpp revregex.cpp Utils.cpp Fuzzer.cpp Server.cpp -o portspoof
- ファイアウォールルールを設定します。
iptables -A PREROUTING -i eth0 -p tcp -m tcp --dport 1:65535 -j REDIRECT --to-ports 4444
iptables-restore <iptables-config(system_filesディレクトリ)
サービスエミュレーションを使用してPortspoofを実行します。
$ portspoof -c portspoof.conf -s portspoof_signatures -D
「オープンポート」モードでPortspoofを実行します。
$ portspoof -D
- システムの起動スクリプトにportspoofを追加します。これを行うには、「system_files」ディレクトリにあるデフォルトのinit.dスクリプトを変更または使用します。
PortspoofとPortknockingを組み合わせると、ポートスキャナーから優れた防御が得られます。
クライアント側で追加の苦労をせずにサーバーに接続できるようにしたい場合-これらのポートがスキャンされないように保護する方法はありません。それはオキシモロンです。ポートスキャンは、接続を試み、どの応答が返されるかを確認する試みです。
クライアント側で追加の対策を実行する場合は、ポートノッキングなどを使用できます。これにより、スキャンの試行のために一部のポートが開いたままになることに注意してください。これらのポートは、サーバーが実行されているポートではありません。
あなたがプレイできるいくつかのトリックがありますが、例えば疑わしい接続試行後にソースをブロックすると、世界のすべてのnmapにはすでに対策(スロースキャン、ランダムスキャンなど)もあります。
私見あなたは一歩下がって、何を恐れているのか、別名あなたの脅威モデルは何なのか自問するべきですか?攻撃者が開いているポートを知っている場合、セキュリティが低下しますか?それはすべきではないので。あなたは正面玄関を隠そうとせず、適切なロックを設置しますよね?
もう1つの解決策は、速度と遅延が大きな問題ではない場合にTorの隠しサービスを使用することです。これにより、ポートスキャンを使用してサービスを発見することが事実上不可能になり、かなり簡単に実行できます。また、暗号化や匿名性など、いくつかのより多くのプライバシーを提供します。サービスにアクセスするために必要なのはTorだけで、SOCKS5を使用してTor(ポート9050のデフォルト)経由で接続できます。プロキシチェーンまたはトルソックを使用して、SOCKS5をサポートしないプログラムをプロキシ化できます。非表示のサービスのパスワードを設定することもできます。
すべてのポートを隠しサービスとして設定し、インターネットからそれらを閉じることができます。
これを回避する唯一の方法は、インターネットから切断するか、シャットダウンすることです。
上記の方法や手法のいずれも、スキャンされていることを完全に回避することはできません。
もう1つの解決策は、速度と遅延が大きな問題ではない場合にTorの隠しサービスを使用することです。これにより、ポートスキャンを使用してサービスを発見することが事実上不可能になります
残念ながらあなたは間違っており、理由や方法を詳しく説明するつもりはありません。