こんにちは!皆さんの大切なLinuxサーバー、今日もご無事でしょうか? 🖥️ 一見平穏に見えても、見えないところでは数多くの脅威が潜んでいます。 🕵️♂️ 小さなセキュリティの穴が大きな事故につながることもあります。そこで今日は、私たちのサーバーを鉄壁の要塞にするためのLinux/Unixサーバーセキュリティ重要診断リストを詳しく見ていきましょう。各項目を丁寧に確認しながら、ご自身のサーバーのセキュリティ状態をチェックしてみてください!

👤 アカウント管理:すべてのセキュリティの第一歩
アカウント管理はセキュリティの最も基本的でありながら、最も重要な部分です。権限が奪取されれば、すべてを失うのと同じだからです。
- 👑 Rootアカウントのリモート接続制限 (U-01) システムのすべての権限を持つrootアカウントへのリモート(Telnet、SSH)からの直接接続を禁止する必要があります。攻撃者がrootアカウントを奪取すれば、システムはそのまま乗っ取られてしまいます。一般アカウントで接続後、suやsudoを使用する習慣をつけましょう。
- 🛡️ Rootアカウントのsu制限 (U-45) suコマンドは誰でも使用できるべきではありません。特定のグループ(例:wheelグループ)に属するユーザーのみがsuコマンドを通じてroot権限に切り替えられるように制限し、権限昇格の試みを制御する必要があります。
- 🚨 Root以外のUID ‘0’禁止 (U-44) UID ‘0’はrootアカウント固有の番号です。もし他のアカウントがUID ‘0’を持っている場合、そのアカウントもrootと同じ強力な権限を持つことになります。このようなアカウントは直ちに探し出して修正または削除する必要があります。
- 🔑 強力なパスワードポリシー設定 (U-02, U-46, U-47, U-48) 推測しやすいパスワードは、ドアを開け放しているのと同じです。
- 最小長:8文字以上に設定
- 複雑性:英字・数字・特殊文字の組み合わせを強制
- 使用期間:最大90日以下、最小1日以上に設定し、定期的な変更を促します。
- 🤫 パスワードファイルの保護 (U-04) /etc/passwdファイルに暗号化されたパスワードが直接保存されていると危険です。シャドウパスワードシステムを使用してパスワードを/etc/shadowファイルに安全に保管し、/etc/passwdのパスワードフィールドが「x」と表示されていることを必ず確認してください。
- 🔒 アカウントロックアウト閾値設定 (U-03) ブルートフォース攻撃を防ぐため、ログイン失敗回数を10回以下に制限する必要があります。一定回数以上失敗するとアカウントが自動的にロックされるように設定し、攻撃者の試みを無力化します。
- ⏳ セッションタイムアウト設定 (U-54) 席を外した間に誰かが自分のコンピューターを触ったら?考えるだけでも恐ろしいですよね。一定時間(推奨600秒/10分)活動がないと自動的にログアウトされるように設定し、不正なアクセスを防止しましょう。
- 🧹 不要なアカウントの削除 (U-49) 退職者やもはや使用されていないシステムアカウントは潜在的なセキュリティ脅威です。定期的に点検し、きれいに削除してください。
- 👨✈️ 管理者グループの最小化 (U-50) rootグループ(GID 0)には、必要最小限のアカウントのみを含め、権限乱用の可能性を減らす必要があります。
- 🆔 同一UIDの禁止 (U-52) 異なるアカウントが同じUIDを使用すると、権限の衝突が発生し、監査追跡も困難になります。すべてのアカウントは固有のUIDを持つ必要があります。
📂 ファイルおよびディレクトリ管理:重要情報の死守
重要な設定ファイルの権限管理を怠ると、システム設定が改ざんされたり、情報が漏洩したりする可能性があります。
- 🔐 重要アカウント情報ファイルの保護 (U-07, U-08)
- /etc/passwd:所有者はroot、権限は644以下
- /etc/shadow:所有者はroot、権限は400以下(rootのみが読み取れるように!)に設定し、アカウント情報ファイルの改ざんを根本的に遮断します。
- 🌐 ホストおよびサービス設定ファイルの保護 (U-09, U-10)
- /etc/hosts:所有者はroot、権限は600(DNS改ざんによるファーミング攻撃防止)
- /etc/(x)inetd.conf:所有者はroot、権限は600(不正サービス登録防止)
- 📜 ログおよびサービスポートファイルの保護 (U-11, U-12)
- /etc/syslog.conf:所有者はroot(またはbin、sys)、権限は640以下(ログ設定改ざん防止)
- /etc/services:所有者はroot(またはbin、sys)、権限は644以下(サービスポート改ざん防止)
- 🦸♂️ SUID、SGID設定ファイルの点検 (U-13) SUID/SGIDは、一般ユーザーもファイル所有者/グループの権限でファイルを実行できるようにする強力な機能ですが、攻撃者にとっては権限昇格の経路となる可能性があります。不要なファイルに設定されたSUID/SGIDは直ちに削除する必要があります。
- ✍️ World Writableファイルの点検 (U-15) `perm -2`オプションで誰でも書き込み可能なファイルを探してみてください。このようなファイルはシステムに悪性コードを埋め込むのに悪用される可能性があるため、必ず必要な場合を除き、書き込み権限を削除する必要があります。
- 🤝 .rhosts, hosts.equivの使用禁止 (U-17) r系サービス(rlogin、rshなど)で使用される信頼ベースの認証ファイルは、セキュリティ上非常に脆弱です。これらのファイルが存在しないようにして、認証なしのリモート接続を遮断してください。
- ❓ 所有者なしファイル/ディレクトリの点検 (U-06) `find / -nouser -o -nogroup`コマンドで所有者なしのファイルやディレクトリを探してみてください。管理の死角にあるこのようなファイルは削除するか、適切な所有者を指定する必要があります。
- 🛤️ PATH環境変数のセキュリティ設定 (U-05) PATH環境変数に現在のディレクトリ(’.’)が含まれている場合、特に先頭にある場合、悪性スクリプトが優先的に実行される危険性があります。PATHの末尾に追加するか、完全に削除するのが安全です。
⚙️ サービス管理:不要な扉は閉める
使用しないサービスは停止するのが基本!稼働中のサービスはセキュリティ設定を強化する必要があります。
- 🚫 脆弱なr系サービスの無効化 (U-21) rlogin、rsh、rwhoなどは認証プロセスが非常に脆弱であるため、必ず無効化する必要があります。今はSSHがあるので心配ありませんね!
- 🤫 情報漏洩サービスの無効化 (U-19, U-20) ユーザー情報を漏洩させる可能性のあるfingerサービスや、匿名ファイルアクセスを許可するAnonymous FTPは、セキュリティ上大きな脅威となる可能性があるため、無効化するのが良いでしょう。
- 💥 DoS攻撃に脆弱なサービスの無効化 (U-23) echo、discard、daytimeなどは、サービス拒否(DoS)攻撃に悪用される可能性のある古いサービスです。すべて無効化してください。
- 🚪 NFSサービスセキュリティ (U-24, U-25) NFS(Network File System)を使用しない場合はサービスを停止し、使用する場合は/etc/exportsファイルにアクセスを許可する特定のホストのみを明記して厳格に制御する必要があります。
- 📧 Sendmailセキュリティ強化 (U-30, U-31, U-70) 古いバージョンのSendmailはセキュリティに脆弱です。最新バージョンにアップデートし、スパムメール中継を制限し、expn/vrfyのような情報漏洩の可能性のあるコマンドは無効化する必要があります。
- 🗺️ DNSセキュリティ強化 (U-33, U-34) BINDバージョンを常に最新に保ち、許可されたサーバーにのみゾーン転送(Zone Transfer)を許可して、DNS情報が丸ごと漏洩するのを防ぐ必要があります。
- 🙈 ウェブディレクトリリスティングの削除 (U-35) ウェブサーバー設定(httpd.conf)からIndexesオプションを削除してください。このオプションはウェブディレクトリのファイルリストをそのまま表示するため、攻撃者に重要な情報を露出させる可能性があります。
- 📦 ウェブプロセス権限の制限 (U-36) Apacheのようなウェブサーバーデーモンは、決してrootアカウントで実行してはいけません。apache、nobodyなどの別途の低い権限アカウントで実行し、ウェブサイトがハッキングされたとしてもシステム全体が乗っ取られる最悪の状況を防ぐ必要があります。
- ⬆️❌ 上位ディレクトリへのアクセス禁止 (U-37) ウェブ設定でAllowOverrideディレクティブをNoneに設定すると、.htaccessファイルを通じた追加設定が不可能になります。これをAuthConfigなどで適切に設定し、上位ディレクトリにアクセスしようとする試みを防ぐことができます。
📜 パッチおよびログ管理:絶え間ない監視と補強
セキュリティは一度で終わるものではなく、継続的な関心と管理が必要です。
- ✨ 最新セキュリティパッチの適用 (U-42) オペレーティングシステム(OS)および主要ソフトウェア(Apache、PHP、OpenSSLなど)のセキュリティ脆弱性は継続的に発見されます。ベンダーの推奨に従い、定期的に最新のセキュリティパッチを適用して既知の脅威を排除してください。
- 🕵️♀️ ログの定期的レビューおよび報告 (U-43) システムログ(wtmp、sulogなど)は、侵入の痕跡を見つけるための重要な手がかりです。定期的にログをレビューして異常なアクセス試行や権限使用履歴を確認し、問題が発生した際に報告できる体制を整える必要があります。
- ✍️ ポリシーに基づくシステムロギング設定 (U-72) /etc/syslog.conf(最近ではrsyslog.conf)ファイルに明確なロギングポリシーを設定し、必要なすべてのセキュリティ関連ログが漏れなく記録されるようにする必要があります。
ふぅ、本当に多いですよね? 😅 しかし、これらの項目を着実に点検し管理すれば、皆さんのLinuxサーバーははるかに安全になるでしょう。セキュリティは「イベント」ではなく「プロセス」であることを忘れないでください。今日すぐに皆さんのサーバーを点検してみてはいかがでしょうか?
コメントを残す