จำกัดจำนวนครั้งในการลองรหัสผ่านบน Linux เพื่อปกป้องบริการที่สำคัญ

  • การกำหนดค่าโมดูล PAM เช่น pam_faillock และ pam_tally2 ช่วยให้คุณสามารถบล็อกบัญชีได้หลังจากพยายามเข้าสู่ระบบล้มเหลวหลายครั้งบน Red Hat, Debian และ Ubuntu
  • การปรับค่า MaxAuthTries ในไฟล์ sshd_config จะจำกัดจำนวนครั้งในการลองเชื่อมต่อ SSH ต่อครั้ง ซึ่งเป็นการเสริมการทำงานของนโยบายการบล็อกในระดับระบบ
  • ไฟล์ต่างๆ เช่น /etc/login.defs, /etc/shadow และเครื่องมือต่างๆ เช่น change และ passwd ใช้สำหรับจัดการการหมดอายุของรหัสผ่านและพารามิเตอร์ส่วนกลาง
  • โมดูล pam_cracklib และ pam_pwquality ช่วยเพิ่มความซับซ้อนของรหัสผ่าน ป้องกันการใช้รหัสผ่านที่อ่อนแอและการนำไปใช้ซ้ำอย่างไม่ปลอดภัย

การรักษาความปลอดภัยโดยการจำกัดจำนวนครั้งในการลองรหัสผ่านใน Linux

จำกัดจำนวนครั้งในการป้อนรหัสผ่านใน Linux นี่ไม่ใช่แค่ความคิดฟุ้งซ่านของเหล่าผู้ดูแลระบบที่หวาดระแวงเท่านั้น แต่เป็นหนึ่งในมาตรการที่มีประสิทธิภาพที่สุดในการหยุดยั้งการโจมตีแบบเดาพาสเวิร์ดและการเข้าถึงโดยไม่ได้รับอนุญาต ทั้งในสภาพแวดล้อมเดสก์ท็อปและเซิร์ฟเวอร์ หากคอมพิวเตอร์ของคุณมีข้อมูลที่สำคัญหรือเชื่อมต่อกับอินเทอร์เน็ต คุณควรจะรักษาความปลอดภัยส่วนนี้ของระบบ ตรวจสอบเครือข่ายท้องถิ่นของคุณ.

นอกจากการตั้งรหัสผ่านที่ปลอดภัยแล้ว ตั้งค่าการล็อกชั่วคราวหรือถาวรหลังจากเกิดความล้มเหลวหลายครั้ง นี่คือประเด็นสำคัญ: มันช่วยชะลอการโจมตีของผู้บุกรุก สร้างบันทึกข้อมูลเพิ่มเติมสำหรับการตรวจสอบ และช่วยให้คุณสามารถผสานการป้องกันนี้เข้ากับนโยบายรหัสผ่านอื่นๆ (การหมดอายุ ความซับซ้อน การใช้ซ้ำ ฯลฯ) เรามาดูกันอย่างละเอียดว่าวิธีการนี้ดำเนินการอย่างไรในระบบปฏิบัติการต่างๆ และในระดับต่างๆ ของระบบ

บัญชีถูกล็อกเนื่องจากพยายามเข้าสู่ระบบล้มเหลวหลายครั้งบน Red Hat, CentOS และระบบปฏิบัติการที่พัฒนาต่อยอดจาก Red Hat

ในการแจกแจง อิงตาม Red Hat (RHEL, CentOS, Rocky, AlmaLinux…)การบล็อกบัญชีเนื่องจากการเข้าสู่ระบบล้มเหลวหลายครั้งจะถูกจัดการด้วยโมดูล PAM แพม_เฟลล็อคโมดูลนี้ควบคุมจำนวนครั้งที่อนุญาตให้เข้าสู่ระบบล้มเหลว ระยะเวลาที่บัญชีถูกล็อก และผู้ใช้ที่จะได้รับผลกระทบ (รวมถึงผู้ใช้ระดับสูงสุด หากคุณต้องการ)

ในการใช้นโยบายนี้ คุณต้องแก้ไขไฟล์ PAM ทั่วโลกตามปกติ /etc/pam.d/system-auth และในบางเวอร์ชันก็เช่นกัน /etc/pam.d/password-authไฟล์เหล่านี้ทำหน้าที่เป็นแม่แบบสำหรับบริการตรวจสอบสิทธิ์ส่วนใหญ่ในระบบ (การเข้าสู่ระบบคอนโซล, sudo, SSH เป็นต้น)

ไฟล์เหล่านี้มีบรรทัดที่คล้ายกับบรรทัดเหล่านี้ ภายในส่วนของ รับรองความถูกต้อง y บัญชี:

auth required pam_faillock.so preauth silent audit deny=2 unlock_time=120
auth pam_faillock.so authfail audit deny=2 unlock_time=120
account required pam_faillock.so

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

