วิธีค้นหาทุกวิธีที่บัญชีผู้ใช้ Unix ถูกล็อค


12

บางครั้งฉันพบว่าตัวเองอยู่ในสถานการณ์ที่ระบบ undermaintained มีบัญชีที่ถูกล็อค ปัญหาคือมีหลายวิธีที่บัญชีสามารถถูกล็อคแต่ละวิธีมีการปลดล็อก

ไม่ใช่ว่าบัญชีถูกล็อคอย่างไม่ถูกต้องเพียงแค่คาดไม่ถึง แต่การค้นหาการล็อคที่ถูกต้องเพื่อรีเซ็ตเป็นเรื่องยาก

การโจมตีครั้งล่าสุดของฉันของปัญหานี้เกิดขึ้นในระบบ SUSE และปรากฎว่ารหัสผ่านหมดอายุแล้ว (ซึ่งไม่เป็นที่รู้จักในตอนแรกเนื่องจากความพยายามในการเข้าสู่ระบบไม่ผ่านระบบที่ให้ข้อเสนอแนะแบบนั้น) แล้วก็ล็อก เนื่องจากความพยายามในการเข้าสู่ระบบล้มเหลว

มีรายการบางส่วนของการล็อคบัญชีที่แตกต่างกันทั้งหมดที่เป็นไปได้และวิธีการปิดการใช้งานพวกเขา? ฉันตั้งใจจะแตกหักจริงเช่นปัญหาการเข้าถึงไดเรกทอรีบ้านห้องสมุด PAM เสียหาย ฯลฯ เพื่อให้อยู่นอกขอบเขตสำหรับคำถามนี้

คำตอบ:


13

คุณสามารถใช้passwdเพื่อรวบรวมข้อมูลบางอย่างเช่นหากบัญชีถูกล็อค

passwd -S user
user LK 2012-11-06 0 99999 7 -1 (Password locked.) (CentOS)
user L 01/22/2013 0 99999 7 -1 (Ubuntu)

chageสาธารณูปโภคจะให้ข้อมูลเกี่ยวกับตัวนับต่างๆบนเช่นบัญชีสำหรับรหัสผ่านยังไม่ครบกำหนด

chage -l user
Last password change                                    : Nov 12, 2012
Password expires                                        : never
Password inactive                                       : never
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 99999
Number of days of warning before password expires       : 7

สำหรับรหัสผ่านที่หมดอายุ

chage -l user
Last password change                                    : password must be changed
Password expires                                        : password must be changed
Password inactive                                       : password must be changed
Account expires                                         : never
Minimum number of days between password change          : 0
Maximum number of days between password change          : 22
Number of days of warning before password expires       : 33

passwdและchageสาธารณูปโภคยังรายการหลายล็อคบัญชี

คุณสามารถใช้getentเพื่อดึงข้อมูลโดยตรงจากฐานข้อมูลที่เกี่ยวข้องสำหรับการตรวจสอบ

getent passwd user
user:x:505:505::/home/passtest:/sbin/nologin  <-- denied login
getent shadow user
user:!!:0:0:22:33:44::   <-- this is locked

7

โดยทั่วไป: ไม่

คำตอบของ Iain เป็นบทสรุปที่ดีเกี่ยวกับวิธีการสืบค้นระบบการตั้งรหัสผ่าน ตัวอย่างเช่น:

  • บางคนพยายามเข้าสู่ระบบผ่านทาง ssh อาจถูกห้ามโดยคำสั่งในการsshdกำหนดค่า
  • ระบบอาจได้รับการกำหนดค่าให้อนุญาตเฉพาะสมาชิกของ netgroup ที่แน่นอนเพื่อเข้าสู่ระบบ
  • การPAMกำหนดค่าท้องถิ่นอาจต้องการความเป็นสมาชิกกลุ่มอย่างชัดเจนเพื่อเข้าสู่ระบบหรืออาจอนุญาตรายการของผู้ใช้เฉพาะเท่านั้น
  • สิ่งที่ดูเหมือนว่าบัญชีที่ถูกล็อคอาจกลายเป็นปัญหาการเข้าถึงไดเรกทอรีภายในบ้าน
  • บางคนอาจสร้าง/etc/nologinซึ่งสำหรับบางแอปพลิเคชัน (เช่นssh) จะล็อคผู้ใช้ทั้งหมด

กล่าวอีกนัยหนึ่งมีหลายวิธีที่บัญชีจะถูกล็อคซึ่งไม่มีส่วนเกี่ยวข้องกับpasswdไฟล์ ทางออกที่ดีที่สุดของคุณคือการตรวจสอบ/var/log/secureหรืออะนาล็อกท้องถิ่นที่เหมาะสมกระจาย


ฉันตั้งใจว่าจะคิดว่าสิ่งต่าง ๆ ไม่ "เสียหาย" และผู้ใช้สามารถเข้าสู่ระบบมาก่อนได้ กล่าวคือว่าบางระบบทำงานอย่างถูกต้องล็อคบัญชี สิ่งเหล่านี้เป็นจุดที่ดี แต่ฉันจะอัปเดตคำถามให้ชัดเจนยิ่งขึ้น
wfaulk

1

นอกเหนือจากที่กล่าวมาแล้วpasswd chageและgetentยังมีpam_tally2

หากจำนวนครั้งที่พยายามลงชื่อเข้าใช้ล้มเหลวเกินขีด จำกัด ที่อนุญาต (ซึ่งตั้งค่าไว้ใน /etc/pam.d/password-auth) คุณต้องทำpam_tally2 --user=foo --resetก่อนจึงจะสามารถลงชื่อเข้าใช้ได้อีกครั้ง


0

สคริปต์ต่อไปนี้จะให้คำอธิบายสั้น ๆ แก่ผู้ใช้ทุกคนและสถานะของพวกเขา (ถูกล็อคหรือไม่)

cat /etc/passwd | cut -d : -f 1 | awk '{ system("passwd -S " $0) }'

นั่นเป็นการตรวจสอบวิธีการเดียวเท่านั้นที่สามารถล็อคบัญชีได้
wfaulk
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.