วิธีบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านบน Linux

เผยแพร่แล้ว: 2022-01-29
ข้อความ "รหัสผ่านล้มเหลว" จาก sshd
Ilya Titchev/Shutterstock

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

รหัสผ่านมีมาเกือบ 60 ปีแล้ว

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

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

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

โฆษณา

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

เห็นได้ชัดว่าการจัดการรหัสผ่านมีความสำคัญ เช่นเดียวกับการจัดการผู้ที่ใช้รหัสผ่านเหล่านั้น

ที่เกี่ยวข้อง: วิธีสร้างและติดตั้งคีย์ SSH จาก Linux Shell

กายวิภาคของรหัสผ่าน

อะไรทำให้รหัสผ่านดี? รหัสผ่านที่ดีควรมีคุณสมบัติดังต่อไปนี้:

  • เป็นไปไม่ได้ที่จะเดาหรือคิดออก
  • คุณไม่ได้ใช้ที่อื่น
  • ไม่ได้มีส่วนเกี่ยวข้องกับการละเมิดข้อมูล

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

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

รหัสผ่านแบบสุ่มอย่างแท้จริง (เช่น 4HW@HpJDBr%*Wt@#b~aP) นั้นคงกระพันอยู่จริง แต่แน่นอนว่าคุณไม่มีวันจำมันได้ เราขอแนะนำให้คุณใช้ตัวจัดการรหัสผ่านสำหรับบัญชีออนไลน์ พวกเขาสร้างรหัสผ่านแบบสุ่มที่ซับซ้อนสำหรับบัญชีออนไลน์ทั้งหมดของคุณ และคุณไม่จำเป็นต้องจำรหัสผ่าน เพราะตัวจัดการรหัสผ่านจะจัดเตรียมรหัสผ่านที่ถูกต้องให้กับคุณ

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

โฆษณา

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

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

ขั้นต่ำ 12 อักขระอาจฟังดูน่ากลัวในตอนแรก อย่างไรก็ตาม อย่าคิดในแง่ของรหัสผ่าน แต่เป็นข้อความรหัสผ่านที่มีคำที่ไม่เกี่ยวข้องสามหรือสี่คำที่คั่นด้วยเครื่องหมายวรรคตอน

ตัวอย่างเช่น Experte Password Checker กล่าวว่าจะใช้เวลา 42 นาทีในการถอดรหัส “chicago99” แต่ 400 พันล้านปีในการถอดรหัส “chimney.purple.bag” นอกจากนี้ยังง่ายต่อการจดจำและพิมพ์ และมีเพียง 18 อักขระ

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

กำลังตรวจสอบการตั้งค่าปัจจุบัน

ก่อนที่คุณจะทำการเปลี่ยนแปลงใดๆ เกี่ยวกับรหัสผ่านของบุคคล ควรพิจารณาการตั้งค่าปัจจุบันของพวกเขาอย่างรอบคอบ ด้วยคำสั่ง passwd คุณสามารถตรวจสอบการตั้งค่าปัจจุบันด้วยตัวเลือก -S (สถานะ) โปรดทราบว่าคุณจะต้องใช้ sudo กับ passwd ด้วย หากคุณใช้การตั้งค่ารหัสผ่านของผู้อื่น

เราพิมพ์ดังต่อไปนี้:

 sudo passwd -S mary 

ข้อมูลบรรทัดเดียวจะพิมพ์ไปที่หน้าต่างเทอร์มินัลดังที่แสดงด้านล่าง

คุณเห็นข้อมูลต่อไปนี้ (จากซ้ายไปขวา) ในการตอบกลับสั้น ๆ นั้น:

  • ชื่อล็อกอินของบุคคล
  • หนึ่งในสามตัวบ่งชี้ที่เป็นไปได้ต่อไปนี้ปรากฏขึ้นที่นี่:
    • : แสดงว่าบัญชีมีรหัสผ่านที่ถูกต้องและใช้งานได้
    • L: หมายความว่าบัญชีถูกล็อคโดยเจ้าของบัญชีรูท
    • NP: ยังไม่ได้ตั้งรหัสผ่าน
  • วันที่เปลี่ยนรหัสผ่านครั้งล่าสุด
  • อายุรหัสผ่านขั้นต่ำ: ระยะเวลาขั้นต่ำ (เป็นวัน) ที่ต้องผ่านไประหว่างการรีเซ็ตรหัสผ่านที่ดำเนินการโดยเจ้าของบัญชี อย่างไรก็ตาม เจ้าของบัญชีรูทสามารถเปลี่ยนรหัสผ่านของใครก็ได้เสมอ หากค่านี้เป็น 0 (ศูนย์) จะไม่มีข้อจำกัดเกี่ยวกับความถี่ในการเปลี่ยนรหัสผ่าน
  • อายุรหัสผ่านสูงสุด: เจ้าของบัญชีจะได้รับแจ้งให้เปลี่ยนรหัสผ่านเมื่อถึงอายุนี้ ค่านี้กำหนดเป็นวัน ดังนั้นค่า 99,999 หมายความว่ารหัสผ่านไม่มีวันหมดอายุ
  • ระยะเวลาเตือนการเปลี่ยนรหัสผ่าน: หากมีการบังคับใช้อายุรหัสผ่านสูงสุด เจ้าของบัญชีจะได้รับการแจ้งเตือนให้เปลี่ยนรหัสผ่านของตน ครั้งแรกจะถูกส่งจำนวนวันที่แสดงที่นี่ก่อนวันที่รีเซ็ต
  • ระยะเวลาที่ไม่ใช้งานรหัสผ่าน: หากมีผู้ไม่เข้าใช้ระบบในช่วงระยะเวลาหนึ่งซึ่งทับซ้อนกับกำหนดเวลาการรีเซ็ตรหัสผ่าน รหัสผ่านของบุคคลนี้จะไม่ถูกเปลี่ยน ค่านี้ระบุจำนวนวันของระยะเวลาผ่อนผันหลังจากวันหมดอายุของรหัสผ่าน หากบัญชียังคงไม่มีการใช้งานในจำนวนนี้หลังจากรหัสผ่านหมดอายุ บัญชีจะถูกล็อค ค่า -1 จะปิดใช้ระยะเวลาผ่อนผัน

การตั้งค่าอายุรหัสผ่านสูงสุด

หากต้องการกำหนดระยะเวลารีเซ็ตรหัสผ่าน คุณสามารถใช้ตัวเลือก -x (จำนวนวันสูงสุด) กับจำนวนวันได้ คุณต้องไม่เว้นช่องว่างระหว่าง -x และตัวเลข ดังนั้นคุณจะต้องพิมพ์ดังนี้:

 sudo passwd -x45 แมรี่ 

โฆษณา

เราแจ้งว่าค่าหมดอายุมีการเปลี่ยนแปลงดังแสดงด้านล่าง

ใช้ตัวเลือก -S (สถานะ) เพื่อตรวจสอบว่าค่าตอนนี้คือ 45:

 sudo passwd -S mary 

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

บังคับให้เปลี่ยนรหัสผ่านทันที

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

 sudo passwd -e mary 

เราได้รับแจ้งว่ามีการเปลี่ยนแปลงข้อมูลการหมดอายุของรหัสผ่าน

ลองตรวจสอบด้วยตัวเลือก -S และดูว่าเกิดอะไรขึ้น:

 sudo passwd -S mary 

โฆษณา

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

หน้าจอรีเซ็ตรหัสผ่าน

คุณควรบังคับใช้การเปลี่ยนแปลงรหัสผ่านหรือไม่

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

ความคิดตอนนี้กลับเป็นขั้วตรงข้าม ในสหราชอาณาจักร National Cyber ​​Security Center ไม่แนะนำให้บังคับใช้การต่ออายุรหัสผ่านเป็นประจำ และ National Institute of Standards and Technology ในสหรัฐอเมริกาก็เห็นด้วย ทั้งสององค์กรแนะนำให้บังคับเปลี่ยนรหัสผ่านก็ต่อเมื่อคุณรู้หรือสงสัยว่ามีผู้อื่นรู้จักรหัสผ่านที่มีอยู่

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

ทั้งสององค์กรที่เรากล่าวถึงข้างต้นแนะนำแนวทางต่อไปนี้สำหรับการรักษาความปลอดภัยรหัสผ่าน:

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

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

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

ที่เกี่ยวข้อง: คุณควรเปลี่ยนรหัสผ่านเป็นประจำหรือไม่?

คำสั่งเชค

คุณสามารถใช้คำสั่ง chage เพื่อเปลี่ยนการตั้งค่าเกี่ยวกับอายุรหัสผ่าน คำสั่งนี้ได้รับชื่อมาจาก “เปลี่ยนอายุ” มันเหมือนกับคำสั่ง passwd ที่เอาองค์ประกอบการสร้างรหัสผ่านออก

อ็อพชัน -l (รายการ) แสดงข้อมูลเดียวกับคำสั่ง passwd -S แต่เป็นแบบที่เป็นมิตรมากกว่า

เราพิมพ์ดังต่อไปนี้:

 sudo chage -l eric 

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

เราพิมพ์ดังต่อไปนี้:

 sudo chage eric -E 2020-11-30 

ต่อไป เราพิมพ์ข้อความต่อไปนี้เพื่อให้แน่ใจว่าการเปลี่ยนแปลงนี้เสร็จสิ้นแล้ว:

 sudo chage -l eric 

เราเห็นวันหมดอายุของบัญชีเปลี่ยนจาก “ไม่เคย” เป็น 30 พ.ย. 2020

โฆษณา

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

เราพิมพ์ดังต่อไปนี้:

 sudo chage -M 45 mary 

เราพิมพ์ข้อมูลต่อไปนี้โดยใช้ตัวเลือก -l (รายการ) เพื่อดูผลของคำสั่งของเรา:

 sudo chage -l mary 

ตอนนี้กำหนดวันหมดอายุของรหัสผ่านเป็น 45 วันนับจากวันที่เราตั้งไว้ ซึ่งดังที่แสดงไว้คือวันที่ 8 ธันวาคม 2020

การเปลี่ยนรหัสผ่านสำหรับทุกคนในเครือข่าย

เมื่อสร้างบัญชีแล้ว ระบบจะใช้ชุดค่าเริ่มต้นสำหรับรหัสผ่าน คุณสามารถกำหนดค่าเริ่มต้นสำหรับวันต่ำสุด สูงสุด และเตือนได้ ไฟล์เหล่านี้จะถูกเก็บไว้ในไฟล์ชื่อ “/etc/login.defs”

คุณสามารถพิมพ์ข้อความต่อไปนี้เพื่อเปิดไฟล์นี้ใน gedit :

 sudo gedit /etc/login.defs 

เลื่อนไปที่ส่วนควบคุมอายุรหัสผ่าน

การควบคุมอายุรหัสผ่านในตัวแก้ไข gedit

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

โฆษณา

หากคุณต้องการเปลี่ยนวันหมดอายุรหัสผ่านทั้งหมดสำหรับบัญชีผู้ใช้ที่มีอยู่ คุณสามารถทำได้โดยใช้สคริปต์ เพียงพิมพ์ข้อความต่อไปนี้เพื่อเปิดตัวแก้ไข gedit และสร้างไฟล์ชื่อ “password-date.sh”:

 sudo gedit รหัสผ่าน-date.sh 

ถัดไป คัดลอกข้อความต่อไปนี้ลงในโปรแกรมแก้ไข บันทึกไฟล์ จากนั้นปิด gedit :

 #!/bin/bash

reset_days=28

สำหรับชื่อผู้ใช้ใน $(ls /home)
ทำ
  sudo chage $ชื่อผู้ใช้ -M $reset_days
  echo $username รหัสผ่านหมดอายุเปลี่ยนเป็น $reset_days
เสร็จแล้ว

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

ขั้นแรก เราพิมพ์ข้อความต่อไปนี้เพื่อทำให้สคริปต์ของเราสามารถดำเนินการได้:

 chmod +x รหัสผ่าน-date.sh 

ตอนนี้ เราสามารถพิมพ์ข้อความต่อไปนี้เพื่อเรียกใช้สคริปต์ของเรา:

 sudo ./password-date.sh 

แต่ละบัญชีจะได้รับการประมวลผลดังที่แสดงด้านล่าง

เราพิมพ์ข้อความต่อไปนี้เพื่อตรวจสอบบัญชีสำหรับ "mary":

 sudo เปลี่ยน -l mary 

โฆษณา

ค่าจำนวนวันสูงสุดถูกตั้งไว้ที่ 28 และเราได้รับแจ้งว่าจะลดลงในวันที่ 21 พ.ย. 2020 คุณยังสามารถแก้ไขสคริปต์และเพิ่มคำสั่ง chage หรือ passwd เพิ่มเติมได้อย่างง่ายดาย


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