พารามิเตอร์ที่พบได้บ่อยที่สุดของ แพม_เฟลล็อค เสียง:

  • การตรวจสอบบัญชี: เปิดใช้งานการบันทึกรายละเอียดของการพยายามเข้าสู่ระบบ เพื่อให้มีการบันทึกร่องรอยไว้ในบันทึกของระบบ (ตัวอย่างเช่น ใน / var / log / ปลอดภัย).
  • ปฏิเสธ=2การตั้งค่านี้จะกำหนดจำนวนครั้งสูงสุดในการป้อนรหัสผ่านผิดก่อนที่บัญชีจะถูกล็อก ในตัวอย่างนี้คือ 2 ครั้ง แต่คุณสามารถเพิ่มได้ (3, 5, 10 ครั้ง…)
  • เวลาปลดล็อก=120: ระบุระยะเวลาการบล็อกเป็นวินาที ในที่นี้คือ 120 วินาที (2 นาที) ก่อนที่บัญชีจะเปิดใช้งานโดยอัตโนมัติ
  • เงียบหากมีอยู่ ระบบจะไม่แสดงให้ผู้ใช้เห็นว่าพวกเขาถูกบล็อกระบบจะหยุดรับการล็อกอินโดยอัตโนมัติ ทำให้ระบบ "แสดงข้อมูล" น้อยลงสำหรับผู้โจมตี

รายละเอียดที่สำคัญอย่างหนึ่งก็คือ โดยค่าเริ่มต้นแล้ว รากถูกยกเว้นจากบล็อกนี้หากคุณต้องการใช้กฎเดียวกันนี้กับส่วนนั้นด้วย คุณต้องเพิ่มพารามิเตอร์ แม้แต่ปฏิเสธสิทธิ์รูท ในบรรทัด pam_faillock ของส่วนการตรวจสอบสิทธิ์ การทำเช่นนี้จะช่วยเพิ่มความปลอดภัย แต่คุณควรพิจารณาความเสี่ยงที่จะสูญเสียการเข้าถึงหากคุณทำผิดพลาดมากเกินไป

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

หากต้องการดูจำนวนครั้งที่ผู้ใช้รายใดรายหนึ่งพยายามเข้าสู่ระบบไม่สำเร็จ บนระบบ Red Hat คุณสามารถใช้คำสั่งต่อไปนี้ได้ เฟลล็อก ชี้ไปยังบัญชีที่คุณสนใจ:

faillock --user lionel

คำสั่งนี้จะแสดง ผู้ใช้รายนี้พยายามเข้าสู่ระบบไม่สำเร็จมาแล้วกี่ครั้ง?รวมถึงที่อยู่ IP ที่ใช้ในกรณีของ SSH และรายละเอียดอื่นๆ ที่เกี่ยวข้องกับการตรวจสอบ นอกจากนี้ คุณยังสามารถตรวจสอบสิ่งที่ปรากฏในรายงานได้เสมอ / var / log / ปลอดภัยซึ่งเหตุการณ์ด้านความปลอดภัยเหล่านี้จะถูกบันทึกไว้

จำกัดจำนวนครั้งในการป้อนรหัสผ่านใน Linux

บัญชีถูกล็อกเนื่องจากพยายามเข้าสู่ระบบผิดพลาดในระบบ Debian และ Ubuntu

ในกรณีของ Debian, Ubuntu และอนุพันธ์หลักการทำงานคล้ายกัน แต่โมดูล PAM ที่ใช้มีการเปลี่ยนแปลง โดยปกติแล้วจะถูกนำมาใช้ในลักษณะนี้ แพม_ทัลลี่2 เพื่อนับจำนวนการพยายามเข้าสู่ระบบที่ล้มเหลวและบล็อกบัญชีโดยอัตโนมัติ แม้ว่าในเวอร์ชันที่ทันสมัยจะแนะนำให้ย้ายไปใช้ก็ตาม แพม_เฟลล็อคถึงกระนั้น pam_tally2 ก็ยังคงพบเห็นได้ทั่วไปในคู่มือและสภาพแวดล้อมต่างๆ มากมาย

ในระบบ Debian ทั่วไป หากต้องการล็อกระบบโดยอิงจากจำนวนครั้งที่ป้อนรหัสผิด คุณจะต้องแก้ไขไฟล์ /etc/pam.d/common-authซึ่งกำหนดนโยบายการตรวจสอบสิทธิ์มาตรฐานสำหรับบริการภายในส่วนใหญ่ คุณสามารถเพิ่มบรรทัดลักษณะนี้ลงไปได้:

auth required pam_tally2.so onerr=fail deny=3 unlock_time=120 audit even_deny_root root_unlock_time=600

