ここにいつも私を困惑させたものがあります。コンピューターで開いているポートがあるのはなぜ悪いのですか?コンピューターにウイルスがないか、ポートをリッスンしている他のプログラムが実際に何かをしていると仮定すると、ポートが開いている場合になぜ問題になるのでしょうか。悪意のある人物がポートにパケットを送信し始めたが、データを受信してそれを処理する手段がない場合、なぜそれが重要なのですか?コンピュータは、受け取ったデータを勝手に実行するわけではありません。コンピューターがパケットで溢れると、データ量を処理できないためにコンピューターがクラッシュする可能性があることを理解していますが、コンピューター上のファイルを実際に変更するセキュリティ問題のみを考慮しています。
更新
これまでの回答に感謝します。現在、ポートが開いているということは、そのポートでリッスンして悪用できるプログラムがあることを意味しています。しかし、悪用できないソフトウェアを書くことがなぜそれほど難しいのでしょうか。コンピュータに実際に危害を加えるには、プログラムで1つ以上のファイルをアップロードする必要がなく、それらのファイルの1つを実行する必要があります。それは偶然に許すことは信じられないほど難しいようです。
何かが接続を待機していない場合、ポートは開いていません。
すべてのポートをどこにでも開放するのが悪い形である理由は、それらのポートでリッスンしているサービスをエクスプロイトに公開するためです。ファイアウォールが存在する理由は、特定のポートへの接続を許可するものを制限し、サービスによって公開される表面領域を減らすためです。
編集
なぜ人々が悪用できないソフトウェアを書くことができないのかというあなたの質問に対処するには:
これは単純なプログラムではかなり簡単ですが、ソケットを必要とする多くのプログラムは複雑です。そのため、これらのコンポーネントには多くのコンポーネントがあり、その多くは開発者が作成したものではない可能性があります(ライブラリを含む)。ファイアウォールなど、自分で使用できる強化方法がある場合、ネットワークを安全に保つために他の人に依存することはできません。
あなたが指摘したように、任意/リモートコード実行は大きなリスクです。残念ながら、バッファオーバーフローとそれを可能にするその他のセキュリティ上の欠陥は一般的です。 Microsoftのセキュリティアップデートを見てみると、リモートコードの実行または特権の昇格にパッチを当てているに違いない。MSは何百人もの開発者と何十億ドルもの巨大企業です。
あなたが書いた更新に関して:
これまでの回答に感謝します。現在、ポートが開いているということは、そのポートでリッスンして悪用できるプログラムがあることを意味しています。しかし、悪用できないソフトウェアを書くことがなぜそれほど難しいのでしょうか。コンピュータに実際に危害を加えるには、プログラムで1つ以上のファイルをアップロードする必要がなく、それらのファイルの1つを実行する必要があります。それは偶然に許すことは信じられないほど難しいようです。
悪用できないソフトウェアを書くのは非常に難しい!
私は本 Building Secure Software を読みました、そしてそれが議論した1つはスタックオーバーフローの悪用でした。そこには2つの非常に恐ろしい事実がありました。
したがって、ハッカーが(a)スタックオーバーフローバグを持ち、(b)ネットワークを介して悪用可能で、(c)バッファーに100バイトの空き容量があるプログラムを見つけた場合、コンピューターは強制されます。幸い、スタックオーバーフローのバグに関する知識は、今ではかなり一般的な知識ですが、それでもポップアップ表示されます。 5年前とそれ以上の場合、これははるかに頻繁な問題でした。
元の質問に戻り、プログラムの悪用可能なバグによる事故を回避するために、ポートを開かないようにする必要があります。これで2つ目の理由があります。ハッカーが使用するリモートシェルが別の開いているポートであるということです。特別に許可したものを除いてすべてをブロックしているファイアウォールがある場合は、そのリモートシェルもブロックします(ハッカーは引き続きコンピューターに対して他の厄介なことを行うことができるため、自己満足しないでください!)
開いているポートがあれば、入ってくるものを処理するプログラムに利用可能なエクスプロイトがなければ、安全です。しかし、エクスプロイトは常に見つかるので、ターゲットを探すためにネットを巡回する多数のポートスキャンがあることを知っておくとよいでしょう。
閉じられたポートは依然としてakserに応答するため、攻撃者の可能性は他のポートのチェックを続行することを知っています。繰り返しになりますが、これはインターネットが機能するために特定されている方法です。ステルスポートは潜在的な攻撃者に情報を提供しないように試みますが、理論的には仕様を破ります。
セキュリティの観点から見ると、コードが外部データの処理に使用されているため、開いているポートはすべて巨大な穴になります。ファイアウォール(またはNATルーター)が行うことは、システムにいくつかの開いているポートがある場合でも、着信トラフィックがコンピューターに到達しないようにすることです。これにより、すべてのポートが効果的に閉じられます。
実際、私の知る限り、開いているポートとは、プログラムがそれをリッスンしていることを意味します。したがって、データを処理する何らかのサービスがあります。
仮定コンピュータにウイルスがいないか、ポートをリッスンしている他のプログラムが実際に何かを実行している可能性があるため、ポートが開いた?悪意のある人物がパケットをポートに送信し始めたが、データを受信してそれを処理する手段がない場合、なぜそれが重要なのですか?
仮定はすべての効果の母です:)
申し訳ありませんが安全です... makeuseof.comでお読みください。
私はセキュリティエクスポートではありませんが、少し調査しました...「オープン」ポートは、着信TCP接続を受け入れるように設定されているポートです。
アプリがポート9、21、80のみをリッスンしていて、ファイアウォールがこれら3つのポートへのアクセスをブロックしている場合、技術的には開いているポートはありません。たとえばIOWのポート25は、何もリッスンしていないため開いていません。
あなたの質問に答える:コンピューターでポートを開くのが悪いのは、これらのポートが簡単に発見できるためです。発見すると、これらのポートはリスニングアプリケーションの脆弱性の影響を受けやすくなります。
同じ理由で閉じるとロック自宅のドアと窓。