私は Linux の初心者ですが、何年も Windows プラットフォームで開発を行ってきました。Node.js を収容するために AWS に Ubuntu サーバーをセットアップしたいと考えています。Ubuntu サーバーのデフォルト インストールを実行した場合、Node.js をロードし、単純な Node.js サーバーをポート 80 で起動します。サーバーを保護するために他に必要なことはありますか?
2 に答える
サーバーを強化する方法はたくさんありますが、絶対に必要なものを 2 つだけ挙げます。Ubuntu サーバーでは、既にアクティブ化されている場合とされていない場合がありますが、常に確認する必要があります。
ファイアウォールを有効にする
iptables
ファイアウォールのルールを処理する最も簡単な方法は、 ufw
. 端末に次のように入力します。
ufw default deny # Silently deny access to all ports except those mentioned below
ufw allow 22/tcp # Allow access to SSH port
ufw allow 80/tcp # Allow access to HTTP port
ufw enable # Enable firewall
ufw reload # Be sure that everything was loaded right
必ず SSH を許可してください。そうしないと、サーバーの外でロックされます。また、UFW (および iptables) では、単一の IP アドレスとサブネットワークを許可または拒否できることに注意してください。
SSH で pubkey ログインを強制し、root ログインを無効にして、fail2ban を使用する
攻撃者がいつでもサーバーへのアクセスを試みることができる場合、パスワード ログインは脆弱です。SSH では、ランダム シードから生成される、より堅牢で予測しにくい公開/秘密キーを使用して認証を処理できます。
最初に独自のキーのペアを生成し、公開キーを~/.ssh/authorized_keys
サーバーに追加して、自分自身をロックアウトしないようにします。後で、そして後でのみ、 を見てください/etc/ssh/sshd_config
。関連する 2 つのオプションは次のとおりです。
PermitRootLogin no
PasswordAuthentication no
このように、攻撃者は root としてログインできないため、パスワードを試す前に管理者のユーザー名を推測する必要があります。root 権限を取得するために root としてアクセスする必要はありません。su
またはを使用してユーザー アカウントから昇格できますsudo
。
最後に、fail2ban
認証に一定回数失敗した後、IP アドレスで一時的に禁止するために使用します (攻撃者がブルート フォースを簡単に実行できないようにするため)。一時的に言ったのは、攻撃者が正当な IP を偽装した場合、攻撃者はあなたに対して DoS を実行できるからです。
すべての変更を適用したら、次のようにデーモンを再起動します。
service ssh restart
繰り返します。注意してください。すべてを確認してください。そうしないと、サーバーからロックアウトされてしまいます。
その他の注意事項
デフォルトの Debian/Ubuntu のインストールは、重大な欠陥を恐れることなくインターネット上に公開されるほど安全です。それでも、常にセキュリティ設定を確認し、サーバーに展開しているソフトウェアに関する情報を収集し、定期的にログを調べて異常なパターンを探す必要があります。
その他の有用なツールとしては、ほとんどのシステム サービス (Postfix、HTTPd...) の MAC プロファイルを提供する Apparmor、サンドボックス用の LXC、chroots などがあります。インフラストラクチャがどれほど重要かによって異なります。
このトピックは、SOの回答には広すぎると思います。開始するのに最適な場所は、おそらく、セキュリティのベスト プラクティスと必要な知識のマッピングを開始することです。
ナレッジ センター:
- CSA - Cloud Security Alliance : クラウドでサーバーを実行するために何が必要かを完全に理解するための場所。
- OWASP - Open Web Application Security Project。Web アプリを扱います。トップ10のリストを見てみましょう
- PCI - 支払いカード業界の規制当局。おそらくクレジットカードを保管していないでしょうが、これは良い情報源です。これがイントロです。
これで、それに対処するためのいくつかのアプローチがあります。
- エンタープライズ アプローチ - 学習、計画、実装、テスト、進行中のプロセスの作成。
- ゲリラ アプローチ - 反復: 最もぶら下がっている成果を見つけて処理します。
- ハイブリッド - 両方のアプローチのいくつかのプロパティを組み合わせます。
あなたの最も簡単な目標/最も重要な攻撃ベクトルについて:
- Perimeter 別名適切なファイアウォール構成 - AWS で実行しているため、強力なネットワーク ベースの FW (別名 Security Groups) の使用を検討する必要があります。シンプルなユースケースでは、コンソール UI を使用できます。より複雑なセットアップでは、ネットワーク ベースとホスト ベースの両方のセキュリティ ポリシーの管理を支援できるDome9などの専用のセキュリティ管理サービスを追加することをお勧めします。
- WAF (Web アプリケーション ファイアウォール) を利用する- mod-security の使用を検討してください - (できれば) nodejs の前にある nginx にインストールできるホスト ベースの WAF です。または代わりにIncapsulaまたはCloudflareによるサービスとして WAF を使用する
- 適切な集中ログをセットアップします。Splunk Cloud、Sumo Logic、LogEntries、および Loggly を比較して、最適なサービスを見つけてください。
- サーバー認証とアカウントを強化します (ここで説明するには長すぎます)