通常、64,000を超える利用可能なポートは必要ありませんが、64ビットポート番号を使用するとアクセスポート(ssh、vpn ...)への一般的な攻撃を軽減できるため、PoCに興味があります。ポート 64b では、DoS やログインのためにサービスをランダムに攻撃することはほとんど不可能です。良い
ssh -p 141592653589793238 my.site.com
- 64ビットポートを使用するようにLinuxを設定できますか? (もちろん、クライアントとサーバーの両方が構成されている必要があります)
そして実際に
- これはインターネットデバイスを妨げますか? (「トランスポート」はIP上のOSIレイヤ4なので、ルーティング自体は影響を受けませんが、一部のデバイスは分析/マルウェア検出のために上位レイヤに上がります。; 64ビットポートLinuxボックスは次の役割を果たします。 .
答え1
64ビットポートを使用するようにLinuxを設定できますか?
TCP / UDPで64ビットポートを使用するようにパラメータを変更することはできません。
あなたできる同様のプロトコルを生成します。ただし、変更されたホストとのみ通信できます。これはTCP / UDPではなく、TCP64 / UDP64などの新しいプロトコルセットです。
メモリの影響やその他の多くの問題を考慮する前に、これらのプロトコルが機能するようにするには、次のいずれかを追加する必要があります。
- TCP64の定義(現在のTCPセグメントの変更)
- 新しいファミリAF_INETは、拡張ポートとそれを処理するカーネルコードを収容できます。 (コピー/貼り付けを検討している場合は、少なくとも構造定義、型定義リスト、およびリストを変更する必要があることに注意してください
htons()
。ntohs()
- ファイアウォール(トラフィックをフィルタリングする場合)など、ネットワークの端にあるプログラムを含む、新しいスタックを使用するように設計されたすべてのユーザー空間プログラムにコードを書きます。
これは、独自のプロトコルを使用する別のプロトコルセットになるためです。IP番号、IPプロトコル番号が不明なため、ルーティングノードによって削除される可能性がありますが、ルーティングノードを妨げません。
軽減の場合:fail2ban
ただし、同様のソフトウェアおよびカスタムサービスポート(16ビット範囲)が一般的な技術です。唯一の人ではありません。
答え2
ポート 64b では、DoS やログインのためにサービスをランダムに攻撃することはほとんど不可能です。良い
ssh -p 141592653589793238 my.site.com
お客様は141592653589793238をどのように知ることができますか?この情報を一部のディレクトリまたはクエリサービスから取得できる場合、攻撃者はそのサービスからポート番号を取得するため、何の利点もありません。 141592653589793238が秘密の場合、プロトコルの有用性は制限されます。つまり、クライアントは以前に秘密情報を受信した既知のサーバーにのみ接続されます。この説明に合うサービスはほとんどありません。 SSHは適切な数少ないプロトコルの1つですが、それでも追加の障害になります。
さらに、送信中のパケットを監視できる攻撃者はポート番号を見ることができます。だから、その秘密は長い間秘密のままではありません。
利点はほとんどありません。一部のサービス拒否攻撃を除いて、攻撃者がサービスへの接続を開くことができるかどうかは重要ではありません。重要なのは、サービスに悪用可能な脆弱性がないことです。一般的なSSHサーバーのセキュリティよりもはるかに弱い追加の秘密の後に特定のサービス(SSH)を隠すと、実際にはセキュリティを取得できません。
64ビットポートを使用するようにLinuxを設定できますか? (もちろん、クライアントとサーバーの両方が構成されている必要があります)
いいえ。ポート番号の桁数はシステム属性ではありません。それ規約(片面伝送制御プロトコル) 誰もが同意します。異なるシステムが異なるポート番号サイズを使用している場合、互いに通信できません。
確信する実装するTCPに似ていますが、64ビットポート番号を使用するプロトコルです。しかし、これは単に構成項目を変更する問題ではなく、まったく新しいコードスニペットであり、まったく新しいプロトコルです。
これはインターネットデバイスを妨げますか?
はい。ほぼすべてのTCP / IPクライアントの背後にあるネットワークアドレス変換。 NAT はポート番号で接続を識別します。 NATはまた新しいプロトコルをサポートしなければなりません。
答え3
他の人が述べたように、これは不可能です。TCPとUDPの両方が16ビットを使用します。ポートの指定に使用されます。したがって、インターネット上のすべてのホストにTCPプロトコルを別のプロトコルに変更させる必要がありますが、これが発生する可能性はほとんどありません。
幸いなことに、私たちはIPv6多くの場所に展開され、ホストからさまざまなIPv6アドレスをリッスンするさまざまなサービスを持つことができ、攻撃者がポートが何であるかを推測してIPアドレスを推測するのではなく、検索を使用してより多くのスコープを検索できるようになりました。同じことを達成してください。 IPv6 アドレスは 128 ビットであり、コンピュータも常にそれ自体で最低 64 ビット (許可されている場合はそれ以上) を使用できるため、攻撃者は 64 ビット ポートのアイデアよりも推測するのが難しくなります。
もちろん、ポートを隠すアイデアと同様に、攻撃者が隠しIPv6アドレスを簡単に取得できないように注意する必要があります。
(もちろん、ソースコンピュータとターゲットコンピュータの両方にIPv6接続が必要です。そうでない場合は、ISPにロビーしてローカルに提供し、いくつかのIPv6トンネリングを使用します。トンネル仲介ネットワークそうなるまで)
答え4
TCPスタックを変更することは可能ではないと思います。サーバー側で変更しても、クライアントとその上で実行されるソフトウェアをパッチする必要があるからです。
軽減方法として CrowdSec を使用することをお勧めします。これは現代のFail2ban(ログ内の動作を見つけてブロックします)ですが、IPv6に準拠し、より速く分離されています。さらに、そのポートをターゲットとする積極的なIPを識別するSSHポートを保護する他のすべてのユーザーのIPブラックリストを使用すると、利点が得られます。
免責事項:私はCrowdSecチームの一員です。