web-dev-qa-db-ja.com

Webサーバーでどのポートを開いたままにしておく必要がありますか?

すぐに最初のWebアプリをデプロイしてみるので、経験が足りません。ボットによるポートスキャンがインターネットに公開されてから数分以内に行われる場所を読んだことを覚えています(おそらく、Windows 95システムが危険にさらされるまでにかかる時間です。この記事を読んでからしばらく経っています)。この特定のサーバーは、AMD64でUbuntu 9.10サーバーエディションを実行しています。

この質問のように、Webアプリ自体は完全にhttps上にある必要があります 私はここで質問しました 。さらに、Webサイトにはファイルアップロードセクションがあり、現在はhttpポストを介して行われ、そのファイルは最終的に別のコンピューターへの別の(ワイヤレス、残念ながら)インターフェースを介してファームされ、実際の処理を処理します。

したがって、世界に公開されている実際のネットワークインターフェイスでは、ポート80と443のみを公開する必要があると思います。前に言ったように、80は443にリダイレクトする必要があります。それは正気ですか?他に何かわからないことはありますか、アクティブにしておくべき他のポートがありますか?ファイルは、ポート9000および9001を介してRuby DRbを使用して処理システムに移動されるため、これらも開く必要がありますが、2番目のインターフェース上でのみ必要です。

また、このような2つのネットワークインターフェイスを処理するには、どのファイアウォールプログラムを使用すればよいですか? ここにいくつかリストされています がありますが、どちらがWebページの提供に適しているか、あるいはこれがまったく特殊なケースであるかどうかさえわかりません。

7
mmr

httpsのみを提供している場合、それはあなたが開いたままにする必要があるものです。ただし、ルートアカウントで開始されたアプリケーションのみが1024未満のポートをリッスンできるため、ここには2つのオプションがあります。

  • Rubyアプリをrootとして起動する-良い考えではない
  • apacheの背後にある-良いかもしれませんが、何をしたいかによって異なりますが、これは単なる追加のオーバーヘッドになるかもしれません
  • Ruby appを別のポートで他のユーザーとして実行し、たとえば8443を実行し、リクエストを443から8443にポートフォワードするiptablesを実行します-これはあなたがやりたいことです

以下は、ポート転送の方法です(たとえば、80〜8080でも同じことができます)。

iptables -t nat -A PREROUTING -i $EXT_IF -p tcp -m tcp --dport 443 -j REDIRECT --to-ports 8443

それ以外は、インターネットへの他のポートを開く必要はありません。サーバーにアクセスして管理できるように、他のインターフェースでsshを開いたままにしてください。

ファイアウォールアプリケーションについては、iptablesにはubuntuが付属しており、それを使用するだけです。他の素晴らしいツールは必要ありません。

4
rytis

公開する必要があるのはポート80/443のみであるという点で正しいです。それ以外はすべて閉じる必要があります。いくつかのことを行うにはファイアウォールが必要です。

  1. 接続制限とレート制限。 DDoS攻撃やポートノッキングなどの試行が繰り返された場合に、ファイアウォールで速度を落とせるようにしたいとします。
  2. 不要な発信トラフィックをすべてブロックします。これは、ほとんどのボットがリモートのコマンドアンドコントロールサーバーに接続する必要があるため、マシンが危険にさらされている場合に役立ちます。
  3. 他のすべての着信ポートをブロックします。攻撃者がなんらかのアプリをインストールしてバックドアポートを開いた場合に備えて、実際には他のすべてをブロックする必要があります。

それらはいくつかの考えです。ただし、特定のソフトウェアに関する推奨事項はありません。たぶん [〜#〜] lartc [〜#〜] を読むと役立つかもしれません。

2
sybreon