SSブログ

pam_tally2とfaillockでパスワードロックした話 [Linux]

セキュリティを上げるため、Linuxでパスワードを何回か間違うと、ログインできなくなるということをやった。基本SSHでログインするので、SSHだけやっておけばOKってことで。というか、直のコンソールでもそれをやると逆に困りそうなので考えない。

基本的にPAMという仕組みを使ってやることになるのだけれど、現状pam_tally2とfaillockが使える(CentOS7とか?)。なんでダブスタなんだという話なんだけど、まぁそこはまだこなれていなかったということなんでしょうね。最初、faillockがうまく動かなかったので、pam_tally2でやってみた。faillockを使えて分かったのだけれど、pam_tally2の方が融通が効くというか、簡略的な書き方で設定できるので、使い心地としてはpam_tally2の方が良かった。どっちも入っているときはどっちも使えるんで、よくコンフリクトしないなぁと思ったり。

pam_tally2でsshを設定するのですが、/etc/pam.d/sshd に以下の二行を適切なところに入れれば問題なく動きました(入れ込む場所とかはググって適当なところを見つけてください)。denyは回数で、unlock_timeはロックする時間です。これはpam_tally2もfaillockも同じなはず。その他のパラメータは知らんけど。

auth     required    pam_tally2.so deny=2 unlock_time=3600
account  required    pam_tally2.so


分かりやすい。faillockでも/etc/pam.d/sshd に設定を行ったんだけど、間違う前の最初からロックしてしまって上手くいきませんでした。設定が悪かっただけかもしれないんですが、faillockで/etc/pam.d/sshd に設定をするという例が見つからなかったので、そもそもできない可能性はあります。

同様にpam_tally2で/etc/pam.d/password-auth にも設定できて動作もするんですが、Faillockだと/etc/pam.d/system-authにも同じように設定しないと動かないので、注意が必要。ググったらpassword-authしか設定していないところとか普通にあるので、どちらもやらないとダメです。pam_tally2のつもりでやっていたら動きません。

RedHat系はここに書いてある通りやればいいんですけど、

https://access.redhat.com/documentation/ja-jp/red_hat_enterprise_linux/7/html/security_guide/chap-hardening_your_system_with_tools_and_services

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

を適宜入れ込めばいいんですけど、なぜ二つのファイルに同じことを書かないといけないのかが冗長すぎて気持ち悪いです。まぁPAMの仕組みがそうであるということなんでしょうけど、pam_tally2はそうではないのでやっぱ気持ち悪いですね。それとこのやり方だとコンソールだろうと何だろうと間違うとロックしちゃうんじゃないかな? たぶんsshでも直接コンソールを使っても同じになっちゃうんだと思う。手持ちの仮想化サーバではそういう挙動であった気がした。

faillockがsshだけをターゲットにできないなら、pam_tally2からデグッていることにもなろうとは思いますが、Linux標準になったからと言っていいものが残るというわけでもないのがキツいですね。そういうところは変な政治圧力とか他の本来どうでもいいところで足枷になって消えていってしまうものも結構あったりする。


あと他にPermitRootLoginでrootで入れないようにもしたんだけど、yes, no以外でいろいろ設定できるのも初耳でした。色々する奴がいると言うことで。
https://qiita.com/ine1127/items/b50b9a8f831736cf14ea

それとIPでアクセス制御もできたりするんだけど、盛り過ぎなので機会があったらまた書きます。これは会社の環境でファイル名が独自で、それでググって全然出てこなくて一時途方に暮れていました。というか、設定ファイルで独自ファイル名とかやめてよねw。/etcでgrepかけるときはrootにならないといけないし。まぁ設定ファイルを変更するにはルートにならないといけないから別にいいけど…。

コメント(0) 

コメント 0