วิธีป้องกันไม่ให้ Run คำสั่งใน /tmp


noexec = ไม่ให้ Run คำสั่งใน /tmp ได้

วันนี้โดนอะไรซักอย่างจาก ip ปลายทางสั่งให้อะไรซักอย่างทำงานใน tmp ซึ่งไม่รู้จะทำยังไงเหมือนกัน ผมสั่ง stop apache แล้วแต่มันก็ยังรันได้อยู่เข้าไปดูใน tmp ก็ไม่มีอะไรแต่นั่นไม่ใช่ปัญหา ปัญหาของผมคือมันไม่สามารถ start apache ขึ้นมาได้เลยดังตัวอย่างตามนี้

root@server:# /etc/init.d/apache2 restart
* Restarting web server apache2
[Sat Aug 07 12:27:22 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
[Sat Aug 07 12:27:22 2010] [warn] NameVirtualHost *:80 has no VirtualHosts
(98)Address already in use: make_sock: could not bind to address 0.0.0.0:80
no listening sockets available, shutting down
Unable to open logs
...fail!

นี่แหล่ะปัญหาทำยังไงก็ start ไม่ได้เพราะว่ามี Procress ของ www-data หรือ apache รันอยู่นั่นเองผม stop ไปแล้วแต่มันก็ยังทำงานได้อยู่อันนี้ก็ไม่รู้จะทำยังไงความสามารถเราน้อยต้วอย่างที่เจอดังนี้

15583 www-data 20 0 4284 1164 980 S 0 0.0 0:00.01 /tmp/dd_ssh 100 85.114.129.49 2
15593 www-data 20 0 4284 1164 980 S 0 0.0 0:00.01 /tmp/dd_ssh 100 85.114.129.49 2
15594 www-data 20 0 4284 1168 980 S 0 0.0 0:00.01 /tmp/dd_ssh 100 85.114.129.49 2
15597 www-data 20 0 4284 1136 952 S 0 0.0 0:00.01 /tmp/dd_ssh 100 85.114.129.49 2
15600 www-data 20 0 4284 1164 980 S 0 0.0 0:00.01 /tmp/dd_ssh 100 85.114.129.49 2
15609 www-data 20 0 4284 1136 952 S 0 0.0 0:00.01 /tmp/dd_ssh 100 85.114.129.49 2
15610 www-data 20 0 4284 1136 952 S 0 0.0 0:00.01 /tmp/dd_ssh 100 85.114.129.49 2

คิดอะไรไม่ออกก็เลยสั่ง restart ไปด้วยคำสั่ง init 6 นั่นเอง จาก uptime 300 กว่าวันที่เครื่อง server เปิดอยู่เกือบจะ 1 ปีแล้วที่ไม่ได้ปิดเครื่องต้องมาสูญสลายภายในพริบตา

วิธีป้องกันไม่ให้ Run คำสั่งใน /tmp ทำแบบสั้นๆดังนี้เลยครับ (คำอธิบายไปหาอ่านเอาใน google นะครับ)

cp /etc/fstab /etc/fstab.bak
cd /var
dd if=/dev/zero of=tmpMnt bs=1024 count=1048576
mkfs.ext3 -j /var/tmpMnt
cp -Rp /tmp /tmp_backup
mount -o loop,noexec,nosuid,rw /var/tmpMnt /tmp
chmod 0777 /tmp
cp -Rp /tmp_backup/* /tmp/
echo "/var/tmpMnt /tmp ext3 loop,rw,noexec,nosuid,nodev 0 0" >> /etc/fstab
rm -rf /var/tmp/
ln -s /tmp/ /var/tmp

เพียงเท่านี้เป็นอันเสร็จครับ มันก็จะได้ประมาณนี้ถ้าใช้ df -h ดู

Filesystem            Size  Used Avail Use% Mounted on
/dev/sda1             141G  127G  7.6G  95% /
tmpfs                 2.0G     0  2.0G   0% /lib/init/rw
varrun                2.0G   92K  2.0G   1% /var/run
varlock               2.0G     0  2.0G   0% /var/lock
udev                  2.0G  2.6M  2.0G   1% /dev
tmpfs                 2.0G     0  2.0G   0% /dev/shm
none                  2.0G   48K  2.0G   1% /var/mysqltmp
/dev/loop0           1008M   34M  924M   4% /tmp ตัวที่เพิ่มเข้ามา

แต่ถ้าเข้าไปที่ /var แล้ว ls -la ดูก็ได้เห็นแบบนี้

lrwxrwxrwx  1 root root           5 2010-08-08 02:19 tmp -> /tmp/
-rw-r--r--  1 root root  1073741824 2010-08-08 02:17 tmpMnt

สิ้นสุดขึ้นตอนการป้องกันแล้วครับ ถ้าเค้ายังคงรันได้อยู่ก็ปล่อยมันไปgooหมดปัญญาล่ะครับ ขอให้โชคดีไม่โดนของ,,,,

  • โดนของซะงั้น

    ถ้าผมโดนคงจะทำอะไรไม่ได้เป็นแน่ นอกจากลงเครื่องใหม่อย่างเดียว

  • I have some questions, How are you doing SEO for Bing??

  • เพิ่งหัดใช้ ยังไม่คล่องเลย ต้องค่อยลองดูขอบคุณครับ

  • that you can get by various outlets gucci wristlet and shoes includes this meant for