不正アクセス対策のためにPAMをいじったら、サーバーを壊しかけた

2026-03-06T06:13:37.782Z

5segです。
ひやひやしました...

経緯

以前お話した通りVPSをお引越ししまして、セキュリティも十分整えてはいたと思い込んでいたのですが、今まで総当りに対する耐性が十分ではなかったことに気づきました。現実的に不可能なレベルでパスワードは難しくしているのですが、それでも破られるリスクが1ミリでもあるなら、対処すべきです。
それで、こちらの記事を参考にしたのですが、設定後...

fiveseg@fivevps:/etc/ssh$ sudo vim sshd_config
sudo: PAM account management error: Module is unknown
sudo: a password is required
fiveseg@fivevps:/etc/ssh$ sudo vim /etc/pam.d/common-account
sudo: PAM account management error: Module is unknown
sudo: a password is required
fiveseg@fivevps:/etc/ssh$ su
Password:
su: Module is unknown

あ、あれ?何もできないぞ...

救出する

原因を見つける前に、このままではサーバー管理が一切できないのでなんとかします。
幸いなことに、VirtFusionにはレスキューモードがあります。のでそこから頑張って救出します。
マウントはされていなかったので、自分でやります。

root@rescue:~# lsblk -l
NAME  MAJ:MIN RM   SIZE RO TYPE MOUNTPOINTS
loop0   7:0    0 265.7M  1 loop /run/live/rootfs/filesystem.squashfs
sda     8:0    0   368K  1 disk
sr0    11:0    1  1024M  0 rom
sr1    11:1    1 379.3M  0 rom  /run/live/medium
sr2    11:2    1   350K  0 rom
vda   254:0    0    40G  0 disk
vda1  254:1    0     1M  0 part
vda2  254:2    0   122M  0 part
vda3  254:3    0  39.9G  0 part

vda3が目的のパーティションだと思われるので、マウント。

root@rescue:~# mount /dev/vda3 /mnt

編集箇所を全て元通りにして、終了します。

原因

簡単な事で、参考記事がとても古かったです。
参考記事ではどうやらDebian 10を使っているらしいのですが、現在私が使っているDebian 13にはpam_tally2が含まれていません。
ファイルリスト
きちんと調べておきましょう。
ファイルリストを見ると、代わりに/usr/lib/x86_64-linux-gnu/security/pam_faillock.soが含まれていることがわかります。
ので、きちんとしてそうなlinuxconfigのガイドに従ったら、無事に設定ができました。

教訓

必ず調べる

脳死でコピペしてたおかげで、サーバーを破壊してしまいました。
何しても問題にならない環境でない限り、調べずに試す行為はやめましょう... AIに何でも聞いて、Ctrl+CとCtrl+Vをひたすら叩くのと同じことです。

裏でrootシェルを用意しておく

レスキューモードのおかげでなんとかなりましたが、これがなかった場合完全に詰みとなってしまいます。一から再構築です。
そして、レスキューモード中はサーバーが停止している状態なのでサービスが全部止まってしまいます。私の場合はVPN内のDNSサーバーとしてこのVPSを使っていたので、実質インターネットがダウンしたような状態になってしまいました。
ダウンタイムを最小限にするためにも、バックアップ用にセッションを構えておきましょう...

それでは。


記事一覧 ↩️