วิธีป้องกันฮาร์ดลิงก์และสัญลักษณ์ใน CentOS/RHEL 7
ใน Linux ฮาร์ดลิงก์และซอฟต์ลิงก์ถูกอ้างอิงถึงไฟล์ ซึ่งมีความสำคัญมาก หากไม่ได้รับการป้องกันอย่างดี ช่องโหว่ใดๆ ในไฟล์เหล่านั้นอาจถูกโจมตีโดยผู้ใช้ระบบที่เป็นอันตรายหรือผู้โจมตีได้
ช่องโหว่ที่พบบ่อยคือ การแข่งขันของ symlink เป็นช่องโหว่ด้านความปลอดภัยในซอฟต์แวร์ ซึ่งเกิดขึ้นเมื่อโปรแกรมสร้างไฟล์อย่างไม่ปลอดภัย (โดยเฉพาะไฟล์ชั่วคราว) และผู้ใช้ระบบที่เป็นอันตรายสามารถสร้างลิงก์สัญลักษณ์ (ซอฟต์) ไปยังไฟล์ดังกล่าวได้
อ่านเพิ่มเติม: วิธีสร้างฮาร์ดลิงก์และสัญลักษณ์ใน Linux
สิ่งนี้เกิดขึ้นจริง โปรแกรมจะตรวจสอบว่ามีไฟล์ชั่วคราวหรือไม่ หากไม่มี โปรแกรมจะสร้างไฟล์ขึ้นมา แต่ในช่วงเวลาสั้นๆ ระหว่างการตรวจสอบไฟล์และการสร้างไฟล์ ผู้โจมตีอาจสร้างลิงก์สัญลักษณ์ไปยังไฟล์ได้ และไม่ได้รับอนุญาตให้เข้าถึง
ดังนั้นเมื่อโปรแกรมทำงานด้วยสิทธิ์ที่ถูกต้องจะสร้างไฟล์ที่มีชื่อเดียวกันกับไฟล์ที่ผู้โจมตีสร้างขึ้น โปรแกรมจะสร้างไฟล์เป้าหมาย (ลิงก์ไปยัง) ที่ผู้โจมตีต้องการเข้าถึงอย่างแท้จริง ด้วยเหตุนี้จึงสามารถให้ผู้โจมตีมีเส้นทางในการขโมยข้อมูลที่ละเอียดอ่อนจากบัญชีรูทหรือรันโปรแกรมที่เป็นอันตรายบนระบบ
ดังนั้น ในบทความนี้ เราจะแสดงวิธีรักษาความปลอดภัยลิงก์แบบฮาร์ดและสัญลักษณ์จากผู้ใช้หรือแฮกเกอร์ที่เป็นอันตรายในการแจกจ่าย CentOS/RHEL 7
ใน CentOS/RHEL 7 มีคุณลักษณะด้านความปลอดภัยที่สำคัญซึ่งอนุญาตให้สร้างหรือติดตามลิงก์โดยโปรแกรมเฉพาะเมื่อตรงตามเงื่อนไขบางประการตามที่อธิบายไว้ด้านล่าง
สำหรับฮาร์ดลิงก์
เพื่อให้ผู้ใช้ระบบสามารถสร้างลิงค์ได้ จะต้องปฏิบัติตามเงื่อนไขข้อใดข้อหนึ่งต่อไปนี้
- ผู้ใช้สามารถเชื่อมโยงไปยังไฟล์ที่เขาหรือเธอเป็นเจ้าของเท่านั้น
- ผู้ใช้จะต้องมีสิทธิ์ในการอ่านและเขียนไฟล์ที่ต้องการเชื่อมโยงก่อน
สำหรับลิงค์สัญลักษณ์
กระบวนการต่างๆ ได้รับอนุญาตให้ติดตามลิงก์ที่อยู่นอกไดเร็กทอรีที่เขียนได้ทั่วโลก (ผู้ใช้รายอื่นได้รับอนุญาตให้เขียนถึง) ที่มีบิตติดหนึบ หรือรายการใดรายการหนึ่งต่อไปนี้จะต้องเป็นจริง
- กระบวนการที่ติดตามลิงก์สัญลักษณ์คือเจ้าของลิงก์สัญลักษณ์
- เจ้าของไดเร็กทอรีก็เป็นเจ้าของลิงก์สัญลักษณ์ด้วย
เปิดหรือปิดการป้องกันบนฮาร์ดลิงก์และสัญลักษณ์
ที่สำคัญ โดยค่าเริ่มต้น คุณลักษณะนี้จะถูกเปิดใช้งานโดยใช้พารามิเตอร์เคอร์เนลในไฟล์ /usr/lib/sysctl.d/50-default.conf (ค่า 1 หมายถึงเปิดใช้งาน ).
fs.protected_hardlinks = 1
fs.protected_symlinks = 1
อย่างไรก็ตาม ด้วยเหตุผลใดก็ตาม หากคุณต้องการปิดใช้งานคุณลักษณะความปลอดภัยนี้ สร้างไฟล์ชื่อ /etc/sysctl.d/51-no-protect-links.conf ด้วยตัวเลือกเคอร์เนลเหล่านี้ด้านล่าง (ค่า 0 หมายถึงปิดการใช้งาน)
โปรดทราบว่า 51 ในชื่อไฟล์ (51-no-protect-links.conf) จะต้องอ่านหลังไฟล์เริ่มต้นเพื่อแทนที่การตั้งค่าเริ่มต้น
fs.protected_hardlinks = 0
fs.protected_symlinks = 0
บันทึกและปิดไฟล์ จากนั้นใช้คำสั่งด้านล่างเพื่อให้มีผลกับการเปลี่ยนแปลงข้างต้น (คำสั่งนี้จะโหลดการตั้งค่าจากไฟล์การกำหนดค่าระบบแต่ละไฟล์จริงๆ)
sysctl --system
OR
sysctl -p #on older systems
คุณอาจต้องการอ่านบทความต่อไปนี้
- วิธีการใช้รหัสผ่านป้องกันไฟล์ Vim ใน Linux
- 5 คำสั่ง 'chattr' เพื่อสร้างไฟล์สำคัญที่ไม่เปลี่ยนรูป (ไม่สามารถเปลี่ยนแปลงได้) ใน Linux
นั่นคือทั้งหมด! คุณสามารถโพสต์คำถามของคุณหรือแบ่งปันความคิดเกี่ยวกับหัวข้อนี้ผ่านแบบฟอร์มคำติชมด้านล่าง