_8.セキュリティ対策(パスワードポリシー)

企業システムなどでログイン認証を細かく制御するための設定ファイル

PAM  Pluggable Authentication Modules 
              単純な文字列パスワードの使用禁止、パスワード再入力の回数の制御など



①/etc/pam.d を表示してみます



②vi /etc/pam.d/system-auth

パスワードの制御ファイルである system-auth を vi で編集モードにする(当然、管理者で実行)



➂先頭列が「password」 3列目が「pam_pwquality.so」を変更します

  [pam_pwquality.so]のオプション

    retry=3       パスワード変更時の試行回数

    minlen=8      パスワードは最低8文字

    ucredit=-1  大文字が1文字以上必要(minlenと連動するため少なくともゼロ設定を記述)

    dcredit=-1  数字が1文字以上必要(minlenと連動するため少なくともゼロ設定を記述)

    lcredit=-1  小文字が1文字以上必要(minlenと連動するため少なくともゼロ設定を記述)

    ocredit=-1  記号が1文字以上必要  (minlenと連動するため少なくともゼロ設定を記述)



「pam_unix.so」を変更します

  [pam_unix.so]のオプション

    remember=2    直近のものに加えてさらに過去2回のパスワード再利用を禁止



⑤guestユーザでログインしてguestのパスワードを変更してみてください

新パスワード:パスワードポリシーに従わないと通りません

パスワードポリシーは先ほど設定しました
(パスワードは最低8文字)(大文字が1文字以上必要)(数字が1文字以上必要
(小文字が1文字以上必要)(記号が1文字以上必要



⑥変更した後、rootになってguestのパスワードを元の”kanatech”に戻しておいてください




●ログイン時のリトライ回数もPAMで設定できます。

実現するには、pamのpam_tally2.soモジュールを使います。

password-authのauthタイプに、以下に示したように追記します


⑦vi /etc/pam.d/password-auth 

auth        required      pam_env.so
auth        required      pam_tally2.so deny=3 ←←←←←←←←←ここ
auth        sufficient    pam_unix.so try_first_pass nullok
auth        required      pam_deny.so



オプションのdeny=3は、3回失敗したらアカウントがロックされるという設定になる。
[注意]3回を超えたら正しいパスワードでもひたすら失敗となるので注意。

一度ロックされると、管理者がロックを解除(回数リセット)しない限りロックされたままになる。
(ひたすら失敗ではじかれる)

ロック状態を自動的に解除するには、 unlock_time=秒 オプションを使えばよい。

指定した時間が経過したらロックが解除される。

⑧guestでのログインをパスワードを3回わざと間違えて4回目から正しいパスワードを入力しても、接続できなくなることを確認してください。



●ログインに失敗した回数は、/var/log/tallylogに記録されます。

/var/log/tallylogバイナリなので、状態を確認するには、pam_tally2コマンドを使います。
(rootで行います)

# pam_tally2 -u ユーザ名

(5回間違っているようです!)



●回数をリセットするには

⑩ --resetオプションを使ってロックをリセットする。

# pam_tally2 -u ユーザ名 --reset

再度 # pam_tally2 -u ユーザ名 失敗回数が0となったことを確認する

これで、初めて認証が成功するようになる。



⑪guestユーザで正しいパスワードを入力してログインしてください。


[注意]

sshで接続する場合、sshの環境設定によるログインリトライ回数の設定がありますので注意が必要です。

sshではじかれたときは、新たに接続しなおして正しいパスワードを入力すればログイン可能です。

sshのデフォルトリトライ回数は6回のようです(セキュリティシェルの項を参照のこと)。


●ユーザのロック

しばらく利用はしないが、利用再開の可能性があるユーザには、ログインできないように制御する必要があります。

 方法は4つです。

 (1)/etc/passwdファイのシェル指定をnologinに変更する(ただし変更ミスの危険性あり)

 (2)usermod -e 5/1/2014 ユーザ名  で有効期限を設定する

 (3)usermod -L ユーザ名       でロックする

 (4)passwd -l ユーザ名       でロックする(解除は passwd -u ユーザー名)

 ※ロックされた時でも root は su コマンドでロックされたユーザになることができます。

⑫(4)のパターンでユーザのロックを確認してみます

[root@aso ~]# passwd -l yokohama
ユーザー yokohama 用のパスワードをロック。
passwd: 成功

パスワードエラーでログインできません

[root@aso ~]# su yokohama
HELLO
2014年  7月 22日 火曜日 00:47:05 JST
[yokohama@aso root]$ exit
exit

[root@aso ~]# passwd -u yokohama
ユーザー yokohama 用のパスワードをロック解除。
passwd: 成功
[root@aso ~]#

ログインできるようになりました


⑬ロック状態を確認するには

 passwd -S ユーザ名 でアカウントの状態が表示されます


[root@icv99 ~]# passwd -S yokohama
yokohama LK 2014-07-27 0 99999 7 -1 (パスワードはロック済み。)
[root@icv99 ~]#


ちなみにロックされていないユーザは
 
[root@icv99 ~]# passwd -S guest
guest PS 2014-06-03 0 99999 7 -1 (パスワード設定済み、SHA512 暗号化。)
[root@icv99 ~]#


ちなみにロック状態の時shadowファイルには!がつく

[root@icv99 ~]# cat /etc/shadow | grep yokohama
yokohama:!$6$tn3Dfr1u$IWdfqkB5Zvj/3tCZ30IxEhCil5luDx8b2yKeMFonLRK73JtZXygVbH.hodbJEmW83MioI3VH4j90IsNQgFIUh1:16278:0:99999:7:::
[root@icv99 ~]#


実はこれをviで強制変更してもロックは解除される(ヨイ子はやっちゃだめ)

[root@icv99 ~]# passwd -S yokohama
yokohama PS 2014-07-27 0 99999 7 -1 (パスワード設定済み、SHA512 暗号化。)
[root@icv99 ~]#