เปลี่ยนชื่อ / etc / passwd และ / etc / shadow เพื่อความปลอดภัย [ปิด]


8

ฉันมีเซิร์ฟเวอร์ เซิร์ฟเวอร์ของฉันคือการรักษาความปลอดภัย แต่ให้จินตนาการของแฮ็กเกอร์ที่ดีที่ป้อนใน. ตอนนี้เขาสามารถมองเข้าไปในและ/etc/passwd /etc/shadowฉันต้องการเปลี่ยนชื่อไฟล์/etc/passwdเป็นแบบ/etc/xxanodaอื่น

ผมคิดว่าผมสามารถทำลิงค์ ls -lแต่สำหรับแฮกเกอร์ไอทีจะเป็นเรื่องง่ายที่จะทำ

เป็นไปได้ไหมที่จะเปลี่ยนชื่อไฟล์เหล่านั้นและยังคงมีระบบปฏิบัติการที่ทำงานอยู่โดยไม่มีปัญหาความเข้ากันได้หรือว่าไร้ประโยชน์อย่างสมบูรณ์? เพียงเพื่อการแสวงหาความรู้


1
ฉันคิดว่าเป็นไปได้ที่จะใช้เซิร์ฟเวอร์การตรวจสอบแยกต่างหากเพื่อเก็บรหัสผ่านผู้ใช้ทั้งหมด เซิร์ฟเวอร์หลักจะติดต่อเซิร์ฟเวอร์การตรวจสอบความถูกต้องเมื่อผู้ใช้พยายามเข้าสู่ระบบเซิร์ฟเวอร์การตรวจสอบความถูกต้องจะถูกเก็บไว้ห่างจากผู้ใช้ (ไม่มีการเข้าถึงอินเทอร์เน็ตโดยตรง)
ctrl-alt-delor

9
การรักษาความปลอดภัยโดยความสับสนนั้นไม่มีความปลอดภัยเลย
Doorknob

นี่เป็นความคิดที่แย่มากแย่มาก
Shadur

คำตอบ:


29

ระบบแฟ้มลำดับชั้นมาตรฐานสำหรับ UNIX เหมือนระบบรวมถึงการ/etc/passwdที่สถานที่คงที่และเครื่องมือจึงมักจะ hardcoded ที่จะมองให้มันมี ในทางทฤษฎีคุณสามารถรวบรวมยูทิลิตี้ที่เกี่ยวข้องทั้งหมดใหม่เพื่อค้นหาในตำแหน่งใหม่ผู้โจมตีใด ๆ สามารถค้นหาสตริงในไบนารีเหล่านั้นเพื่อค้นหาไฟล์ใหม่หรือใช้นิพจน์ทั่วไปเพื่อค้นหาไฟล์ที่มีpasswdเนื้อหาเหมือนกัน

shadowไฟล์ควรจะอ่านเท่านั้นที่จะroot(และอาจจะกลุ่มที่เรียกว่าshadow) หากผู้โจมตีมีการจัดการเพื่อเข้าถึงรูทของระบบพวกเขามีการควบคุมที่สมบูรณ์และหรือไม่ว่าพวกเขาสามารถอ่านไฟล์ passwd / shadow ของคุณนั้นไม่เกี่ยวข้องเลยทีเดียว

มีบางสถานการณ์ที่ไฟล์ที่ไม่ได้อยู่ในสถานที่ที่คาดหวังอาจช่วยได้เช่นหากคุณมีเว็บเซิร์ฟเวอร์ที่มีการกำหนดค่าไม่ดีซึ่งทำให้ผู้อื่นสามารถร้องขอhttp://myserver/../../etc/passwdได้ แต่โดยทั่วไปแล้วการจัดเรียงทางอ้อมนี้


8
ในกรณีที่ผ่านมาสถานการณ์จะดีกว่าที่จะแก้ไขเว็บเซิร์ฟเวอร์แทน ...
Braiam

แต่ก็ไม่เป็นไรเพราะผู้ใช้ทุกคนที่มีบัญชีบนเซิร์ฟเวอร์ของตัวเองมีรหัสผ่านที่ไม่เพียงคีย์ SSH และข้อมูลรหัสผ่านไม่ได้เก็บไว้ใน/etc/passwdอยู่แล้วใช่มั้ย?
Blacklight Shining

12

สิ่งที่ดีที่สุดที่จะเป็น "ไร้ประโยชน์อย่างสมบูรณ์" ตามที่คุณวางไว้ (ไม่ได้มีอุปสรรค์เพิ่มเติมสำหรับผู้บุกรุก)

/etc/passwd มีชื่อบัญชี แต่ทุกคนที่มีสิทธิ์เข้าใช้เชลล์ในระบบจะสามารถค้นหาได้

