web-dev-qa-db-ja.com

VPSセキュリティのベストプラクティス

Linux VPSにサインアップして、作成中のWebサイトをホストしました。それを保護するための最良のアプローチについてアドバイスが必要です。

私は以前、VMを家の中でホストしていましたが、それを取り除きたいので。マシンに対して開かれた/転送されたポート。

今、私はマシンが本質的に完全にインターネットに開かれている状況にいるので、IPテーブルで何かを始める必要があると思いますか?これはまったく新しいことです。

私はそれを介して接続するために別のインターフェイス上の私のVPNに接続することを含むよりエレガントな解決策があるかもしれないと考えていましたが、それをどこから始めればよいかわかりませんでした。

私は欲しい:

  1. どこからでもSSHアクセス(既に構成されている非標準ポートを使用)
  2. 単一の場所からのPostgresアクセス
  3. どこからでもWeb(http/https)アクセス
  4. 単一の場所からのFTPアクセス

質問:

  1. このようなLinuxマシンを保護するためのベストプラクティスは何ですか? iptablesですか?
  2. これをどのように行うかを学ぶために、リソース(きちんとしたもの)の方向に私を向けてください。

私のLinuxレベルはかなり高く、bashスクリプトの作成/デバッグ、構成の最初からの編集などができ、アーキテクチャについてはかなり理解していますが、私は第一人者ではありません。

15
Martin
  • サービスへのアクセスを制限します。 IPtablesはそれを処理する良い方法です。サービスごとに説明した内容を適用し、その他はすべて削除する接続ルールを設定します。
  • 適切な構成でデーモンを制限します。 ssh経由の公開鍵でのみ認証する場合(そして、それを失い、自分自身のアクセスを拒否することのない十分な自信がある場合)、パスワードとキーボード認証をオフにします。 Fail2Banはブルートフォース攻撃に便利ですが、即時拒否もかなり満足できるものです。関連するディレクトリツリーのみをエクスポートするようにFTPサーバーを設定します。
  • あなたのデーモンのそれぞれが今侵害されていると仮定してください...多分SSHを除いてそれはそれらの一つに過ぎないからです。外部機能を使用して、デーモンがホストで実行できることを制限します。

LinuxでのAppArmorの大ファンです。構成は合理的に理解できるものであり、サンドボックスアプリケーションにとって非常に強力だからです。たとえば、Postgresとそれによって実行されるすべてのものを制限して、データベースストレージフィールドにのみ影響を与えることができます。同じことがWebサーバーとFTPサーバーにも当てはまります。オペレーティングサーバーの外部にあるデータを読み取る必要がなく、別のネットワークポートを開く必要もありません。それらのルールセットの違反についての電子メールアラートを取得します。

このようにサービスを分離すると、個々のサービスが危険にさらされている場合でも、マシン全体の整合性に信頼を与えることができます。

9
Jeff Ferland

vPSホストプロバイダーによっては、外部からアクセスできるものとアクセスできないものを設定できるファイアウォールソリューションを提供している場合があります。

例を挙げれば、私は最近インターネットへのHTTP/HTTPSアクセスしかなかったクライアントのVPSホストで作業しましたが、VPSのコントロールパネル(ホストパッケージの一部)は、ファイアウォールを構成するためのシステムを提供しましたこれにより、VPSの前で、自分のホームブロードバンドパッケージの一部である単一の静的IPアドレスのみにSSH、MYSQL、およびFTPアクセスを開くことができました。

IPテーブルを使用すると、ボックスが外界から安全であることを保証するために多くの作業を行うことができ、ルールセットを提供して、人々がSSHパスワードをブルートフォース攻撃しようとする攻撃を減らすこともできます(基本的に、これをルールで言うことができますIPアドレスがsshログインを時間枠内で5回間違って取得し、設定された期間または永続的にIPをブラックリストに登録します)。

ROOTログインを許可しないようにSSHを構成することを検討することをお勧めします(これはSSH構成ファイルで行うことができますが、頭上からこのファイルが保存されている場所を確認することはできません)。

SSHアクセス用に設定する必要があるもう1つのことは、キーベースの認証をセットアップすることです。つまり、Linuxサーバーが公開キーを持っているPCのみがシステムへの接続を許可され、その時点でパスワード認証をオフにできます。サーバーへのブルートフォース攻撃を緩和するのに役立ちます。

あなたの場合、ホストがファイアウォールオプションを提供せず、ボックスが完全にインターネットに開かれている場合は、IPTablesの構成を検討するのが最善です

ここにいくつかのIPTables関連情報へのリンクがあります。残念なことに、私はIPTablesに関する入力があまりないため、その価値を保証できません。

http://www.pettingers.org/code/firewall.html

お役に立てれば。

6
Kristiaan

このボックスは、パブリックIPを持つ物理ボックスと同じように扱います。次のような基本的なLinux強化ガイドラインに従う必要があります。

  1. ボックスの更新を維持します。
  2. 不要なプログラムを削除します。
  3. Iptablesを実行し、可能な限り厳しくロックダウンします。
    • FTPやPostgres要件など、これらを使用して必要な特定のソースベースのルールを実行できます。
  4. 標準以外のポートでSSHを実行し、rootログインを許可しない。
    • キーベースの認証を実行して、セキュリティを強化することもできます。
    • また、denyhostsやfail2banを実行して、ログイン試行の失敗をログで監視し、/ etc/hosts.denyを介してIPを即座にブロックできるようにすることもお勧めします。これは、SSHが開いていることを実感できるもう1つのレイヤーです。
  5. ボックスでHIDSを実行します。ボックスの誤動作、潜在的な攻撃のアラート、ファイルの整合性とルートキットの検出の両方にOSSECをお勧めします。
  6. サービスを監視して、すべてが正しく稼働していることを確認します。 Nagiosなどのプログラムを使用します。
  7. 等。

OpenVPNを使用してボックスに入るなど、VPNをセットアップすることもできます。そうすれば、OpenVPNを非標準ポートで実行し、キーベース認証とパスワードベース認証の両方を設定してから、許可することができます。

以下は、私が注目する2つのサイトです。

http://www.sans.org/score/checklists/linuxchecklist.pdf

http://www.cyberciti.biz/tips/linux-security.html

3
Eric