なぜオープンポートを持つのは悪いのですか?


35

これはいつも私を困惑させてきたことです。コンピュータのポートを開くのが悪いのはなぜですか?あなたが自分のコンピュータや他のプログラムが実際に何かをするかもしれないポートを聞いている他のプログラムを持っていないと仮定すると、ポートが開いているならそれは問題になりますか?悪意のある人がパケットをポートに送信し始めたが、データを受信して​​何かをするためにそこに何もない場合、なぜそれが重要なのですか?コンピュータは、受け取ったデータを任意に実行するだけではありません。私はパケットでコンピュータをあふれさせることはそれがデータ量を扱うことができないのでそれをクラッシュさせる可能性があることを理解しています、しかし私は実際にコンピュータ上のファイルを変えるセキュリティ問題を考えています。

更新

これまでの回答をありがとう。私は今、ポートが開かれているということは、そのポートでlistenして悪用される可能性のあるプログラムがあるということを理解しています。しかし、悪用できないソフトウェアを作成するのがなぜそれほど難しいのでしょうか。コンピュータに大きな危害を加えるために、プログラムが1つまたは複数のファイルをアップロードできるようにする必要はなく、そのうち1つのファイルを実行する必要があります。それは偶然に許可するのが信じられないほど難しいだろうようです。

回答:


36

何かが接続を待機していない場合、そのポートは開いていません。

すべてのポートをどこにでも開くことができないのは、それらのポートでリッスンしているサービスが悪用される可能性があるためです。そのため、ファイアウォールが存在し、特定のポートへの接続が許可されるものを制限し、サービスによって公開される表面積を減らすことができます。


編集

なぜ悪用されないソフトウェアを人々が書くことができないのか、というあなたの質問に答えます。

これは単純なプログラムではかなり簡単ですが、ソケットを必要とする多くのプログラムは複雑です。そのように、それらは多くのコンポーネントを持っています、それらの多くはたぶん開発者によってさえ書かれていません(含まれたライブラリ)。ファイアウォールなど、自分で使用できるセキュリティ強化方法がある場合、ネットワークを安全に保つために他の人に頼ることはできません。

ご指摘のとおり、任意の/リモートでのコード実行は大きなリスクです。残念ながら、バッファオーバーフローやそれを可能にするその他のセキュリティ上の欠陥が一般的です。マイクロソフトのセキュリティ更新プログラムを見て、リモートコードの実行または特権の昇格のいずれかにパッチを当てることをお勧めします。MSは何百人もの開発者と数十億ドルの巨大企業です。


4
追加するだけです。たとえば、サービスにコードの侵入などに使用されるバグがあることがわかっていて、実際にこのサービスが実行されていることが判明した場合、これは公開招待です。
Felix

1
これまでに投稿されたベストアンサー。
DaveParillo

9

あなたが書いたアップデートに関して:

これまでの回答をありがとう。私は今、ポートが開かれているということは、そのポートでlistenして悪用される可能性のあるプログラムがあるということを理解しています。しかし、悪用できないソフトウェアを作成するのがなぜそれほど難しいのでしょうか。コンピュータに大きな危害を加えるために、プログラムが1つまたは複数のファイルをアップロードできるようにする必要はなく、そのうち1つのファイルを実行する必要があります。それは偶然に許可するのが信じられないほど難しいだろうようです。

それは 非常に 悪用できないソフトウェアを作成するのは困難です。

その本を読んだことがある 安全なソフトウェアの構築 そしてそれが論じた1つの事柄はスタックオーバーフローを悪用することでした。そこには2つの非常に怖い事実がありました。

  • プログラムがC言語で記述されている場合は特に、悪用可能なスタックオーバーフローのバグを引き起こすことは非常に簡単です。または安全であるために特別な行動を取らなければならない。
  • ハッカーが使用する必要があるエクスプロイトは短いです - 非常に ショート。それはアセンブリ言語の半分のページより少なく、それは100かそこらの(推測)バイトのマシンコードに翻訳されます。この悪用コードは、ハッカーシェル(コマンドプロンプト)にあなたのマシンにアクセスさせるのに十分です。大きなファイルのアップロードや実行は必要ありません。正当なデータの途中に挿入できる小さなコードです。

つまり、ハッカーが(a)スタックオーバーフローのバグを持ち、(b)ネットワーク上で悪用可能で、(c)バッファに100バイトの空き容量があるプログラムを見つけた場合、あなたのコンピュータはpwnedされます。幸いなことに、スタックオーバーフローのバグに関する知識は今やかなり一般的な知識となっていますが、それでもポップアップ表示されます。 5年以上前、これははるかに頻繁な問題でした。

