web-dev-qa-db-ja.com

サーバーがポート22と80のみを開く場合、ハッキングする方法は2つしかありませんか?

LinuxサーバーがSSHポート22とHTTPポート80のみを開く場合、これら2つのポートのいずれかを経由してインターネットからサーバーにハッキングする必要がありますか?

47
244boy

あんまり。それはあなたの脅威モデルに依存すると思います。サーバーを危険にさらすためにこれらのポートを使用する必要のない他の脅威があるかもしれません。今考えられる最初の例は、サプライチェーン攻撃です。サーバー上のソフトウェアを更新するときに、更新されたソフトウェアがサプライチェーン攻撃によって侵害された場合、サーバーが感染します。または、example-programではなく誤ってexample_programをインストールした場合(アンダースコアではなくハイフンに注意)、example-programは悪意があり、混乱させる目的でその名前が付けられていた場合、サーバーが侵害されます。最近このようなことが起こったと思います...ああ、昨日( ビットコインがRubyリポジトリ でアプリを盗んでいます))他の例?次に、フィッシングやソーシャルエンジニアが関与することを忘れないでください。

正確に言うと、「一般に、開いているポートを介したリモートの脅威によってのみハッキングされる可能性があるのですか?」と尋ねられた場合、私の答えは「いいえ」です。一部の脅威が発生する可能性があるかどうかは、脅威モデルに依存します。脅威モデルは、サーバーの機能、サーバーの管理方法、ユーザーの状態などに依存します。

74
reed

番号。

ターゲットコンピューターで攻撃される可能性のあるものは複数あり、サービスを提供するアプリケーション(httpdやsshdなど)はそれらの1つにすぎません。

ネットワークカードの物理ネットワークポートと実際のトラフィックを処理するアプリケーション(つまりsshd)の間にネットワークスタック全体があることに注意してください。このスタックには、ファイアウォール、ネットワークドライバーなどのカーネル機能などが含まれます。 処理アプリケーションに個別に攻撃

Linuxカーネルのリモート実行の脆弱性の数 ここで強調表示 を参照してください。これは、悪用するための処理アプリケーションを必要とせず、代わりに、攻撃者が不正なネットワークパケットを作成するだけでコードを実行できるようにします。

もちろん、カーネルよりもアプリケーションを攻撃する方が簡単です。なぜなら、カーネルはより厳密に検査される傾向があるためです。

36
Moo

Httpまたはsshを使用せずにサーバーにハッキングするいくつかの方法をリストする試み:

  1. Management Engineの脆弱性の使用
  2. ネットワークボードのファームウェアまたはドライバーのバグの使用
  3. 仮想化プラットフォームであまり安全ではないものを使用し、隣接する仮想マシンへの正当なアクセス(またはハッキング)がある
  4. IPのバグまたはOSのTCPドライバーの悪用
  5. サーバーがクライアントとして機能するネットワークの相互作用(DNSクエリ、自動更新、データベースアクセス)、これらのサービスの正当なサーバーへのなりすましまたはハッキングを利用する。

4.の例:ずっと前に、IPレイヤードライバーのバグを悪用する 死のping 攻撃がありました。ポートを開く必要はまったくありませんでした。

13
fraxinus

ポートを閉じることは、非常に初期の防衛線の1つです。

ポートが開いている場合、そのポートに入力されるデータを処理するソフトウェアが実行されます。そのソフトウェアにはバグがあり、攻撃が成功する可能性があります。 100個のポートを開くと、100個のソフトウェアが安全でない可能性があります。 2つのポートしか開かれていないため、潜在的に脆弱なソフトウェアは2つだけです。明らかに、100個が脆弱でないことを確認することは、2個よりもはるかに困難です。

しかし、攻撃者は別のルートを通ろうとする可能性があります。サーバーはポート番号を含むデータのブロックを受信する必要があり、ソフトウェアはブロックを正しいポートに送信するか、破棄するか、場合によってはログに記録する必要があります。着信ブロックをポートに送信するソフトウェアにバグがある場合、攻撃者はそれらのバグを悪用する可能性があり、そのような悪用はどのポートが開いているかに依存しない可能性があります。

5
gnasher729