ด้วยการตั้งค่าแบบนี้ ระบบจะทำงานได้ บัญชีถูกบล็อกหลังจากพยายามเข้าสู่ระบบผิดพลาด 3 ครั้งระบบจะคงการล็อกไว้เป็นเวลา 120 วินาทีสำหรับผู้ใช้ทั่วไป และ 600 วินาทีสำหรับผู้ใช้ระดับรูท นอกจากนี้ หากเกิดข้อผิดพลาดใดๆ กับโมดูล (onerr=ล้มเหลว) ด้วยเหตุผลด้านความปลอดภัย การเข้าถึงจึงถูกปฏิเสธแทนที่จะได้รับอนุญาต

พารามิเตอร์หลักของ แพม_ทัลลี่2 เสียง:

  • onerr=ล้มเหลวหากมีปัญหาในการอ่านหรืออัปเดตตัวนับการพยายามเข้าสู่ระบบ ระบบจะปฏิเสธการตรวจสอบสิทธิ์เพื่อป้องกันการเปิดประตูทิ้งไว้โดยไม่ได้ตั้งใจ
  • ปฏิเสธ=3: จำนวนครั้งสูงสุดที่อนุญาตให้ป้อนรหัสผิดก่อนที่บัญชีจะถูกล็อก โดยปกติแล้วค่า 3 ถือว่าเหมาะสมในทางปฏิบัติ
  • เวลาปลดล็อก=120: ระยะเวลาเป็นวินาทีที่บัญชีจะถูกล็อกสำหรับผู้ใช้ทั่วไป
  • การตรวจสอบบัญชี: บันทึกข้อมูลความล้มเหลวในการตรวจสอบสิทธิ์ (ใน Debian มักจะเป็นแบบนี้) /var/log/auth.log).
  • แม้แต่ปฏิเสธสิทธิ์รูท: บังคับให้สิทธิ์ root ถูกนับรวมในระบบล็อกนี้ด้วย ซึ่งควรใช้ด้วยความระมัดระวัง
  • root_unlock_time=600: ระยะเวลาล็อกเฉพาะสำหรับบัญชี root ในหน่วยวินาที โดยไม่ขึ้นอยู่กับผู้ใช้รายอื่น

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

เพื่อดูความพยายามที่ไม่สำเร็จที่บันทึกไว้โดย แพม_ทัลลี่2 สำหรับผู้ใช้เฉพาะราย (ตัวอย่างเช่น lionel) คุณสามารถใช้คำสั่งต่อไปนี้:

pam_tally2 -u lionel

คำสั่งนี้ แสดงจำนวนความล้มเหลวสะสม และยังช่วยให้คุณรีเซ็ตตัวนับด้วยตนเองได้หากจำเป็น พร้อมตัวเลือกเพิ่มเติม นอกจากนี้ เช่นเดียวกับใน Red Hat คุณยังมีตัวเลือกในการตรวจสอบอยู่เสมอ /var/log/auth.log เพื่อดูรายละเอียดเพิ่มเติมเกี่ยวกับสิ่งที่เกิดขึ้นในแต่ละครั้งที่พยายามยืนยันตัวตน

จำกัดจำนวนครั้งในการพยายามเชื่อมต่อ SSH ด้วย MaxAuthTries

หนึ่งในช่องทางเข้าใช้งานที่พบบ่อยที่สุดในเซิร์ฟเวอร์ Linux คือ SSHด้วยเหตุนี้ การควบคุมจำนวนครั้งที่อนุญาตให้ลองยืนยันตัวตนต่อการเชื่อมต่อแต่ละครั้งจึงมีความสำคัญอย่างยิ่ง และนี่คือจุดที่นโยบายเข้ามามีบทบาท MaxAuthTriesซึ่งกำหนดค่าไว้ในไฟล์ / etc / SSH / sshd_config จากเซิร์ฟเวอร์ OpenSSH

แนวคิดนี้เรียบง่าย: MaxAuthTries กำหนดจำนวนครั้งสูงสุดที่อนุญาตให้พยายามยืนยันตัวตนต่อการเชื่อมต่อ SSH หนึ่งครั้งหากเกินขีดจำกัดนี้ เซิร์ฟเวอร์จะตัดการเชื่อมต่อ ทำให้ผู้โจมตีต้องเริ่มเซสชันใหม่เพื่อลองชุดค่าผสมต่อไป ซึ่งจะทำให้การโจมตีแบบเดาแบบสุ่มอัตโนมัติช้าลงอย่างมาก

ในการตั้งค่า เพียงแค่แก้ไขไฟล์การตั้งค่า:

sudo nano /etc/ssh/sshd_config

ถัดไป ให้ค้นหาหรือเพิ่มบรรทัดลักษณะนี้:

MaxAuthTries 3

