ユーザ認証/制御はコンプライアンス的に必須となるところが増えている。 そんな時はOSで出来る限りの制御を行えるので、それで対応をしてみる。 ポリシー †とりあえず、セキュリティポシリーがなければ始まらないので、適当に以下の内容で作成。
大項目は以上。以下から詳細と手順。 パスワードルール †パスワードもITリテラシーが低い人や、考えが甘い人だと「1234」とかやってしまうので、サーバ側で制御してしまう。 ルールは次の3つのルールのを適応する
設定 †# vim /etc/pam.d/system-auth password requisite pam_cracklib.so try_first_pass type= minlen=8 dcredit=-1 ucredit=-1 lcredit=-1 passwordから始まるカラムがあり、その次にrequisiteがあり、pam_cracklib.soを宣言している行があり…、と非常に間違いやすいので注意。 ちなみに、ここの意味は以下のサイトでとっても分かりやすくまとめて頂いているので、 http://www.server-world.info/query?os=CentOS_6&p=password 簡単に書式説明をすると、
以上となる。 system-authとpassword-authの違い †基本的にsystem-authはサーバのユーザ認証全般に関わる設定を司る。 password-authはsshや、ftpなどのミドルウェアのユーザ認証を司る。 初回ログイン時にパスワード変更 †これも提供されたパスワードを使う人がいるので、その対策の一つ。 設定 †すでにパスワード登録されたユーザに対して行う。 # passwd -e testuser こうすることで強制的にパスワードの有効期限を超えることが出来るので、 使い回し禁止(世代管理) †パスワードを変更しても、前回、前々回と同じものを使い回せば当然セキュリティも脆くなる。 設定 †# vim /etc/pam.d/system-auth 注目すべきは、最後尾の"remember=3"。 また、この管理専用のファイルを作成する必要がある。 # touch /etc/security/opasswd # chmod 600 /etc/security/opasswd ログイン連続失敗 †ログインを連続で失敗した場合ロックをかける、そうすることで悪いものからの連続アタックも拒否できる。 設定 †色々試してうまく行った結果。 # vim /etc/pam.d/system-auth auth required pam_env.so auth required pam_tally2.so deny=3 unlock_time=30 ## ←ここ① auth sufficient pam_unix.so nullok try_first_pass auth requisite pam_succeed_if.so uid >= 500 quiet auth required pam_deny.so ----省略---- account required pam_unix.so account required pam_tally2.so ## ←ここ② account sufficient pam_localuser.so account sufficient pam_succeed_if.so uid < 500 quiet account required pam_permit.so また、ssh経由でも当然制御したいので、password-authにも上の2行と同じものを同じ場所へ記述する。 # vim /etc/pam.d/password-auth 少し補足 unlock_time=30 備考 †ユーザのロックはコマンドでも確認出来る。当然コマンドで解除も出来る。 testuserのログイン失敗履歴確認 # pam_tally2 -u testuser testuserのロックを解除 # pam_tally2 -u testuser --reset 再度確認 # pam_tally2 -u testuser パスワードの有効期限 †パスワードをそのままに使用し続けることもセキュリティホールの一つなので、適期的に変更を求める。 以下をポリシーにする。 設定 †# vim /etc/login.defs PASS_MAX_DAYS 45 # 有効期限 PASS_MIN_DAYS 0 # 変更禁止期間 PASS_WARN_AGE 10 # 事前警告日数 特定ユーザの制御を解除 †例えば、rootと同一アカウントを作成した場合、そのユーザのみ上記の制御から外し、 # chage -M 99999 root2 |