วัตถุประสงค์ของไฟล์ / etc / shadow ในระบบปฏิบัติการ Linux คืออะไร เช่นเดียวกันสำหรับลูกค้า SUSE หรือไม่ มีไฟล์เงาแคชหนึ่งไฟล์ที่ถูกเก็บรักษาไว้มีจุดประสงค์อะไร?
วัตถุประสงค์ของไฟล์ / etc / shadow ในระบบปฏิบัติการ Linux คืออะไร เช่นเดียวกันสำหรับลูกค้า SUSE หรือไม่ มีไฟล์เงาแคชหนึ่งไฟล์ที่ถูกเก็บรักษาไว้มีจุดประสงค์อะไร?
คำตอบ:
จากจุดเริ่มต้นระบบปฏิบัติการ Unix และ Unix (รวมถึง Linux) มีการจัดเก็บรหัสผ่านเป็นแฮชการเข้ารหัสลับ (1) เสมอ แฮชเหล่านี้ถูกเก็บไว้ที่เดิม/etc/passwdแต่ไฟล์นี้จะต้องสามารถอ่านได้ทั่วโลกเพื่อให้มีข้อมูลสำหรับวัตถุประสงค์อื่น ๆ - แม้จะls -lต้องอ่านอย่างง่าย/etc/passwdเพื่อแปลง ID ผู้ใช้ที่เป็นตัวเลขของเจ้าของไฟล์ให้เป็นชื่อของพวกเขาเพื่อแสดง อย่างไรก็ตามการมีรหัสผ่านที่แฮชในไฟล์ที่อ่านได้ทั่วโลกทำให้ผู้ใช้ที่เป็นอันตรายสามารถรับแฮชเหล่านั้นได้อย่างง่ายดายและพยายามสร้างรหัสผ่านที่สามารถใช้งานได้ (2) สำหรับบัญชีของผู้ใช้รายอื่น
เพื่อป้องกันสิ่งนี้ในที่สุดรหัสผ่านที่ถูกแฮชจะถูกย้ายไปยังไฟล์ที่สามารถอ่านได้โดยรูท/etc/shadowเท่านั้น สิ่งนี้ซ่อน hash จากผู้ใช้ปกติของระบบในขณะที่ทำให้พวกเขาพร้อมใช้งานเพื่อวัตถุประสงค์การตรวจสอบผู้ใช้
หมายเหตุ :
อนาจารฉันรู้ แต่รหัสผ่านที่เก็บไว้ไม่ได้เข้ารหัส พวกเขาถูกแฮชโดยใช้อัลกอริทึมการเข้ารหัสแบบเข้ารหัสที่ปลอดภัย (อย่างน้อย ณ เวลาที่เขียน) ความแตกต่างหลักที่เกี่ยวข้องที่นี่คือแฮชที่มีความยาวคงที่ (ความยาวของข้อความที่เข้ารหัสจะแตกต่างกันไปตามความยาวของข้อความที่ถูกเข้ารหัส) และไม่สามารถย้อนกลับได้ (ข้อความที่เข้ารหัสสามารถถอดรหัสได้;
เนื่องจากแฮชมีความยาวคงที่จึงมีอินพุตจำนวนไม่ จำกัด ซึ่งจะตรงกับการแสดงแฮชที่ระบุ ดังนั้นผู้โจมตีจึงสามารถค้นหารหัสผ่านที่ใช้งานได้ซึ่งไม่จำเป็นต้องเหมือนกับรหัสผ่านของผู้ใช้ - แม้ว่าจะไม่ได้รับขนาดของแฮ็กเข้ารหัสที่ทันสมัย
/etc/shadowไฟล์ถูกสร้างขึ้นเพื่อเหตุผลด้านความปลอดภัยและถือรหัสผ่านที่เข้ารหัสผู้ใช้แต่ละคน
/etc/passwdแต่เดิมใช้รหัสผ่านที่มีการเข้ารหัสที่ถูกเก็บไว้ใน /etc/passwdจะต้องสามารถอ่านได้ทั่วโลกเพื่อให้ระบบสามารถแมปชื่อผู้ใช้กับชื่อผู้ใช้และเพื่อให้ผู้ใช้สามารถค้นหาข้อมูลเกี่ยวกับกันและกันเช่นไดเรกทอรีหลักของผู้ใช้รายอื่นหรือหมายเลขโทรศัพท์ซึ่งถูกเก็บไว้ในช่อง "gecos" แบบดั้งเดิม และแสดงโดยยูทิลิตี้ "นิ้ว"
แต่แล้วผู้คนก็ตระหนักว่านี่เป็นปัญหาด้านความปลอดภัย ใครก็ตามที่มีเวลามากพอสามารถทำสิ่งที่เรียกว่าการโจมตีแบบ bruteforceโดยสร้างรหัสผ่านที่เข้ารหัสโดยทางโปรแกรมสำหรับรหัสผ่านที่เป็นไปได้ทุกรูปแบบ หากผู้โจมตีทำเช่นนั้นโดยไม่พยายามเข้าสู่ระบบจริงtelnetหรือsshระบบไม่สามารถรู้ได้ว่ากำลังถูกโจมตี
ดังนั้นรหัสผ่านที่เข้ารหัสจึงถูกย้ายไปที่สร้างขึ้นใหม่/etc/shadowซึ่งสามารถอ่านได้โดยรูทเท่านั้น
นอกจากนี้ยังมีข้อมูลอื่น ๆ ที่/etc/passwdไฟล์ไม่สนับสนุนที่เกี่ยวข้องกับบัญชีและรหัสผ่านของผู้ใช้เช่นเมื่อรหัสผ่านถูกเปลี่ยนครั้งล่าสุดและเมื่อใดจะหมดอายุ
ดูman 5 shadow( เวอร์ชันของเว็บ ) สำหรับรายละเอียดทั้งหมดของรูปแบบไฟล์
ฉันไม่สามารถพูดได้ว่า SUSE นั้นเหมือนกันหรือไม่โดยไม่ทราบว่า SUSE เวอร์ชันใดที่คุณกำลังติดต่อด้วย ตัวอย่างเช่นระบบ SUSE ของคุณอาจใช้ Blowfish แทน MD5
คุณยังระบุว่าคุณกำลังผสม/etc/shadowไฟล์ของคุณกับระบบที่ใช้การกระจาย Linux อื่น แต่ไม่ได้บอกว่าการกระจายอื่นคืออะไร
ดูปัญหาการโอนย้ายไฟล์จากเงา SuSE 9.3 อูบุนตูเซิร์ฟเวอร์ x86_64ตัวอย่างเช่น
เพื่อพยายามที่จะคิดออกเปิดขึ้น/etc/shadowและดูว่ามีการเข้ารหัสข้อมูลรหัสผ่านเริ่มต้นด้วยหรือ$1$ $2$หากมีอยู่แสดง$1$ว่าเป็น MD5 และเข้ากันได้กับการแจกแจงอื่น ๆ ส่วนใหญ่ หากมี$2$แล้วก็อาจปักเป้าตามไฟล์เงาปักเป้าใน Debian
หากคุณใช้งาน Ubuntu ผลการค้นหาแรกของ Google สำหรับ Ubuntu ปักเป้าอาจเป็นจุดเริ่มต้นที่ดี
ผู้ใช้มีการระบุไว้ใน/etc/passwdไฟล์ ไฟล์นี้มีข้อมูลมากมายที่ระบบใช้ไม่เพียง แต่อนุญาตให้ผู้ใช้เข้าสู่ระบบ
แต่ละบรรทัดสอดคล้องกับรายการผู้ใช้และฟิลด์ที่แตกต่างกันจะถูกคั่นด้วยโคลอน การยื่นครั้งแรกคือการเข้าสู่ระบบตามด้วยรหัสผ่านที่สอดคล้องกัน
รหัสผ่านที่เข้ารหัสถูกใช้เพื่อเก็บไว้ในฟิลด์นี้ อย่างไรก็ตาม/etc/passwdไฟล์นั้นทุกคนในระบบต้องสามารถอ่านได้ดังนั้นการเข้ารหัสจึงไม่สามารถป้องกันการโจมตีด้วยกำลังดุร้ายได้เนื่องจาก @Mikel กล่าว /etc/shadowการแก้ปัญหาคือการย้ายรหัสผ่านที่เข้ารหัสลับเหล่านี้ในรากเท่านั้นที่สามารถอ่านไฟล์:
ดังนั้นจึง/etc/shadowมีรหัสผ่านที่เข้ารหัสของผู้ใช้ระบบ ระบบรู้ว่าต้องตรวจสอบรหัสผ่านในไฟล์นี้เมื่อฟิลด์รหัสผ่าน/etc/passwdมี x อยู่คนเดียว (หมายถึง " ข้ามไปยัง / etc / shadow")
/etc/passwdที่ถูก / /etc/shadowมีการถกกันยังคงอยู่ในทางเดียวกันว่าพวกเขาจะเป็นอย่างไรถ้าพวกเขาอยู่ใน คุณไม่ได้บอกว่ารหัสผ่านใน/etc/passwdนั้นจะเป็นข้อความธรรมดา แต่จะเป็นเรื่องง่ายสำหรับคนที่ไม่คุ้นเคยกับการจัดการรหัสผ่าน * ระวังเพื่อตีความคำตอบของคุณผิดซึ่งหมายความว่า
xจริงๆแล้วหมายถึงอะไร มีเพียงแฮชที่ไม่ถูกต้อง (อันที่ไม่ตรงกับรหัสผ่าน) !บางคนใช้ระบบ
มาดูกันว่าฉันจะได้รับคะแนนทั้งหมดในโลกหรือเปล่าเพราะฉันเขียนสิ่งที่กลายเป็น Linux Shadow Password Suite ใน '87;)
/etc/passwdไฟล์ต้นฉบับมีแฮชที่ปรับเปลี่ยนตาม DES ของรหัสผ่าน cleartext ในช่วงเวลาที่crypt()ฟังก์ชั่นถูกสร้างขึ้นก็เชื่อว่า (และนี่คือสิ่งที่ผู้สร้างระบบปฏิบัติการ UNIX ระบุไว้) ว่าการโจมตีแฮชรหัสผ่านจะเป็นไปไม่ได้เนื่องจากจำนวนรหัสผ่านที่เป็นไปได้และการใช้ 12 บิต (4,096 ค่าที่เป็นไปได้) "เกลือ" รหัสผ่าน cleartext ที่เป็นไปได้แต่ละรายการมีค่าแฮชที่เป็นไปได้ 4,096 ค่าและด้วยผลลัพธ์แฮช 64 บิตซึ่งทำให้มีการแฮชรหัสผ่านทั้งหมด 2 ^ 72
ดังที่ผู้โพสต์คนอื่นกล่าวถึง/etc/passwdก็ใช้ยูทิลิตี้ต่าง ๆ เพื่อทำแผนที่ระหว่างชื่อผู้ใช้และค่า UID ( /etc/groupไฟล์มีฟังก์ชั่นแบบอะนาล็อกสำหรับกลุ่ม) และที่ต้องการให้อ่านได้ทั่วโลก
ในปี 1980 เห็นได้ชัดว่าการโจมตีด้วยพจนานุกรมจากการแฮ็กรหัสผ่านที่เก็บไว้ใน/etc/passwdไฟล์นั้นเป็นไปได้และ/etc/shadowได้รับการแนะนำให้รู้จักกับ AT&T UNIX ในเวอร์ชันแรกของ System V I ซึ่งบันทึกไว้ว่าฉันใช้ manpages ไหน ตั้งแต่ลืมไปแล้ว แต่มันเป็นรุ่นแรกของ System V อย่างแน่นอนอาจเป็น SVR3.2
สิ่งที่ AT & T ได้และสิ่งที่ผมนำมาใช้สำหรับ SCO Xenix (เดิม SCO Xenix ไม่ความชั่วร้ายในภายหลัง SCO Xenix) ใน 87 ที่ในที่สุดก็เข้ามาใช้บน Linux /etc/shadowเป็นเพียงการย้ายรหัสผ่านแฮชการ วิธีนี้ช่วยป้องกันการโจมตีด้วยไดรฟ์ซึ่งผู้ใช้ที่ไม่มีสิทธิ์ได้รับสำเนา/etc/passwdและทำการโจมตี หากคุณคุ้นเคยกับเหตุผลที่ฉันเขียน Shadow ในตอนแรกฉันได้ให้ผู้ใช้ดาวน์โหลด/etc/passwdไฟล์ของฉันผ่าน UUCP ในวันที่เรายังคงใช้ UUCP สำหรับทุกสิ่ง
เมื่อถึงเวลาที่ลินุกซ์ถูกสร้างขึ้นและมีการใช้งานอย่างกว้างขวางมีเครื่องมือจำนวนมากสำหรับโจมตีแฮ็กรหัสผ่าน การใช้งานใหม่ที่มีประสิทธิภาพสูงของcrypt()เป็นหนึ่งในสถานที่และการโจมตีตามพจนานุกรมผ่านเครื่องมือเช่นCrackและlibcrackเป็นคนอื่น ๆ พอร์ตเริ่มต้นทำโดยเนทฮอลโลเวย์และฟลอเรียลาโรเช่ (ฉันให้เครดิตพวกเขาฉันไม่รู้ว่ามีใครทำงานก่อนหน้าพวกเขา)
ในที่สุดการใช้crypt()แฮชที่ใช้ -based แม้จะอยู่ในไฟล์ที่ได้รับการป้องกันก็จะไม่ปลอดภัยอีกต่อไปและการMD5เปลี่ยนแปลงแฮชแบบเดิมจะทำขึ้น MD5ในที่สุดก็ถือว่าอ่อนแอเกินไปและใช้แฮชรุ่นใหม่กว่า
ในทางทฤษฎีแล้วอาจมีแฮชที่แข็งแรงพอที่จะเก็บไว้/etc/passwdได้ การรักษาความปลอดภัยในการปฏิบัติงานที่ไม่ดีหมายความว่าระบบจำนวนมากมี/etc/shadowไฟล์ของพวกเขาผ่านเวคเตอร์การโจมตีที่หลากหลาย - "ฉันขโมยไฟล์สำรอง" น่าจะเป็นวิธีที่ง่ายที่สุด