高いポート番号を使用しても安全ですか?(re:ウェブサービスを隠す)


9

私は小規模なホームネットワークを使用しており、セキュリティの必要性と利便性のバランスをとろうとしています。内部Webサーバーを保護する最も安全な方法は、VPNを使用してのみ接続することですが、これはDVRのリモートWebインターフェース(たとえば)を保護するのはやり過ぎのようです。

妥協案として、非常に大きなポート番号を使用する方が良いでしょうか?(例:5桁で最大65531)

通常、ポートスキャナーは最初の10,000個のポートのみをスキャンするため、非常に高いポート番号を使用する方が安全です。

これは本当ですか?

Webサーバーを保護するより良い方法はありますか?(つまり、アプリケーションのWeb GUI)


いいえ、それは真実ではありません。ブロードバンドアクセスを備えた最新の(デスクトップでも)マルチコアCPUマシンは、すべての65535ポートを数秒でスキャンできます。また、攻撃者がDoSゲートを無効にするために2秒間隔でそれらを配置することを決定した場合でも、システムを1日以上放置することになりますよね?古い格言は、他の人が下で述べたように、「あいまいさによるセキュリティ」はデジタルの世界では本質的に役に立たないということです。
msanford 2010年

回答:


9

通常、ポートスキャナーは最初の10,000個のポートのみをスキャンするため、非常に高いポート番号を使用する方が安全です。

多くの人がこれを信じています。私はしません。

多分それは少し安全ですが、それほどではありません。低い番号のポートがより一般的であるため、一部のスキャナーは最初にそこを探します。

もし私がクラッカーだったら、セキュリティのためにこの方法に依存している人々を捕まえるために、最初にハイポートをスキャンしました。不明瞭なセキュリティに依存している人々は、おそらくセキュリティについての理解が乏しく、他のセキュリティ手法の使用を忘れがちです。したがって、これらのサービスはより脆弱であり、解読が容易になる可能性があります。

一部のスキャナーはこれを悪用し、最初から始めて、リストの下に向かって進みます。他のスキャンでは、範囲全体でランダムなポートが選択されるため、すべてのポートがスキャンされる可能性が等しくなります。

NMAPを使用してこれを自分でテストしてください。ポート1〜10,000に対してnmapスキャンを実行してHTTPサーバーを探し、それをすべての1〜65、xxxポートに対してスキャンするスキャンと比較します。違いは通常3〜10分であることがわかります。Nessusなどを使用して詳細なスキャンを行うと、20〜60分かかる場合があります。

良いクラッカーは忍耐強いクラッカーです。彼らは待ちます。


1
他のすべての関連するセキュリティ対策が実装されていると仮定すると、ポート番号を隠すことは良いですか悪いですか?私の考えでは、サーバーが具体的にターゲットにされていなければ、少しは良いでしょう。
wag2639

2
+1「良いクラッカーは忍耐強いクラッカーです。彼らは待つでしょう。」
msanford 2010年

@ wag2639サービスのポート番号を変更しても実際には何もしていませんが、スクリプトキディに少し優れたスクリプトを見つけさせることができます。IPのブロックにウォーダイヤルをかけ、すべてのポートをポートスキャンすることも簡単です。
msanford 2010年

ハッカーが特定のターゲットを狙っている場合、ハッカーは高いポート番号をスキャンするために20〜60分間待機することができます。ただし、脆弱なシステムを見つけるために数百または数千のIPアドレスをスキャンしようとしている場合、ハイポートはスキャンしません。また、ターゲットを設定する前に、システムがあることを知っておく必要があります。ファイアウォールがうまく機能している場合、システムは基本的に、開いているポートにぶつかるまで見えません。
user1751825

3

奇数のポート番号を使用しても、非rootユーザーとしてアプリケーションを実行できるという事実を賭けているのでない限り、セキュリティはまったくありません。

この種のものは、あいまいさからセキュリティと見なすことができますが、実際にはセキュリティではありません。


では、本格的なVPNを使用する代わりの方法はありますか?おそらく、追加のログイン/パスワード保護を備えたある種のリバースWebプロキシですか?(イカはこれを行いません)
SofaKng

@sofakng:StunnelのようなSSLラッパーに興味があるかもしれません:stunnel.org
Maxwell

3

両端でLinuxを使用している場合は、sshトンネルを使用することもできます。

ssh -f -N -L 9090:localhost:9090 user@remote-host

たとえば、リモートホストのポート9090をのローカルポート9090に転送するためcherokee-adminに使用するもので、他のWeb GUIにも同様の設定を使用します。アプリケーションをlocalhost、つまりでのみ実行するようにアプリ構成で指定することで、この方法でアプリケーションを保護できます127.0.0.1。この方法では、外部からは到達できませんが、で転送できますsshman sshポート転送を使用して他のオプションを確認します(Xを含め、別の方法で問題を完全に解決できる可能性があります)。

これは、セットアップによっては、追加のソフトウェアをインストール/構成せずに目標を達成するのに適した方法です。


1

ファイアウォールで許可されている場合は、最初にファイアウォールレベルで認証を行うことができます。パスワードの複雑さが十分であれば、公開されているサービスのセキュリティが強化されます。また、たとえばstunnelや相互認証などを使用してSSLトンネリングを使用することもできます。

より高いポート番号を使用する方が特定の方法でより安全であるという事実を考慮すると、ボットがIPをスキャンしてエクスプロイトを試行することを参照するかもしれませんが、誰かが本当に侵入したい場合、より高いポート番号を使用してもセキュリティは向上しません。


私はpfsenseを使用しており、一部のWebサービスには組み込みのSSL(HTTPS)サポートがあります。それでもstunnelを使用する方が良いですか?stunnelの使用は「ファイアウォールでの認証」レベルですか?
SofaKng

1
「ファイアウォールでの認証」はどのように行うのですか?
wag2639

pfsenseにその機能があるかどうかはわかりませんが、Junipersルーターでは、ローカルユーザー(RADIUSも含む)を使用して、HTTP変換されたトラフィックへのアクセスを許可できます。Stunnelについては、証明書で相互認証を使用できますが、stunnelはSSLを使用してHTTPトラフィックをカプセル化し、認証を処理します。
Maxwell
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.