สวัสดีอีกครั้ง! ชั้นเรียนในกลุ่มหลักสูตรใหม่เริ่มพรุ่งนี้
ในบทช่วยสอนก่อนหน้านี้ เราได้บอกคุณถึงวิธีการใช้งาน pam_cracklib
เพื่อทำให้รหัสผ่านในระบบมีความซับซ้อนมากขึ้น pam_pwquality
แทนที่ cracklib
ในขณะที่ pam
โมดูลเริ่มต้นสำหรับการตรวจสอบรหัสผ่าน โมดูล pam_pwquality
ยังรองรับบน Ubuntu และ CentOS รวมถึงระบบปฏิบัติการอื่น ๆ อีกมากมาย โมดูลนี้ทำให้ง่ายต่อการสร้างนโยบายรหัสผ่านเพื่อให้แน่ใจว่าผู้ใช้ยอมรับมาตรฐานความแข็งแกร่งของรหัสผ่านของคุณ
เป็นเวลานานมาแล้วที่แนวทางทั่วไปในการใช้รหัสผ่านคือการบังคับให้ผู้ใช้ใช้ตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข หรือสัญลักษณ์อื่นๆ กฎพื้นฐานสำหรับความซับซ้อนของรหัสผ่านเหล่านี้ได้รับการส่งเสริมอย่างกว้างขวางในช่วงสิบปีที่ผ่านมา มีการถกเถียงกันมากมายว่านี่เป็นแนวปฏิบัติที่ดีหรือไม่ ข้อโต้แย้งหลักที่ต่อต้านการตั้งค่าเงื่อนไขที่ซับซ้อนดังกล่าวก็คือ ผู้ใช้จดรหัสผ่านลงบนกระดาษและเก็บไว้อย่างไม่ปลอดภัย
นโยบายอื่นที่เพิ่งถูกตั้งคำถามบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านทุกๆ x วัน มีการศึกษาบางชิ้นที่แสดงให้เห็นว่าสิ่งนี้เป็นอันตรายต่อความปลอดภัยด้วย
มีการเขียนบทความจำนวนมากเกี่ยวกับหัวข้อการสนทนาเหล่านี้ ซึ่งยืนยันมุมมองหนึ่งหรืออีกมุมมองหนึ่ง แต่นี่ไม่ใช่สิ่งที่เราจะพูดถึงในบทความนี้ บทความนี้จะพูดถึงวิธีตั้งค่าความซับซ้อนของรหัสผ่านอย่างถูกต้องแทนที่จะจัดการนโยบายความปลอดภัย
การตั้งค่านโยบายรหัสผ่าน
ด้านล่างนี้คุณจะเห็นตัวเลือกนโยบายรหัสผ่านและคำอธิบายโดยย่อของแต่ละตัวเลือก หลายอย่างคล้ายกับพารามิเตอร์ในโมดูล cracklib
. แนวทางนี้ช่วยให้ย้ายนโยบายของคุณจากระบบเดิมได้ง่ายขึ้น
- ฉันเสียใจ – จำนวนอักขระในรหัสผ่านใหม่ของคุณที่ไม่ควรปรากฏในรหัสผ่านเก่าของคุณ (ค่าเริ่มต้น 5)
- มินเลน – ความยาวรหัสผ่านขั้นต่ำ (ค่าเริ่มต้น 9)
- ยูเครดิต – จำนวนเครดิตสูงสุดสำหรับการใช้อักขระตัวพิมพ์ใหญ่ (หากพารามิเตอร์ > 0) หรือจำนวนอักขระตัวพิมพ์ใหญ่ขั้นต่ำที่ต้องการ (หากพารามิเตอร์ < 0) ค่าเริ่มต้นคือ 1
- เครดิต — จำนวนเครดิตสูงสุดสำหรับการใช้อักขระตัวพิมพ์เล็ก (หากพารามิเตอร์ > 0) หรือจำนวนอักขระตัวพิมพ์เล็กขั้นต่ำที่ต้องการ (หากพารามิเตอร์ < 0) ค่าเริ่มต้นคือ 1
- เครดิต — จำนวนเครดิตสูงสุดสำหรับการใช้ตัวเลข (หากพารามิเตอร์ > 0) หรือจำนวนหลักขั้นต่ำที่ต้องการ (หากพารามิเตอร์ < 0) ค่าเริ่มต้นคือ 1
- เขาเชื่อ — จำนวนเครดิตสูงสุดสำหรับการใช้สัญลักษณ์อื่น ๆ (หากพารามิเตอร์ > 0) หรือจำนวนขั้นต่ำที่ต้องการของสัญลักษณ์อื่น ๆ (หากพารามิเตอร์ < 0) ค่าเริ่มต้นคือ 1
- มินคลาส – กำหนดจำนวนคลาสที่ต้องการ คลาสประกอบด้วยพารามิเตอร์ข้างต้น (อักขระตัวพิมพ์ใหญ่ อักขระตัวพิมพ์เล็ก ตัวเลข และอักขระอื่นๆ) ค่าเริ่มต้นคือ 0
- ทำซ้ำสูงสุด – จำนวนครั้งสูงสุดที่สามารถใส่อักขระซ้ำในรหัสผ่านได้ ค่าเริ่มต้นคือ 0
- แม็กซ์คลาสทำซ้ำ — จำนวนอักขระต่อเนื่องสูงสุดในหนึ่งคลาส ค่าเริ่มต้นคือ 0
- จีคอสเช็ค – ตรวจสอบว่ารหัสผ่านมีคำใด ๆ จากสตริง GECOS ของผู้ใช้หรือไม่ (ข้อมูลผู้ใช้ เช่น ชื่อจริง สถานที่ ฯลฯ) ค่าเริ่มต้นคือ 0 (ปิด)
- เผด็จการ – ไปที่พจนานุกรม cracklib กันดีกว่า
- คำพูดหยาบคาย – คำที่เว้นวรรคซึ่งห้ามใช้ในรหัสผ่าน (ชื่อบริษัท คำว่า “รหัสผ่าน” ฯลฯ)
ถ้าแนวคิดเรื่องเงินกู้ฟังดูแปลกๆ ก็ไม่เป็นไร เป็นเรื่องปกติ เราจะพูดถึงเรื่องนี้เพิ่มเติมในส่วนต่อไปนี้
การกำหนดค่านโยบายรหัสผ่าน
ก่อนที่คุณจะเริ่มแก้ไขไฟล์การกำหนดค่า คุณควรจดนโยบายรหัสผ่านพื้นฐานไว้ล่วงหน้า ตัวอย่างเช่น เราจะใช้กฎความยากต่อไปนี้:
- รหัสผ่านต้องมีความยาวอย่างน้อย 15 ตัวอักษร
- อักขระเดียวกันไม่ควรซ้ำกันเกินสองครั้งในรหัสผ่าน
- คลาสอักขระสามารถทำซ้ำได้สูงสุดสี่ครั้งด้วยรหัสผ่าน
- รหัสผ่านจะต้องมีอักขระจากแต่ละคลาส
- รหัสผ่านใหม่จะต้องมีอักขระใหม่ 5 ตัวเมื่อเทียบกับรหัสผ่านเก่า
- เปิดใช้งานการตรวจสอบ GECOS
- ห้ามใช้คำว่า “รหัสผ่าน,รหัสผ่าน,คำ,รหัสผ่าน”
หลังจากที่เราได้วางนโยบายแล้ว เราก็สามารถแก้ไขไฟล์ได้ /etc/security/pwquality.conf
เพื่อเพิ่มข้อกำหนดความซับซ้อนของรหัสผ่าน ด้านล่างนี้เป็นไฟล์ตัวอย่างพร้อมความคิดเห็นเพื่อความเข้าใจที่ดีขึ้น
# Make sure 5 characters in new password are new compared to old password
difok = 5
# Set the minimum length acceptable for new passwords
minlen = 15
# Require at least 2 digits
dcredit = -2
# Require at least 2 upper case letters
ucredit = -2
# Require at least 2 lower case letters
lcredit = -2
# Require at least 2 special characters (non-alphanumeric)
ocredit = -2
# Require a character from every class (upper, lower, digit, other)
minclass = 4
# Only allow each character to be repeated twice, avoid things like LLL
maxrepeat = 2
# Only allow a class to be repeated 4 times
maxclassrepeat = 4
# Check user information (Real name, etc) to ensure it is not used in password
gecoscheck = 1
# Leave default dictionary path
dictpath =
# Forbid the following words in passwords
badwords = password pass word putorius
ดังที่คุณอาจสังเกตเห็นว่าพารามิเตอร์บางตัวในไฟล์ของเราซ้ำซ้อน ตัวอย่างเช่น พารามิเตอร์ minclass
ซ้ำซ้อนเนื่องจากเราใช้อักขระอย่างน้อยสองตัวจากคลาสที่ใช้ฟิลด์แล้ว [u,l,d,o]credit
. รายการคำที่ไม่สามารถใช้ได้ของเรานั้นซ้ำซ้อน เนื่องจากเราห้ามไม่ให้เรียนซ้ำคลาสใดๆ 4 ครั้ง (คำทั้งหมดในรายการของเราเขียนด้วยอักขระตัวพิมพ์เล็ก) ฉันได้รวมตัวเลือกเหล่านี้ไว้เพื่อสาธิตวิธีใช้เพื่อกำหนดค่านโยบายรหัสผ่านของคุณเท่านั้น
เมื่อคุณสร้างนโยบายแล้ว คุณสามารถบังคับให้ผู้ใช้เปลี่ยนรหัสผ่านเมื่อเข้าสู่ระบบครั้งถัดไปได้
สิ่งแปลก ๆ อีกประการหนึ่งที่คุณอาจสังเกตเห็นก็คือทุ่งนา [u,l,d,o]credit
มีจำนวนลบ เนื่องจากตัวเลขที่มากกว่าหรือเท่ากับ 0 จะให้เครดิตสำหรับการใช้อักขระในรหัสผ่านของคุณ หากฟิลด์มีจำนวนลบ แสดงว่าต้องมีปริมาณที่แน่นอน
สินเชื่อคืออะไร?
ฉันเรียกพวกเขาว่าสินเชื่อเพราะมันสื่อถึงวัตถุประสงค์ของพวกเขาได้แม่นยำที่สุด หากค่าพารามิเตอร์มากกว่า 0 คุณจะต้องเพิ่ม "เครดิตอักขระ" จำนวนเท่ากับ "x" ให้กับความยาวของรหัสผ่าน เช่นถ้าพารามิเตอร์ทั้งหมด (u,l,d,o)credit
ตั้งค่าเป็น 1 และรหัสผ่านที่ต้องการคือ 6 จากนั้นคุณจะต้องมีอักขระ 6 ตัวเพื่อให้เป็นไปตามข้อกำหนดด้านความยาว เนื่องจากตัวพิมพ์ใหญ่ ตัวพิมพ์เล็ก ตัวเลข หรืออักขระอื่นๆ แต่ละตัวจะให้เครดิตแก่คุณหนึ่งเครดิต
หากคุณติดตั้ง dcredit
ที่ 2 ตามทฤษฎีแล้ว คุณสามารถใช้รหัสผ่านที่มีความยาว 9 ตัวอักษรและได้รับเครดิต 2 ตัวอักษรสำหรับตัวเลข จากนั้นความยาวของรหัสผ่านก็อาจเป็น 10 อยู่แล้ว
ดูตัวอย่างนี้ ฉันตั้งค่าความยาวรหัสผ่านเป็น 13 ตั้งค่า dcredit เป็น 2 และตั้งค่าอื่นๆ เป็น 0
$ pwscore
Thisistwelve
Password quality check failed:
The password is shorter than 13 characters
$ pwscore
Th1sistwelve
18
การตรวจสอบครั้งแรกของฉันล้มเหลวเนื่องจากรหัสผ่านมีความยาวน้อยกว่า 13 ตัวอักษร ครั้งต่อไปฉันเปลี่ยนตัวอักษร "I" เป็นตัวเลข "1" และได้รับสองเครดิตสำหรับตัวเลขซึ่งทำให้รหัสผ่านเท่ากับ 13
การทดสอบรหัสผ่าน
บรรจุภัณฑ์ libpwquality
มีฟังก์ชันการทำงานที่อธิบายไว้ในบทความ มันมาพร้อมกับโปรแกรมด้วย pwscore
ซึ่งออกแบบมาเพื่อตรวจสอบความซับซ้อนของรหัสผ่าน เราใช้มันด้านบนเพื่อตรวจสอบสินเชื่อ
คุณประโยชน์ pwscore
อ่านจาก
คะแนนคุณภาพรหัสผ่านสัมพันธ์กับพารามิเตอร์ minlen
ในไฟล์กำหนดค่า โดยทั่วไป คะแนนที่ต่ำกว่า 50 ถือเป็น “รหัสผ่านปกติ” และคะแนนที่สูงกว่านั้นถือเป็น “รหัสผ่านที่รัดกุม” รหัสผ่านใดๆ ที่ผ่านการตรวจสอบคุณภาพ (โดยเฉพาะอย่างยิ่งการบังคับตรวจสอบ) cracklib
) จะต้องทนต่อการโจมตีจากพจนานุกรม และรหัสผ่านที่มีคะแนนมากกว่า 50 เมื่อตั้งค่าไว้ minlen
แม้โดยค่าเริ่มต้นก็ตาม brute force
การโจมตี
ข้อสรุป
การตั้งค่า pwquality
– ง่ายและสะดวกเมื่อเทียบกับความไม่สะดวกในการใช้งาน cracklib
ด้วยการแก้ไขไฟล์โดยตรง pam
. ในคู่มือนี้ เราได้ครอบคลุมทุกสิ่งที่คุณต้องการเมื่อตั้งค่านโยบายรหัสผ่านบน Red Hat 7, CentOS 7 และแม้แต่ระบบ Ubuntu นอกจากนี้เรายังพูดถึงแนวคิดเรื่องสินเชื่อซึ่งไม่ค่อยได้เขียนโดยละเอียด ดังนั้นหัวข้อนี้จึงมักไม่ค่อยชัดเจนสำหรับผู้ที่ไม่เคยพบมาก่อน
แหล่งที่มา:
ลิงค์ที่เป็นประโยชน์
ที่มา: will.com