ค้นหาเว็บไซต์

วิธีป้องกันฮาร์ดลิงก์และสัญลักษณ์ใน 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

คุณอาจต้องการอ่านบทความต่อไปนี้

  1. วิธีการใช้รหัสผ่านป้องกันไฟล์ Vim ใน Linux
  2. 5 คำสั่ง 'chattr' เพื่อสร้างไฟล์สำคัญที่ไม่เปลี่ยนรูป (ไม่สามารถเปลี่ยนแปลงได้) ใน Linux

นั่นคือทั้งหมด! คุณสามารถโพสต์คำถามของคุณหรือแบ่งปันความคิดเกี่ยวกับหัวข้อนี้ผ่านแบบฟอร์มคำติชมด้านล่าง