มาสร้าง secure ให้ /tmp ใน linux server

Directory /tmp เป็นตำแหน่งเราพบผู้ไม่หวังดี หรือ Hacker พยายามทำการโจมตีหรือเจาะระบบอยู่บ่อยครั้ง ปัญหาจะเกิดจาก application ที่ใช้การ upload ไฟล์ไปเก็บไว้ที่ /tmp ชั่วคราว เปิดโอกาสให้ Hacker ที่อาจเจอช่องโหว่ด้านความปลอดภัยทำการ upload trojan ขึ้นมาที่ /tmp แล้วสั่งให้ไฟล์ทำงานได้ ทำให้การทำ secure /tmp เป็นขั้นการตั้งค่ากฎความปลอดภัยขั้นพื้นฐานให้กับ Linux Server อย่างนึงที่ไม่ควรหลีกเลี่ยง
การทำ secure /tmp นี้จะเป็นการป้องกันไม่ให้มีการ execute หรือสั่งให้ไฟล์ที่อยู่ใน /tmp ทำงานได้ทุกกรณี สำหรับ Server ที่มีการแยก partition /tmp ไว้ตอนติดตั้งครั้งแรก ขั้นตอนแรกให้สำรองไฟล์ fstab ไว้ก่อนป้องกันการแก้ไขที่ผิดพลาด

#cp /etc/fstab /etc/fstab.bak

แก้ไขไฟล์ (ค่อยๆ ทำนะครับหากแก้ไขไฟล์นี้ผิดพลาดอาจทำให้ server boot ไม่ขึ้น)

#vi /etc/fstab

หาตำแหน่งที่ mount /tmp partition ไว้ จากนั้นเปลี่ยนรูปแบบการ mount /tmp ให้ยกตัวอย่างค่ามาตรฐานที่พบเป็น defaults 1 2

ให้เปลี่ยนเป็น defaults,nosuid,noexec,rw 0 0

เรียบร้อยแล้วให้ทำการ remount /tmp ใหม่

mount -o remount,nosuid,noexec /tmp

ตรวจสอบดูว่า mount /tmp แบบ nosuid noexec เรียบร้อยแล้ว

cat /proc/mounts | grep /tmp

จะพบว่า directory /tmp ถูกป้องกันไม่ให้ execute file ได้แล้ว

[[email protected] ~]# cat /proc/mounts | grep /tmp
/dev/sda /tmp ext4 rw,nosuid,noexec,relatime,discard,data=ordered 0 0

////////////////////////

สำหรับ Server ที่ไม่ได้ทำการแยก partition /tmp ไว้ (เช่น VPS, Cloud Server) ให้ดำเนินการตามขั้นตอนดังนี้

สร้าง file ขนาด 1GB สำหรับใช้เป็น /tmp

dd if=/dev/zero of=/dev/tmpDIR bs=1024 count=1000000

Format File ที่สร้างขึ้นเป็น ext4

/sbin/mkfs.ext4 /dev/tmpDIR

จะพบคำถาม /dev/tmpDIR is not a block special device จุดนี้ให้ตอบ y เพื่อตกลงครับ

สร้าง Directory สำรองเก็บ /tmp ปัจจุบัน

#mkdir /tmpbak

ย้ายไฟล์ใน /tmp เดิมออไปเก็บไว้ชั่วคราว

#cp -Rpf /tmp /tmpbak

แก้ไข /etc/fstab เพื่อให้ mount /tmp ที่เราสรา้งทุกครั้งเมื่อ reboot server

#vi /etc/fstab

ให้เพิ่ม

/dev/tmpDIR /tmp ext4 loop,nosuid,noexec,rw 0 0

ทำการ mount /tmp เข้าไปใหม่แบบไม่ให้ execute ได้

mount -o loop,noexec,nosuid,rw /dev/tmpDIR /tmp

ตรวจสอบดูว่า mount /tmp แบบ nosuid noexec เรียบร้อยแล้วca

t /proc/mounts | grep /tmp

จะพบว่า directory /tmp ถูกป้องกันไม่ให้ execute file ได้แล้ว

[[email protected] ~]# cat /proc/mounts | grep /tmp
/dev/sda /tmp ext4 rw,nosuid,noexec,relatime,discard,data=ordered 0 0

 

 

Credit : https://kb.hostatom.com/content/5117/