サーバーの管理を任されたばかりの皆さん、こんにちは。
「サーバーの要塞化」なんて聞くと、なんだか軍事基地のような厳めしい言葉に聞こえますよね。でも、実はこれ、皆さんが毎日暮らしている「お家」の防犯対策と全く同じ考え方なんです。
今日は、Linuxサーバーの玄関口である「パスワード」を泥棒から守るための、もっとも基本的な防衛線についてお話しします。難しく考える必要はありません。一歩ずつ、一緒に見ていきましょう。
1. 泥棒は「鍵」を壊すより「鍵」を探し当てる
泥棒が家に入ろうとするとき、一番最初に試すことは何だと思いますか? 窓を割る? いいえ、まずは「鍵が開いていないか」をガチャガチャと確認し、次に「ありそうな番号(誕生日や1234など)」でピッキングを試みます。
サーバーの世界でも同じです。攻撃者は自動化されたプログラムを使って、何百万通りものパスワードを高速で入力し続けます。これを「ブルートフォース攻撃(総当たり攻撃)」と呼びます。
この攻撃を防ぐには、二つの盾が必要です。
1. 複雑なパスワードを強制する(簡単には推測させない)
2. 失敗したら門前払いする(しつこい訪問を遮断する)
これをLinuxで実現するのが、今回紹介する PAM(Pluggable Authentication Modules)という強力な仕組みです。
—
2. 「pam_pwquality」で、弱い鍵を拒否する
まずは「短くて簡単なパスワード」を禁止しましょう。pam_pwquality というモジュールを使えば、サーバー側で「そのパスワードは弱すぎるからダメ!」と拒否できるようになります。
設定ファイルは /etc/security/pwquality.conf です。ここに次のような設定を書き込みます。
# パスワードの最小文字数(最低でも12文字は欲しいですね)
minlen = 12
# 少なくとも1つの大文字、小文字、数字、記号を含めることを強制
dcredit = -1
ucredit = -1
lcredit = -1
ocredit = -1
# 辞書攻撃を防ぐため、以前のパスワードと似ているものも拒否
difok = 3
- なぜやるの?: 「password123」のような誰でも思いつく鍵を使わせないためです。たとえユーザーが怠慢でも、システム側で「門前払い」すれば、物理的に弱い鍵は作成できなくなります。
—
3. 「faillock」で、しつこい訪問者を追い返す
次に、何度間違えてもログインを試み続ける不審者を追い返しましょう。昔は pam_tally2 が使われていましたが、現在はより安全な faillock が標準です。
これは「5回失敗したら、10分間はログインを一切受け付けない」といった制限をかける仕組みです。/etc/pam.d/system-auth や password-auth に設定を書き加えます(※設定時は慎重に!)。
# ログイン失敗を記録し、3回失敗したら10分間ロックする設定例
auth required pam_faillock.so preauth silent audit deny=3 unlock_time=600
auth [default=die] pam_faillock.so authfail audit deny=3 unlock_time=600
account required pam_faillock.so
- なぜやるの?: これが「防犯カメラと自動警備」です。攻撃者がいくら高速でパスワードを試しても、3回目でロックされるため、攻撃プログラムは機能しなくなります。
—
4. 現場のプロからのアドバイス:やりすぎ注意!
さて、ここまで設定するとサーバーはかなり硬くなります。しかし、一つだけ注意点があります。
「自分自身も締め出されないようにすること」です。
特にリモートで作業している場合、設定ミスで自分がログインできなくなると、サーバーへのアクセス手段を失います。作業する際は、別のターミナルでログインしたままにしておき、設定ファイルを書き換えた後にすぐ別のウィンドウでテストログインを試す。「確認するまではログアウトしない」というのが、現場の鉄則です。
まとめ:セキュリティは「積み重ね」
今回紹介した二つの設定は、サーバーというお家の「頑丈なドア」と「防犯アラーム」を設置するようなものです。
1. pam_pwquality: 誰にも破られない「複雑な鍵」を作らせる。
2. faillock: 不審なガチャガチャを検知して「アクセスを遮断」する。
これだけで、インターネット上に公開されているサーバーの安全性は飛躍的に向上します。最初は難しく感じるかもしれませんが、まずは設定ファイルを眺めるところから始めてみてください。
皆さんが管理するサーバーが、今日も安全であることを願っています。何か不明点があれば、またいつでも聞きに来てくださいね!
コメント