LinuxサーバーがSSHポート22とHTTPポート80のみを開く場合、これら2つのポートのいずれかを経由してインターネットからサーバーにハッキングする必要がありますか?
あんまり。それはあなたの脅威モデルに依存すると思います。サーバーを危険にさらすためにこれらのポートを使用する必要のない他の脅威があるかもしれません。今考えられる最初の例は、サプライチェーン攻撃です。サーバー上のソフトウェアを更新するときに、更新されたソフトウェアがサプライチェーン攻撃によって侵害された場合、サーバーが感染します。または、example-program
ではなく誤ってexample_program
をインストールした場合(アンダースコアではなくハイフンに注意)、example-program
は悪意があり、混乱させる目的でその名前が付けられていた場合、サーバーが侵害されます。最近このようなことが起こったと思います...ああ、昨日( ビットコインがRubyリポジトリ でアプリを盗んでいます))他の例?次に、フィッシングやソーシャルエンジニアが関与することを忘れないでください。
正確に言うと、「一般に、開いているポートを介したリモートの脅威によってのみハッキングされる可能性があるのですか?」と尋ねられた場合、私の答えは「いいえ」です。一部の脅威が発生する可能性があるかどうかは、脅威モデルに依存します。脅威モデルは、サーバーの機能、サーバーの管理方法、ユーザーの状態などに依存します。
番号。
ターゲットコンピューターで攻撃される可能性のあるものは複数あり、サービスを提供するアプリケーション(httpdやsshdなど)はそれらの1つにすぎません。
ネットワークカードの物理ネットワークポートと実際のトラフィックを処理するアプリケーション(つまりsshd)の間にネットワークスタック全体があることに注意してください。このスタックには、ファイアウォール、ネットワークドライバーなどのカーネル機能などが含まれます。 処理アプリケーションに個別に攻撃 。
Linuxカーネルのリモート実行の脆弱性の数 ここで強調表示 を参照してください。これは、悪用するための処理アプリケーションを必要とせず、代わりに、攻撃者が不正なネットワークパケットを作成するだけでコードを実行できるようにします。
もちろん、カーネルよりもアプリケーションを攻撃する方が簡単です。なぜなら、カーネルはより厳密に検査される傾向があるためです。
Httpまたはsshを使用せずにサーバーにハッキングするいくつかの方法をリストする試み:
4.の例:ずっと前に、IPレイヤードライバーのバグを悪用する 死のping 攻撃がありました。ポートを開く必要はまったくありませんでした。
ポートを閉じることは、非常に初期の防衛線の1つです。
ポートが開いている場合、そのポートに入力されるデータを処理するソフトウェアが実行されます。そのソフトウェアにはバグがあり、攻撃が成功する可能性があります。 100個のポートを開くと、100個のソフトウェアが安全でない可能性があります。 2つのポートしか開かれていないため、潜在的に脆弱なソフトウェアは2つだけです。明らかに、100個が脆弱でないことを確認することは、2個よりもはるかに困難です。
しかし、攻撃者は別のルートを通ろうとする可能性があります。サーバーはポート番号を含むデータのブロックを受信する必要があり、ソフトウェアはブロックを正しいポートに送信するか、破棄するか、場合によってはログに記録する必要があります。着信ブロックをポートに送信するソフトウェアにバグがある場合、攻撃者はそれらのバグを悪用する可能性があり、そのような悪用はどのポートが開いているかに依存しない可能性があります。