導入
素晴らしい新しいLinuxサーバーをお持ちですね…もし何かあったら大変です。すぐに使えるかもしれませんが、本番環境に導入する前に、構成のセキュリティを確保するために10のステップを実行する必要があります。これらのステップの詳細はディストリビューションによって異なる場合がありますが、基本的な考え方はどのLinuxディストリビューションにも当てはまります。新しいサーバーでこれらのステップを実行することで、最も一般的なサイバー攻撃に対する基本的な保護を確実に備えることができます。.
1 – ユーザー設定
オペレーティングシステムの設定にまだ含まれていない場合は、まず最初にrootパスワードを変更してください。これは当然のことですが、一般的なサーバーセットアップでは意外と見落とされがちです。パスワードは8文字以上で、大文字、小文字、数字、記号を組み合わせて使用する必要があります。また、ローカルアカウントを使用する場合は、パスワードの有効期間、ロックアウト、履歴、複雑さなどの要件を規定したパスワードポリシーを設定する必要があります。ほとんどの場合、rootユーザーを完全に無効化し、昇格権限を必要とするユーザー向けにsudoアクセス権限を持つ非rootアカウントを作成する必要があります。.
2 – ネットワーク構成
最も基本的な設定の一つは、サーバーにIPアドレスとホスト名を割り当ててネットワーク接続を有効にすることです。ほとんどのサーバーでは、クライアントが常に同じアドレスでリソースを見つけられるように、静的IPアドレスを使用することをお勧めします。ネットワークでVLANを使用している場合は、サーバーセクションの分離度と最適な配置場所を検討してください。IPv6を使用していない場合は、IPv6をオフにしてください。ホスト名、ドメイン、DNSサーバー情報を設定します。冗長性を確保するために、2台以上のDNSサーバーを使用し、nslookupコマンドで名前解決が正しく機能していることを確認してください。.
3 – パッケージ管理
新しいサーバーは特定の目的のためにセットアップすることになると思いますので、使用しているディストリビューションに含まれていない必要なパッケージがあればインストールしてください。PHP、MongoDB、ngnixなどのユーティリティパッケージや、pearなどのサポートパッケージなどが考えられます。同様に、システムにインストールされている余分なパッケージは、サーバーのフットプリントを最小限に抑えるために削除する必要があります。これらはすべて、Yumやaptなどのディストリビューションのパッケージ管理ソリューションを通じて行うと、将来の管理が容易になります。.
4 – アップデートのインストールと構成
サーバーに適切なパッケージをインストールしたら、すべてが最新であることを確認する必要があります。インストールしたパッケージだけでなく、カーネルとデフォルトパッケージも確認してください。特定のバージョンが必要な場合を除き、システムのセキュリティを維持するために、常に最新の製品版を使用してください。通常、パッケージ管理ソリューションはサポートされている最新バージョンを提供します。また、このサーバーでホストしているサービスで自動更新が機能する場合は、パッケージ管理ツールで自動更新を設定することもお勧めします。.
5 – NTP設定
サーバーの時刻をNTPサーバーと同期するよう設定します。これは、社内NTPサーバー、または誰でもアクセスできる外部タイムサーバーがある場合に実行できます。重要なのは、サーバーの時刻が実時間からずれる「クロックドリフト」を防ぐことです。これは多くの問題を引き起こす可能性があり、例えば、アクセスを許可する前にサーバーと認証インフラストラクチャ間の時刻のずれを測定する認証の問題などです。これは簡単な対策ですが、信頼性の高いインフラストラクチャが不可欠です。.
6 – ファイアウォールとiptables
ディストリビューションによっては、テーブルが完全にロックダウンされていて、必要なものだけを開くように求められる場合があります。しかし、デフォルト設定に関わらず、必ず設定を確認し、希望どおりに設定されていることを確認してください。常に最小権限の原則に従い、そのサーバーのサービスに必要なポートのみを開くようにしてください。サーバーが専用のファイアウォールで保護されている場合は、サーバーに必要なポート以外はすべて拒否してください。iptables/ファイアウォールがデフォルトで制限されている場合は、サーバーの動作に必要なポートのみを開くことを忘れないでください。
7 – SSHのセキュリティ保護
SSHはLinuxディストリビューションにおける主要なリモートアクセス手段であるため、適切に保護する必要があります。アカウントを無効化した場合でも、rootのリモートSSHアクセス権限は無効化する必要があります。そうすることで、何らかの理由でサーバー上でrootが有効になっている場合でも、リモートからの攻撃を阻止できます。接続するクライアントIPアドレスが固定されている場合は、SSHを特定のIP範囲に制限することもできます。必要に応じて、デフォルトのSSHポートを難読化することもできますが、実際には、簡単なスキャンで新しいポートが発見されてしまいます。最後に、パスワード認証を完全に無効化し、証明書ベースの認証を使用することで、SSHが悪用される可能性をさらに低減できます。.
8 – デーモンの設定
パッケージのクリーンアップは完了しましたが、再起動時に適切なプログラムを自動的に起動するように設定することも重要です。不要なデーモンは必ずシャットダウンしてください。安全なサーバーを実現するための鍵の一つは、アクティブなフットプリントを可能な限り削減することです。これにより、攻撃を受ける可能性のある領域は、アプリケーションに必要な領域のみになります。これが完了したら、残りのサービスを可能な限り強化し、回復力を確保する必要があります。.
9 – SELinuxとさらなる強化
Red Hatディストリビューションを使用したことがある方は、システムを様々な操作から保護するカーネル強化ツールであるSELinuxについてご存知かもしれません。SELinuxは、システムリソースへの不正アクセスや不正使用を防ぐのに非常に効果的です。しかし、アプリケーションの機能を停止させるのにも効果的です。そのため、SELinuxを有効にした状態で設定をテストし、ログを確認して、正当な操作がブロックされていないことを確認してください。さらに、MySQLやApacheなどの強化アプリケーションについても調べておくことをお勧めします。それぞれに独自のベストプラクティスがあります。.
10 – ログイン
最後に、必要なログレベルが有効になっていること、そして十分なリソースがあることを確認する必要があります。最終的にはこのサーバーのトラブルシューティングを行うことになるので、問題を迅速に解決するために必要なログ構造を今のうちに構築しておきましょう。ほとんどのソフトウェアはログの設定が可能ですが、情報量が多すぎると不足するといった適切なバランスを見つけるには、試行錯誤が必要です。集約から可視化まであらゆることに役立つサードパーティ製のログツールは数多くありますが、まずはそれぞれの環境のニーズを検討する必要があります。そうすれば、ニーズを満たすのに役立つツールを見つけることができます。.
結果
これらの手順はそれぞれ、特に初回は完了までに多少の時間がかかります。しかし、初期サーバー設定ルーチンを作成することで、環境内の新しいマシンの耐障害性を確保できます。これらの手順のいずれかを完了しないと、サーバーが攻撃の標的になった場合に非常に深刻な結果を招く可能性があります。これらの手順を実行してもセキュリティが保証されるわけではありません(データ漏洩は起こり得ます)。しかし、悪意のある攻撃者が突破するのははるかに困難になり、突破するにはある程度のスキルが必要になります。.









