วิธีบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านบน Linux
เผยแพร่แล้ว: 2022-01-29รหัสผ่านเป็นหัวใจสำคัญของการรักษาความปลอดภัยของบัญชี เราจะแสดงวิธีรีเซ็ตรหัสผ่าน กำหนดระยะเวลาหมดอายุของรหัสผ่าน และบังคับใช้การเปลี่ยนแปลงรหัสผ่านบนเครือข่าย 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
และสร้างไฟล์ชื่อ “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
เพิ่มเติมได้อย่างง่ายดาย
การจัดการรหัสผ่านเป็นสิ่งที่ต้องดำเนินการอย่างจริงจัง ตอนนี้ คุณมีเครื่องมือที่จำเป็นในการควบคุมแล้ว