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/