ด้วยค่านี้ อนุญาตให้ลองยืนยันตัวตนได้เพียงสามครั้งต่อการเชื่อมต่อ SSH เท่านั้นหากผู้ใช้ทำผิดพลาดซ้ำหลายครั้ง โปรแกรม sshd จะล็อกเอาต์ผู้ใช้คนนั้นออก การเปลี่ยนแปลงจะมีผลก็ต่อเมื่อต้องรีโหลดหรือรีสตาร์ทบริการ เช่น โดยใช้คำสั่ง:

sudo systemctl restart sshd

MaxAuthTries ไม่ได้มาแทนที่โมดูล PAM เช่น pam_tally2 หรือ pam_faillock แต่เป็นการทำงานเพิ่มเติมเพื่อทดแทนโมดูลเหล่านั้น ทำงานแบบขนานเซิร์ฟเวอร์ SSH จะควบคุมจำนวนครั้งที่อนุญาตให้พยายามเชื่อมต่อติดต่อกันในเซสชันเดียว ในขณะที่ PAM จะนับจำนวนครั้งโดยรวมต่อผู้ใช้แต่ละราย และสามารถบล็อกบัญชีของผู้ใช้ในระดับระบบได้

นอกเหนือจาก MaxAuthTries แล้ว แนะนำให้ใช้มาตรการรักษาความปลอดภัย SSH อื่นๆ ร่วมด้วยเพื่อให้บริการมีความแข็งแกร่งมากยิ่งขึ้น:

  • เปลี่ยนพอร์ตเริ่มต้น: การหยุดใช้พอร์ต 22 และย้าย SSH ไปยังพอร์ตที่ไม่เด่นชัดจะช่วยกรองการสแกนอัตโนมัติพื้นฐานหลายอย่างได้
  • ใช้คีย์สาธารณะแทนการใช้รหัสผ่านเพียงอย่างเดียวการตรวจสอบสิทธิ์โดยใช้คีย์ SSH ช่วยขจัดปัญหาเรื่องรหัสผ่านที่อ่อนแอ และมีความทนทานต่อการโจมตีแบบเดาแบบสุ่ม (brute-force attack) มากกว่า
  • จำกัดแหล่งที่มาโดยใช้ไฟร์วอลล์หรือกำหนดค่า DMZการอนุญาตให้เข้าถึง SSH จากที่อยู่ IP หรือช่วงเครือข่ายที่กำหนดเท่านั้น ถือเป็นการสร้างกำแพงป้องกันที่มีประสิทธิภาพสูงในระดับเครือข่าย

พีเอ็ม ลินุกซ์

จำกัดจำนวนครั้งในการพยายามยืนยันตัวตนในเครื่องด้วย PAM

นอกเหนือจาก SSH แล้ว... การตรวจสอบสิทธิ์ในพื้นที่ (คอนโซล, TTY, sudo, ตัวจัดการการแสดงผลแบบกราฟิก) ก็ได้รับการจัดการด้วย PAM เช่นกัน ใน Debian และ Ubuntu เป็นต้น ไฟล์ /etc/pam.d/common-auth มันคือหัวใจสำคัญของการกำหนดค่านี้ และในระบบของ Red Hat บทบาทของมันก็ถูกแสดงออกมาอย่างชัดเจน ระบบรับรองความถูกต้อง (และบางครั้งก็ต้องใช้การยืนยันตัวตนด้วยรหัสผ่าน)

นอกเหนือจากโมดูลการบล็อกเฉพาะ เช่น pam_faillock หรือ pam_tally2 แล้ว ดิสทริบิวชันบางตัวยังอนุญาตให้จำกัดจำนวนครั้งและเวลาในการเข้าสู่ระบบได้โดยตรงผ่านทางโมดูลนี้ ล็อกอิน.ดีเฟนส์ในไฟล์นี้ ซึ่งตั้งอยู่ใน /etc/login.defsมีการประกาศค่าต่างๆ เช่นค่าต่อไปนี้:

  • LOGIN_RETIES: จำนวนครั้งสูงสุดที่อนุญาตให้ลองเข้าสู่ระบบใหม่ก่อนที่จะยกเลิกกระบวนการ
  • LOGIN_TIMEOUT: ระยะเวลาสูงสุด (หน่วยเป็นวินาที) ที่เซสชันการเข้าสู่ระบบจะรอการป้อนข้อมูลจากผู้ใช้

ตัวอย่างเช่น หากคุณปรับเปลี่ยน LOGIN_RETIES ด้วยการจำกัดรหัสผ่านไว้ที่ 3 ชุด ผู้ใช้จะมีโอกาสป้อนรหัสผ่านได้เพียง 3 ครั้งในการเข้าสู่ระบบครั้งเดียว ก่อนที่ระบบจะปิดกั้นการพยายามนั้นและบังคับให้ผู้ใช้เริ่มต้นกระบวนการใหม่ ระบบไม่ได้ล็อกบัญชีโดยตรง แต่ก็เป็นการล็อกบัญชีนั่นเอง จำกัดจำนวนครั้งในการลองต่อเซสชัน.