/etc/shadowมีข้อมูลที่ละเอียดอ่อน (รหัสผ่านแฮช) แต่สามารถอ่านได้สำหรับรูทเท่านั้น หากผู้บุกรุกจัดการเพื่อรับสิทธิพิเศษ - คุณจะหายนะได้อย่างไร


1
คุณควรถือว่าผู้โจมตีสามารถเข้าถึงไฟล์ทุกไฟล์ในระบบของคุณได้อย่างเต็มที่ (และอาจดาวน์โหลดสำเนาของตนเอง) จนกว่าคุณจะรู้
Bert

4
"คุณสะกดหายนะได้อย่างไร" อาจทำงานได้ดีขึ้นในบริบทที่คุณไม่ต้องสะกดคำว่าหายนะถาม: D

9

ใน Unices ที่ทันสมัย ​​(และ Unix-like รวมถึง Ubuntu) /etc/passwdไม่มีความลับใด ๆ การเปลี่ยนชื่อมันจะเป็นปัญหามากกว่าที่ควรค่าเนื่องจากจะต้องสร้างสาธารณูปโภคใหม่จำนวนมากเพื่อค้นหาในตำแหน่งที่ตั้งใหม่

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

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


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

2

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


ฉันแค่ต้องการเพิ่มความปลอดภัยมากขึ้นฉันมีเว็บไซต์มากกว่าหนึ่งแห่งบนเซิร์ฟเวอร์ของฉัน
Marco Caggiano

2

แม้ว่ามันอาจจะไม่มีประโยชน์ในการเปลี่ยนชื่อ/etc/passwdและ/etc/shadowไฟล์ แต่ถ้าคุณต้องการความปลอดภัยที่เพิ่มขึ้นคุณอาจต้องดูที่ PAM (โมดูลการพิสูจน์ตัวตนแบบเสียบได้) และ NSS (Name Service Switch) ชอบที่นี่.

PAM สามารถใช้เพื่อเพิ่มโมดูลการรับรองความถูกต้องซึ่งแทนที่จะอ่านการพิสูจน์ตัวตน ifnormation จากไฟล์มาตรฐานให้อ่านจากแหล่งอื่นเช่นจาก ldap หรือฐานข้อมูล การใช้มันจะหมายถึง/etc/shadowสามารถกำจัดได้เกือบสมบูรณ์

NSS เติมเต็ม PAM ด้วยการแก้ไขชื่อ (เช่นกลุ่มที่ผู้ใช้รายนี้เป็นเจ้าของ) เป็นอิสระจากไฟล์มาตรฐาน ( /etc/passwd, /etc/groups) การใช้หมายความว่าไฟล์ passwd ของคุณอาจมีเพียงตัวเลือกสำรองสำหรับรูทและไม่มีอะไรเพิ่มเติม การใช้คีย์ SSH เพื่อตรวจสอบความถูกต้องของการเข้าสู่ระบบรูทก็ไม่จำเป็นต้องมีรหัสผ่านรูทภายในไฟล์เงา (แม้ว่ามันอาจจะต้องการถ้าการเชื่อมต่อ SSH แตก)

อีกทางเลือกหนึ่งถ้าคุณไม่ต้องการพิสูจน์ตัวตนผู้ใช้ของคุณผ่านฐานข้อมูลแยกต่างหากหรือโฮสต์ ldap คุณสามารถสร้างโมดูล PAM และ NSS ของคุณเองซึ่งอ่านข้อมูลจากไฟล์ที่ไม่ได้มาตรฐานแม้ว่าฉันจะไม่แนะนำตัวเลือกนี้

เมื่อคุณต้องการลองใช้มันอย่าลืมเก็บทางเลือกบางอย่างไว้ในเลเยอร์การตรวจสอบความถูกต้องที่ใช้งานได้มิฉะนั้นคุณสามารถล็อคตัวเองออกจากระบบแม้กระทั่งกับรูท

โปรดทราบว่าแอปพลิเคชั่นบางตัวอาจไม่รองรับ PAM อย่างไรก็ตาม NSS สามารถใช้เพื่อรับรองความถูกต้องของแอพที่ไม่รองรับ PAM และบางเว็บไซต์ที่ฉันได้อ่านเกี่ยวกับ NSS แนะนำวิธีการนี้อย่างแท้จริง อย่างไรก็ตามนี่หมายความว่าโมดูล NSS จะให้รหัสผ่านที่แฮช (อาจ) ให้กับทุกคนที่สามารถเข้าถึงเลเยอร์การตรวจสอบความถูกต้องของ NSS ซึ่งเกือบทุกสิ่งที่คุณต้องการหลีกเลี่ยง )! ดังนั้นหากคุณใช้วิธีนี้ตรวจสอบให้แน่ใจว่า NSS ใช้เพื่อให้ข้อมูลพื้นฐานแก่ผู้ใช้เท่านั้น (เช่นเนื้อหาของ/etc/passwd) และใช้ PAM เป็นชั้นการตรวจสอบสิทธิ์

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.