Lock user after a set number of login attempts but also automatically unlock after 5 minutes
หากต้องการให้ระบบทำการ lock user ที่จะพยายามเข้าสู่ระบบเกินกว่าจำนวนครั้งที่เรากำหนด แต่ไม่รู้จะสามารถทำได้อย่างไร ในบทความนี้มีคำตอบให้กับปัญหานี้ครับ
ใน Pluggable Authentication Module (PAM) มี module ที่ชื่อ pam_tally ซึ่งเป็น login counter module ซึ่งความสามารถของ module นี้คือ นับจำนวนครั้งที่ได้ทำการ login ถ้าในการ login นั้นสำเร็จ module นี้จะทำการ reset ค่า login counter แต่ถ้าทำการ login เกินกว่าจำนวนครั้งที่กำหนด module นี้จะทำการ lock user นั้นเป็นการชั่วคราวแล้วแต่ว่าเราจะกำหนดให้ว่าไม่สามารถใช้งานได้เป็นระยะเวลาเท่าไหร่
ไฟล์ที่เราจะต้องทำการตั้งค่า คือ ไฟล์ /etc/pam.d/system-auth
จากนั้นให้เรามองหา บรรทัด
auth required pam_tally.so
จากนั้นให้เราเพิ่ม parameter deny=จำนวนครั้งที่สามารถ login ได้ และ unlock_time=ระยะเวลาที่เราจะทำการ lock user ที่มีการ login เกินกว่าค่าที่กำหนด(deny)
#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth required pam_env.so
auth required pam_tally.so onerr=fail deny=3 unlock_time=300
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 sufficient pam_localuser.so
account sufficient pam_succeed_if.so uid < 500 quiet
account required pam_permit.so
password requisite pam_cracklib.so try_first_pass retry=3
password sufficient pam_unix.so md5 shadow nullok try_first_pass
use_authtok
password required pam_deny.so
session optional pam_keyinit.so revoke
session required pam_limits.so
session [success=1 default=ignore] pam_succeed_if.so service in crond
quiet use_uid
session required pam_unix.so
ถ้าเกิดว่าเราไม่ได้ตั้งค่า unlock_time ดังกล่าวแล้วเกิดมี user login ไม่ผ่านเกินจำนวนที่กำหนด user ดังกล่าวจะไม่สามารถใช้งานได้เลย ถ้าต้องการให้ใช้งานได้ให้ใช้คำสั่งด้านล่างนี้ครับ
#faillog -u username -r