ในไฟล์เดียวกัน ล็อกอิน.ดีเฟนส์ นอกจากนี้ คุณยังสามารถปรับพารามิเตอร์ด้านความปลอดภัยอื่นๆ ที่เกี่ยวข้องได้ เช่น:

  • PASS_MAX_DAYS: จำนวนวันสูงสุดที่สามารถใช้รหัสผ่านได้ก่อนที่จะถูกบังคับให้เปลี่ยนรหัสผ่าน
  • ผ่านไป 2 วัน: กำหนดจำนวนวันขั้นต่ำระหว่างการเปลี่ยนรหัสผ่าน เพื่อหลีกเลี่ยงการเปลี่ยนรหัสผ่านบ่อยเกินไปและแบบต่อเนื่อง
  • รหัสผ่าน_คำเตือน_อายุ: แจ้งล่วงหน้าหลายวันก่อนที่รหัสผ่านจะหมดอายุ เพื่อให้ผู้ใช้มีเวลาเตรียมตัว
  • ความยาวขั้นต่ำผ่าน y ความยาวสูงสุดผ่านความยาวรหัสผ่านขั้นต่ำและขั้นสูงสุด
  • คำเตือนผ่านเสมอ: แจ้งเตือนเมื่อรหัสผ่านไม่ตรงตามเกณฑ์ความปลอดภัยที่กำหนด
  • การเปลี่ยนรหัสผ่าน_ลอง: จำนวนครั้งสูงสุดที่สามารถลองเปลี่ยนรหัสผ่านได้ หากรหัสผ่านใหม่นั้นง่ายเกินไป
  • เข้ารหัส_วิธีการ: อัลกอริทึมแฮชที่ใช้สำหรับรหัสผ่าน (โดยทั่วไปในปัจจุบันคือ...) SHA-512ระบุไว้ดังนี้ $ 6 $).

คำสั่งเหล่านี้ส่งผลกระทบเป็นหลัก ผู้ใช้ใหม่ ไฟล์เหล่านี้ถูกสร้างขึ้นหลังจากปรับแต่งไฟล์ login.defs แล้ว ดังนั้นจึงเป็นวิธีที่สะดวกในการกำหนดนโยบายพื้นฐานสำหรับทั้งองค์กร

การจัดการจำนวนครั้งที่พยายามและการหมดอายุด้วยไฟล์ /etc/shadow และคำสั่ง change

ไฟล์ / etc / shadow นี่คือที่ที่ระบบจัดเก็บรหัสผ่านที่เข้ารหัสไว้ของผู้ใช้ภายในระบบ พร้อมกับข้อมูลวันหมดอายุทั้งหมด แม้ว่าจะไม่ได้มีการเปลี่ยนแปลงด้วยตนเองทุกวัน แต่การทำความเข้าใจโครงสร้างของข้อมูลเหล่านี้จะช่วยอย่างมากในการตรวจสอบและปรับปรุงนโยบายความปลอดภัย