元の質問に戻って、プログラムの悪用可能なバグによる事故を避けるために、オープンポートを避けるべきです。もう1つ理由があります。ハッカーが使用するリモートシェルは、もう1つのオープンポートです。あなたが明確に許可した以外のすべてをブロックしているファイアウォールを持っているなら、あなたはそのリモートシェルもブロックするでしょう(ハッカーはあなたのコンピュータにまだ他の厄介なことをやることができるでしょう。


2
IIRC、Donald Knuth(?)は、彼が書いた小さなプログラムの1つがバグのないものであることを数学的に証明し終えたばかりで、それには数年かかりました。
RCIX

6

実は私の知る限りでは、オープンポートはプログラムがそれをリッスンしていることを意味します。そのため、データを処理するある種のサービスがあります。


6
  • オープンポート: 誰かが尋ねると、コンピュータはこのポートでlistenしているサービスがあると応答します。つまり、このポートに入ってくるものはすべて、そのコンピュータで実行されているプログラム(サービス)によって処理されます。
  • 閉じたポート 誰かが尋ねると、コンピュータはそのポートでリッスンしているサービスがないと応答します。 akserは、そのアドレスに応答しているコンピュータがあることを知ります。
  • ステルスポート: 誰かが尋ねるとき、彼らは返事がありません。重要なのは、そのアドレスにコンピュータがある場合は隠すことです。しかし、それはあまり効果的ではないかもしれません。 ジョスキ コメントで指摘しています。

あなたがオープンポートを持っているのであれば、入ってくるものを処理するプログラムが利用可能なエクスプロイトを持っていなければ安全です。しかし、エクスプロイトは常に発見されており、ターゲットを探すためにネットを駆け巡る多数のポートスキャンがあることを知っておくのは良いことです。

閉じられたポートは依然としてakserに応答するため、攻撃者は他のポートのチェックを続行することを知っている可能性があります。繰り返しますが、これはインターネットがどのように機能するかということです。ステルスポートは潜在的な攻撃者に情報を提供しないように試みますが、理論的には仕様を破ります。

セキュリティの観点からは、外部データを処理するためにコードが使用されているため、開いているどのポートも大きなギャップをあけています。ファイアウォール(またはNATルーター)が行うことは、システムにいくつかのオープンポートがある場合でも、着信トラフィックがコンピュータに到達しないようにすることです。このように、彼らは事実上すべてのポートを閉じます。


1
あなたの「ステルスポート」の定義は希望的な考え方です。実際、攻撃者は、回答がない場合はコンピュータが存在することを認識しています。その特定のIPアドレスにコンピュータが存在しない場合は、その前にあるルーターがそれに関するメッセージを送信します。起こらない「ステルスポート」では...
joschi

@ joschi:ええ、それは私がインターネットの周りで見たことがある概念です、それでそれを定義するのは良いことだと思います。あなたは良い点を挙げます。 あなたのコメントを反映するように答えを編集しました。 少なくとも、ターゲットIPはNATルーターの背後にあるように見えます。私は自分自身がこのコンセプトのファンではありませんでした。あなたがオープンポートを持っているなら、あなたはそれらが安全なサービスを実行していることを確かめるべきです。そして、あなたがオープンポートを持っていなければ、あなたが存在しているとネットに伝えても問題はありません。ステルスは私にとってセキュリティの誇大宣伝のような匂いがします。
Ilari Kajaste

joschi:すべてのルータがそうするわけではありません。多くのルータはシステムが存在しないIPアドレスに単純に盲目的に転送します。接続試行がタイムアウトするのは、クライアントが3方向の握手をしようとするのに飽きたからです。
benc

3

想定して あなたのコンピュータや他のプログラムにウイルスはありません。   実際にはポートをリッスンしている   何かをする   ポートは開いていますか?悪意のある人が   ポートへのパケット送信を開始しますが、   データを受信するものはありません   そしてそれを使って何かをする   重要ですか?

仮定はすべての効果の母です:)

すみませんよりもむしろ安全...ここmakeuseof.comであなたのために読んでうれしいです:

説明された技術:開いたルーターポートとセキュリティへの影響


良い、短い読みます。
DaveParillo

1

私はセキュリティの輸出はしていませんが、私は少し研究をしました... "開いている"ポートは入ってくるTCP接続を受け付けるように設定されているポートです。

アプリがポート9、21、および80でのみ待機していて、ファイアウォールがこれら3つのポートへのアクセスをブロックしている場合、技術的にはポートを開くことはできません。たとえば、ポート25のIOWは開いていません。

あなたの質問に答えるには:あなたのコンピュータ上で開いているポートを持つのが悪い理由は、これらのポートが簡単に発見されることができるからです。


ポートとは何かの定義は正しくありません。ポートは決してTCPに限定されません。
MDMarra

1
Googleのトップ6の検索結果のうち5つに 'net :) 5を付けて読んだものすべてを、その定義に明示的に記載しているとは思わないでください。 Google COM/…
Shoeless

いいえ、彼らはTCP / IPを言っています。大きな違いTCP / IPはUDPを含みます
MDMarra

1
ICMPはポートを使用しません、それはプロトコルのIPスイートに含まれているレイヤ3プロトコルです。
MDMarra

1
私がそれを言う唯一の理由はそれがファイアウォールに関して非常に重要であるということです(これは間接的にについてです)。 TCPはステートフルなので、UDPはそうではありませんが、接続は記憶されます。多くの場合、これは内部で確立されるTCP接続では発生する必要がない場合に、内部で開始されるリターンUDPトラフィックに対してポートを開く必要があることを意味します。
MDMarra

0

あなたと同じ理由で 閉じてロックする 家のドアや窓


3
私はドアをロックします窓の外は寒いです。この質問は断熱材とどう関係がありますか?
quack quixote

2
ドアや窓は閉じているだけでは断熱できませんか。余分なボルトは本当にそのはるかに多くの絶縁を提供しますか。
Dentrasi

良い点だが、誰もが家のドアや窓をロックしているわけではないことは注目に値する。これは 「誰もが自分の財産を守りたいとは限らない」 または 「誰もが恐れの文化に住むのが好きというわけではない」、 あなたの視点によります。
Ilari Kajaste

-2

開いているポートは開いているウィンドウと開いているドアのようですが、あなたのウィンドウが開いているときに強盗やネズミとクモが入ることができます。 アシニン asinineを編集していません オープンポートはオープンウィンドウに似ていますが、インターネットにはオープンポートがあります。クローズドポートにはそれがないとクローズドウィンドウになることもできません。クライアントはTCP接続です

セキュリティ専門家ではありません


サービスを提供するにはオープンポートが必要です。膨大な数の可能な例のうちの1つだけです。Gmailはオープンポートを使用します(HTTPSを使用しているWebサイトでは443)。しかしそれはあなたに何かを見せる前にログインするように頼みます。
Arjan
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.