ในแต่ละบรรทัดของ / etc / shadow มีช่องข้อมูลหลายช่องปรากฏขึ้น โดยคั่นด้วยเครื่องหมายโคลอน ช่องข้อมูลที่เกี่ยวข้องกับนโยบายของเรามากที่สุด ได้แก่:

  • ชื่อผู้ใช้: ระบุบัญชีที่ฟิลด์อื่นๆ เป็นของ
  • รหัสผ่านที่เข้ารหัส: ถูกจัดเก็บเป็น $id$salt$hashedที่ไหน $id$ ระบุอัลกอริทึม (1 MD5, ปลาปักเป้า $2a$/$2y$, 5 ดอลลาร์ SHA-256, 6 ดอลลาร์ SHA-512ตามด้วยเกลือและกัญชา
  • การเปลี่ยนรหัสผ่านครั้งล่าสุด: จำนวนวันนับตั้งแต่วันที่ 1 มกราคม 1970 (ยุคเริ่มต้น) เมื่อมีการแก้ไขครั้งล่าสุด
  • จำนวนวันใช้งานขั้นต่ำและขั้นสูงสุดพวกเขาสามารถควบคุมได้ว่าเมื่อใดจึงจะสามารถเปลี่ยนรหัสผ่านได้อีกครั้ง และรหัสผ่านจะหมดอายุเมื่อใด
  • วันแจ้งเตือนการหมดอายุระบบจะเริ่มแจ้งเตือนผู้ใช้กี่วันก่อนวันหมดอายุ
  • จำนวนวันที่ไม่มีกิจกรรมเมื่อรหัสผ่านหมดอายุแล้ว บัญชีจะถูกปิดใช้งานโดยสมบูรณ์ภายในเวลานานเท่าใด?
  • วันหมดอายุบัญชีที่แน่นอน: นอกจากนี้ยังแสดงในรูปแบบวันตั้งแต่ปี 1970 ซึ่งระบุช่วงเวลาที่ผู้ใช้รายนั้นไม่สามารถเข้าสู่ระบบได้อีกต่อไป

ในการจัดการพารามิเตอร์เหล่านี้โดยไม่ต้องแก้ไขไฟล์ /etc/shadow โดยตรง จะใช้คำสั่งต่อไปนี้: ความโกรธ (เปลี่ยนอายุซึ่งช่วยให้คุณสามารถปรับระยะเวลาหมดอายุของรหัสผ่านและบัญชีสำหรับผู้ใช้เฉพาะรายได้

ตัวเลือกทั่วไปบางประการสำหรับ ความโกรธ เสียง:

  • -d, –วันสุดท้าย: กำหนดวันที่ของการเปลี่ยนรหัสผ่านครั้งล่าสุด (ในรูปแบบวันนับตั้งแต่ยุคเริ่มต้น หรือในรูปแบบวันที่ที่อ่านได้)
  • -E, –วันหมดอายุ: กำหนดวันที่บัญชีจะหมดอายุ
  • -ฉัน -ไม่ได้ใช้งาน: ตั้งค่าบัญชีเป็นสถานะไม่ใช้งานหลังจากผ่านไปหลายวันนับจากวันที่รหัสผ่านหมดอายุ
  • -ม, –นาทีวัน: กำหนดจำนวนวันขั้นต่ำระหว่างการเปลี่ยนรหัสผ่าน
  • -M, –maxdays: ระบุจำนวนวันสูงสุดที่รหัสผ่านยังคงใช้งานได้
  • -W, –วันเตือน: กำหนดจำนวนวันก่อนหมดอายุที่จะเริ่มแจ้งเตือน
  • -l, –รายการ: แสดงสถานะการหมดอายุปัจจุบันของผู้ใช้

ตัวอย่างเช่น เพื่อตรวจสอบข้อมูลวันหมดอายุของบัญชีผู้ใช้ Pepe สามารถดำเนินการได้ดังนี้:

chage -l pepe

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

นโยบายความซับซ้อนของรหัสผ่านด้วย pam_cracklib และ pam_pwquality

การจำกัดจำนวนครั้งในการป้อนรหัสผ่านนั้นดี แต่ถ้าหากรหัสผ่านเป็นอะไรที่ยากๆ อย่างเช่น “123456” หรือ “qwerty” คุณก็คงไปต่อไม่ได้ไกลนัก นั่นเป็นเหตุผลว่าทำไมมันถึงสำคัญมาก บังคับใช้รหัสผ่านที่ปลอดภัย โดยใช้โมดูล PAM เช่น แพม_แคร็กลิบ และในเวอร์ชันที่ใหม่กว่านั้น คุณภาพแพม_พีดับ.

โมดูล คุณภาพแพม_พีดับ มันคือวิวัฒนาการของ cracklib และสามารถทำงานร่วมกับไลบรารีต่างๆ ได้ เช่น libpwคุณภาพ เพื่อตรวจสอบว่ารหัสผ่านไม่อยู่ในพจนานุกรม ไม่สั้นเกินไป และไม่ซ้ำกับรูปแบบง่ายๆ หรือข้อมูลส่วนตัวของผู้ใช้ ฟังก์ชันนี้มีอยู่ในระบบปฏิบัติการ RHEL อยู่แล้ว และสามารถติดตั้งใน Debian/Ubuntu ได้โดยใช้แพ็กเกจต่างๆ เช่น libpam-cracklib y libpam-pwquality.

เมื่อติดตั้งเสร็จแล้ว การตั้งค่าหลักมักจะทำในไฟล์ /etc/security/pwquality.confโดยคุณสามารถกำหนดพารามิเตอร์ความซับซ้อนได้ เช่น:

  • ฉันเสียใจ: จำนวนอักขระที่ต้องแตกต่างจากรหัสผ่านเดิม
  • มินเลนความยาวขั้นต่ำที่ยอมรับได้สำหรับรหัสผ่านใหม่
  • เครดิต, ยูเครดิต, เครดิต, เขาเชื่อขอขอบคุณสำหรับการใส่ตัวเลข ตัวอักษรพิมพ์ใหญ่ ตัวอักษรพิมพ์เล็ก และอักขระอื่นๆ ลงไปในผลงานนี้
  • มินคลาส: จำนวนขั้นต่ำของคลาสอักขระที่แตกต่างกันที่ต้องการ (ตัวพิมพ์เล็ก ตัวพิมพ์ใหญ่ ตัวเลข สัญลักษณ์)
  • ทำซ้ำสูงสุด: จำนวนอักขระที่เหมือนกันติดต่อกันสูงสุดที่อนุญาต
  • แม็กซ์คลาสทำซ้ำ: จำนวนอักขระติดกันสูงสุดของคลาสเดียวกัน
  • จีคอสเช็ค: ตรวจสอบว่ารหัสผ่านไม่มีคำจากช่อง GECOS (ช่องแสดงความคิดเห็น) ของผู้ใช้ในไฟล์ /etc/passwd
  • เผด็จการ: เส้นทางไปยังพจนานุกรมที่ใช้ตรวจสอบว่ารหัสผ่านเป็นส่วนหนึ่งของคำที่รู้จักหรือไม่
  • คำพูดหยาบคาย: รายชื่อคำที่ถูกห้ามใช้โดยชัดเจน

ระบบ หน่วยกิต มันมีความยืดหยุ่นเป็นพิเศษ โดยพื้นฐานแล้ว รหัสผ่านจะได้รับคะแนนเพิ่มขึ้นหากมีอักขระหลากหลายชนิด คะแนนเหล่านั้นสามารถชดเชยความยาวที่สั้นลงเล็กน้อยได้ ตัวอย่างเช่น ด้วย minlen=10 y dcredit=2รหัสผ่าน 8 ตัวอักษรที่มีตัวเลข 2 หลัก อาจผ่านการตรวจสอบได้ เนื่องจากจะเพิ่มเครดิตพิเศษ 2 หน่วย อย่างไรก็ตาม หากคุณกำหนดเครดิตติดลบ คุณจะต้องมีอักขระติดลบอย่างน้อยหนึ่งตัว (ตัวอย่างเช่น dcredit=-1 (ต้องมีอย่างน้อยหนึ่งหลัก ไม่มีข้อยกเว้น)

กับ มินคลาส คุณสามารถกำหนดให้รหัสผ่านต้องประกอบด้วยคลาสที่แตกต่างกันหลายประเภท ตัวอย่างเช่น ค่า 2 ฟอร์ซ การผสมผสานระหว่างตัวอักษรและตัวเลข หรือตัวอักษรและสัญลักษณ์ เป็นต้น คลาสขั้นต่ำ=4 นั่นหมายถึงการใช้ตัวอักษรพิมพ์เล็ก ตัวอักษรพิมพ์ใหญ่ ตัวเลข และอักขระพิเศษพร้อมกัน ซึ่งเป็นเรื่องปกติมากในนโยบายองค์กรที่เข้มงวด

เครื่องมือเช่น คะแนน pwscore ระบบเหล่านี้ช่วยให้คุณทดสอบความแข็งแกร่งของรหัสผ่านเทียบกับนโยบายที่กำหนดไว้ เมื่อมีการป้อนรหัสผ่านผ่านระบบ คะแนน pwscoreสิ่งนี้จะบอกคุณว่ารหัสลับนั้นตรงตามข้อกำหนดหรือไม่ และหากไม่ตรงตามข้อกำหนด ก็ระบุว่าละเมิดกฎข้อใด (ความยาวไม่เพียงพอ ง่ายเกินไป คล้ายกับรหัสลับก่อนหน้ามากเกินไป เป็นต้น)

กำหนดค่านโยบายที่แข็งแกร่งบน Debian และ Ubuntu ด้วย pam_cracklib

ในระบบ Debian/Ubuntu การใช้งานแบบนี้เป็นเรื่องปกติมาก แพม_แคร็กลิบ (หรือ pwquality ผ่าน PAM) เพื่อบังคับใช้นโยบายรหัสผ่าน ไฟล์สำคัญในที่นี้คือ /etc/pam.d/common-รหัสผ่านซึ่งกำหนดวิธีการจัดการการเปลี่ยนแปลงรหัสผ่านสำหรับผู้ใช้ระบบ

ก่อนที่จะลงมือทำอะไร ควรสำรองข้อมูลไฟล์ไว้ก่อนเสมอ:

sudo cp /etc/pam.d/common-password /root/

จากนั้นคุณสามารถแก้ไขได้ด้วยโปรแกรมแก้ไขข้อความที่คุณชื่นชอบ (nano, vim ฯลฯ) โดยใช้สิทธิ์ผู้ดูแลระบบ คุณจะพบบรรทัดที่คล้ายกับ:

password requisite pam_cracklib.so retry=3 minlen=8 difok=3

ในที่นี้ จะมีการกำหนดพารามิเตอร์ต่างๆ ดังต่อไปนี้:

  • ลองใหม่อีกครั้งจำนวนครั้งที่อนุญาตให้ผู้ใช้ลองเปลี่ยนรหัสผ่าน ก่อนที่การเปลี่ยนรหัสผ่านจะล้มเหลว
  • มินเลนความยาวรหัสผ่านขั้นต่ำ
  • ฉันเสียใจ: จำนวนอักขระที่ต้องแตกต่างจากรหัสผ่านเดิม
  • ยูเครดิต, เครดิต, เครดิต, เขาเชื่อ: การให้เครดิตบวกหรือลบสำหรับตัวอักษรพิมพ์ใหญ่ ตัวอักษรพิมพ์เล็ก ตัวเลข และอักขระอื่นๆ

ตัวอย่างเช่น นโยบายที่ค่อนข้างเข้มงวดอาจเป็นดังนี้:

password requisite pam_cracklib.so retry=3 minlen=12 difok=3 ucredit=-3 lcredit=-3 dcredit=-3 ocredit=-3

ด้วยการตั้งค่านี้ รหัสผ่านใหม่ทุกรหัสต้องมีความยาวอย่างน้อย 12 ตัวอักษรรหัสผ่านต้องแตกต่างจากรหัสผ่านก่อนหน้าอย่างน้อย 3 ตัวอักษร และต้องประกอบด้วยตัวอักษรพิมพ์ใหญ่ 3 ตัว ตัวอักษรพิมพ์เล็ก 3 ตัว ตัวเลข 3 ตัว และสัญลักษณ์ 3 ตัว นี่เป็นนโยบายที่เข้มงวดมาก แต่มีประสิทธิภาพอย่างยิ่งในการป้องกันรหัสผ่านที่ง่ายเกินไป

เมื่อคุณเปลี่ยนนโยบายเสร็จแล้ว คุณสามารถทดสอบได้โดยการเปลี่ยนรหัสผ่านของคุณเองด้วยคำสั่งต่อไปนี้:

sudo passwd

หากรหัสผ่านไม่ตรงตามข้อกำหนด ระบบจะแสดงข้อความแจ้งเหตุผล เช่น สั้นเกินไป คล้ายกับคำในพจนานุกรม มีตัวอักษรซ้ำกันมากเกินไป เป็นต้น เมื่อรหัสผ่านตรงตามนโยบายแล้ว การเปลี่ยนแปลงจะถูกนำไปใช้โดยไม่มีปัญหา

นอกเหนือจากการเข้มงวดนโยบายเกี่ยวกับการเปลี่ยนแปลงใหม่ ๆ แล้ว Debian และ Ubuntu ยังอนุญาตให้... บังคับให้ผู้ใช้ปัจจุบันเปลี่ยนรหัสผ่าน เพื่อปรับตัวให้เข้ากับกฎใหม่ โดยใช้คำสั่ง:

passwd -e USUARIO

รหัสผ่านของผู้ใช้รายนั้นถูกทำเครื่องหมายว่าหมดอายุแล้ว และในการเข้าสู่ระบบครั้งถัดไป ผู้ใช้จะต้องตั้งรหัสผ่านใหม่ที่สอดคล้องกับนโยบายปัจจุบัน นอกจากนี้ คุณยังสามารถควบคุมการหมดอายุของรหัสผ่านทั่วโลกได้ด้วย:

passwd -w 5 -x 30 USUARIO

ที่ไหน -x 30 กำหนดอายุการใช้งานสูงสุดของรหัสผ่านไว้ที่ 30 วัน และ -w5 ระบบจะเริ่มแจ้งเตือนคุณล่วงหน้า 5 วันก่อนวันหมดอายุ หากคุณเพิ่ม -ฉัน 1:

passwd -w 5 -x 30 -i 1 USUARIO

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

แม้ว่าการเปลี่ยนรหัสผ่านบ่อยๆ จะได้รับการแนะนำมานานแล้ว แต่แนวทางด้านความปลอดภัยสมัยใหม่ (เช่น จาก NIST) ได้กำหนดคุณสมบัติของแนวทางปฏิบัตินี้ไว้: ควรเลือกใช้รหัสผ่านที่ยาวและซับซ้อน รวมถึงระบบยืนยันตัวตนสองขั้นตอนจะดีกว่าแทนที่จะบังคับให้มีการเปลี่ยนแปลงบ่อยเกินไป ซึ่งจะทำให้เกิดคีย์ที่คาดเดาได้ในที่สุด

ตั้งค่าโมดูล PAM (pam_faillock, pam_tally2, pam_cracklib, pam_pwquality) และไฟล์สำคัญต่างๆ อย่างระมัดระวัง เช่น /etc/pam.d/common-auth, /etc/pam.d/common-รหัสผ่าน, /etc/login.defs, / etc / SSH / sshd_config และเข้าใจว่าการตัดสินใจเหล่านั้นสะท้อนออกมาอย่างไร / etc / shadowนี่คือความแตกต่างระหว่างระบบ "มาตรฐาน" กับสภาพแวดล้อมที่มีความแข็งแกร่งอย่างแท้จริงในการป้องกันการเข้าถึงโดยไม่ได้รับอนุญาตและการโจมตีแบบเดาสุ่ม

แผนที่
บทความที่เกี่ยวข้อง:
ตรวจสอบเครือข่ายภายในของคุณด้วย Nmap และ Wireshark ทีละขั้นตอน

เพิ่มเป็นแหล่งข้อมูลที่ต้องการใน Google