Server
Server
ตามหา Server ที่(กำลังจะ)หายไป
Web Server ที่ใช้งานอยู่ปัจจุบัน กำลังจะถูกโยกย้ายไปไว้ที่ศูนย์คอมพิวเตอร์ ม.อ. เลยต้องหา Server ตัวใหม่มาทดแทน ที่เล็ง ๆ ไว้ คือ Dell R210 ด้วยความที่ราคาไม่แพงเกิน คุณภาพน่าจะ OK (จากที่ใช้ Dell R200 มาเกือบ 3 ปี ไม่เคยมีปัญหาเลย)
สรุปคร่าว ๆ ได้ดังนี้
ชุดมาตรฐานจาก Dell R210 Intel Xeon X3440 2.53GHz 2GB(2x1GB) Memory , 500GB Harddisk , DVD Combo = 31,042.- จาก thaihosttalk.com , tws.co.th , rackserverthai.com , pantiponline.com
แต่ที่อยากได้ คือ Dell R210 Intel Xeon X3440 2.53GHz 4GB(2x2GB) Memory , 500GBx2 Harddisk , DVD Combo ราคาประมาณ 40k
Apache Rewrite - ยากจริง ๆ
กำลังศึกษาการเขียน Apache rewrite rule จะทำ subdomain redirect ไปสู่โปรแกรม
เช่น http://bear.softganz.com ไป http://www.softganz.com/index.php?u=bear
เขียนยากจริง ๆ พยายามทำความเข้าใจอยู่ หากพอจะเข้าใจ จะมาเขียนอธิบายรายละเอียดอีกที
แหล่งเรียนรู้
Make Ubuntu as a server
ติดตั้ง Ubuntu Server ให้เรียบร้อย พร้อมอัพเดตให้เป็นล่าสุด
sudo apt-get update
หากต้องการใช้งาน Ubuntu desktop ให้ติดตั้ง
sudo apt-get install ubuntu-desktop
ขั้นตอนการติดตั้ง Samba
1.ติดตั้ง Ubuntu Server โดยไม่ต้องติดตั้ง package ใด ๆ เราจะมาติดตั้ง Samba กันตอนหลัง
2.ติดตั้ง Samba
sudo apt-get install samba
3.แก้ไขคอนฟิกของ Samba
sudo nano /etc/samba/smb.conf
4.เปลี่ยนค่าใน global ของคอนฟิก อย่าลืมสร้าง share directory ด้วยนะ ส่วนกลุ่ม Sharing หากยังไม่มีก็ป้อนเข้าไปใหม่ทั้งหมด
[global] workgroup = YOUR_WORK_GROUP netbios name = YOUR_COMPUTER_NAME security = SHARE auth methods = guest domain master = No wins support = Yes [Sharing] comment=My Ubuntu path = /home/your_home_directory/Sharing read only = No guest ok = Yes
5.บันทึกให้เรียบร้อย แล้วสั่ง restart Samba
smbd restart
ติดตั้ง VirtualBox สำหรับลง Windows
เพิ่มบรรทัดด้านล่างไว้ใน /etc/apt/sources.list:
deb http://download.virtualbox.org/virtualbox/debian lucid non-free
The Sun public key for apt-secure can be downloaded here. You can add this key with
wget -q http://download.virtualbox.org/virtualbox/debian/sun_vbox.asc -O- | sudo apt-key add -
The key fingerprint is
AF45 1228 01DA D613 29EF 9570 DCF9 F87B 6DFB CBAE Sun Microsystems, Inc. (xVM VirtualBox archive signing key) info@virtualbox.org
To install VirtualBox, do
sudo apt-get update sudo apt-get install virtualbox-3.1
Replace virtualbox-3.1 by
- virtualbox-3.0 to install VirtualBox 3.0.14
- virtualbox-2.2 to install VirtualBox 2.2.4
- virtualbox-2.1 to install VirtualBox 2.1.4
- virtualbox-2.0 to install VirtualBox 2.0.12
- virtualbox to install VirtualBox 1.6.6
สร้าง GuestOS โดยกำหนด Network ให้เป็น Bridge และลง OS ให้เรียบร้อย
Mount share folder ให้กับ GuestOS ได้มาจาก HOWTO: Use Shared Folders
sudo mount -t vboxsf share ~/host
หรือ Mount ให้กับผู้ใช้งานปัจจุบัน
sudo mount -t vboxsf -o uid=1000,gid=1000 share ~/host
ทำให้ GuestOS เปิดอัตโนมัตเมื่อเปิดเครื่อง
อ้างอิง
20 Linux System Monitoring Tools Every SysAdmin Should Know
เครื่องมือสำหรับตรวจสอบการทำงานของ server ที่ SysAdmin ควรมีและควรรู้
ตามไปดูได้ที่ http://www.cyberciti.biz นะครับ
Advanced Bash-Scripting Guide
อาจจะต้องเขียน bash scripting มากขึ้น หลังจากต้องดูแล server เอง เลยขอเก็บคู่มือ - reference ของการเขียน bash scripting มาเก็บไว้เพื่อศึกษาในภายหลัง
อยู่ที่ Advanced Bash-Scripting Guide - An in-depth exploration of the art of shell scripting
เก็บ log httpd ของ DirectAdmin Control Panel ให้เก็บได้ 90 วัน
พรบ.คอมพิวเตอร์บังคับให้เก็บ log ไว้อย่างน้อย 90 วัน
ขอเก็บรายละเอียดการทำไว้ก่อน ได้มาจาก แนะนำเก็บ log httpd ของ DirectAdmin Control Panel ให้เก็บได้ 90 วัน แบบง่าย ๆ
dir ที่สามารถ upload file ได้ให้ทำการป้องกันไม่ให้ php perl ทำงานได้
dir ที่สามารถ upload file ได้ให้ทำการป้องกันไม่ให้ php perl ทำงานได้ เพราะว่าถ้าเกิดหลุดขึ้นมา จะอันตรายมาก ๆ วิธีการป้องกันก็คือ ไปกำหนดเพิ่ม ใน httpd.conf ดังต่อไปนี้ สมมติว่า /home/webmaster/public_html/webboard/file เป็นส่วนที่ใช้เก็บรูปของบอร์ดเวลา post ขึ้นไป ผมก็จะกำหนดเพิ่มดังนี้
<Directory "/home/webmaster/public_html/webboard/file"> Options Indexes MultiViews -ExecCGI AllowOverride None Order allow,deny Allow from all php_flag engine off </Directory>
เท่านี้ก็ปลอดภัยอีกระดับนึงครับ ถ้าเกิด script เราหลุด hacker สามารถ upload file ขึ้นไปได้ แต่เค้าก็จะไม่สามารถสั่งให้ทำงานได้ครับ ..
ขั้นตอนทำ /tmp ให้ Security (How-to from www.directadmin)
Step 1: Securing /tmp
Step 1.1: Backup your fstab file
cp /etc/fstab /etc/fstab.bak
Step 1.2: Creating tmpmnt partition file (Around 1Gb in size)
cd /var dd if=/dev/zero of=tmpMnt bs=1024 count=1048576
Step 1.3: Format the new partition
mkfs.ext3 -j /var/tmpMnt
Press Y when asked
Step 1.4: Making backup of old /tmp
cp -Rp /tmp /tmp_backup
Step 1.5: Mount the tmp filesystem
mount -o loop,noexec,nosuid,rw /var/tmpMnt /tmp
Step 1.6: Set the right permissions
chmod 0777 /tmp
Step 1.7: Copy the files back to new tmp folder
cp -Rp /tmp_backup/* /tmp/
Step 1.8: Adding new /tmp filesystem to fstab
echo "/var/tmpMnt /tmp ext3 loop,rw,noexec,nosuid,nodev 0 0" >> /etc/fstab
Step 2: No need for 2 tmp filesystems, so we symlink /var/tmp to /tmp
rm -rf /var/tmp/ ln -s /tmp/ /var/tmp
ปล.ลองทำแล้ว แต่ติดอยู่ที่ step 1.5 มีแจ้งว่า "mount: no permission to look at /dev/loop#" พอทำต่อ เหมือนกับไม่สำเร็จ
ผลกระทบจากที่ VPS ของเจียถูก hack
VPS ที่เจียเช่าจากคุณเสกถูก hack เมื่อเดือนที่แล้ว (มิ.ย.) ซึ่งคาดว่าจะถูกขโมยรหัสผ่านของ ftp แล้วมีการแก้ไขไฟล์ index.html , index.php ซึ่งจากการตามหารายละเอียด ขั้นตอนน่าจะเป็น
มีโทรจันมาฝังอยู่ในเครื่องที่ใช้สำหรับ upload file ด้วย ftp
โทรจันส่งรหัสผ่านของ ftp ไปให้คนเขียน
เมื่อได้รหัสผ่านของ ftp ไป ก็จะใช้ script ในการเข้าไปค้นหาไฟล์ที่ชื่อขึ้นต้นด้วย index.* จากทุก ๆ folder ใน server
ทำการ download ไฟล์ index.* มาแล้วทำการแก้ไขโดยแทรกคำสั่ง tag iframe ไว้หลัง tag body ให้ไปดึง script มาจาก server ของตนเองให้มา run ในเครืองที่เปิดเข้าไปดูเว็บนั้น โดยกำหนด style ให้ visibility:hidden ซึ่งจะทำให้มองไม่เห็นใน browser
ทำการ upload ไฟล์ที่ได้แก้ไขกลับขึ้นไปที่ server เหมือนเดิม
วิธีสังเกตุว่าเว็บเราติดเข้าไปแล้ว
ตอนเปิดเว็บสังเกตุที่ status bar จะมีการ request ไปยังเว็บไซท์อื่นที่เราไม่เคยใส่ code ไว้
ลอง view source ดู จะเจอคำสั่ง iframe ที่ src เป็นเว็บที่ต้องสงสัย ซึ่งที่เจอจะระบุหมายเลข port เป็น 8080
หาก ssh เข้าไปที่ server แล้วสั่ง
find /home/*/domains/*/public_html/ -maxdepth 100 -name *index* -exec grep -H "iframe" {} ";" > iframe.txt
ลองดูผลลัพท์ในไฟล์ iframe.txt
ถ้าจะให้ดีก็ตั้งคำสั่งนี้ให้เป็น cron job ให้ค้นหาทุกวัน หากต้องการค้นหาเฉพาะไฟล์ที่มีการเปลี่ยนแปลงภายใน 24 ช.ม. ให้เพิ่ม option -mtime -1 ไปด้วย
ผลกระทบอีกอย่างที่ผมก็คาดว่ามันน่าจะเกิดขึ้น คือถ้ามีการ hack เข้ามา server ได้ ก็น่าจะมีการส่งโปรแกรมอะไรมาไว้ที่ server ด้วย เพื่อวัตถุประสงค์อื่น ๆ ที่อาจจะเป็นไปได้ เช่นการส่ง spam mail , การขโมยรหัสหรือข้อมูลอื่น ๆ ซึ่งช่วงก่อนผมหาไม่เจอ
3-4 วันที่ผ่านมา ก็สังเกตุเป็นว่ามี process ของ apache run perl และใช้ cpu เยอะมาก ลอง kill precess แล้ว ไม่นานก็มี process กลับมาใหม่
วันนี้ลองค้นหาดูใน cgi-bin ปรากฎว่ามี perl script อยู่จริง ๆ ด้วย อยู่ใน /home/ * /domains/ * /public_html/cgi-bin/ จึงลบมันทิ้งไป และ stop service apache กับ proftpd ไว้ก่อน
วิธี kill perl ทุก process ใช้คำสั่ง
for pl in `ps -A | grep perl | cut -c 1-6`; do kill -9 $pl;done
หลังจาก kill httpd ทั้งหมดแล้ว สักพัก process httpd ก็มาอีก คาดว่าน่าจะมาจาก crontab เลยลองเช็ค crontab ของทุก user ดูด้วยคำสั่ง
for u in `cat /etc/passwd | cut -d":" -f1`;do crontab -l -u $u;done
ก็ไม่เจออะไรผิดปกติ คงมีตัวไหนสักตัวที่สั่ง run httpd ขึ้นมา แต่ยังหาไม่เจอ
ตอนนี้ก็หลายนาทีแล้ว เจ้า perl script ยังไม่มา ไม่รู้ว่าจะหายไปตลอดกาลหรือเปล่า พรุ่งนี้เข้าค่อยมาดูอีกที
บาย... ไปนอนก่อนครับ.
Update 2009-07-18 08.28 PM process ของ perl มาอีกแล้ว มาเพียบด้วย สรุปว่ายังแก้ไม่ผ่าน
Update 2009-07-19 10.20 PM วันก่อนลืมเปลี่ยนรหัสผ่าน เข้ามาดูอีกทีปรากฎว่ามีการส่งไฟล์ .pl เข้ามาอีก แถม run script สัก 400 process ได้ กว่าจะ ssh เข้าไปได้ นานมาก ๆ เลยเปลี่ยนรหัสผ่านของทุก user (เท่าที่หาเจอ) เสียเลย
Update 2009-07-20 06.43 PM เข้าไปค้นหาใน log ยังคงมีการ upload ไฟล์เข้ามาในชื่อ sator4u (ไม่แน่ใจว่าได้เปลี่ยนรหัสผ่านหรือยัง) จึงเปลี่ยนรหัสผ่านใหม่ ดูเหมือนกับว่าจะมีไฟล์ .pl อยู่ในโฟลเตอร์ของ sator4u ด้วย จึงทำการเปลี่ยนชื่อ home folder เป็นชื่ออื่น ไปก่อน ป้องกันไม่ให้เรียก script มาทำงาน (ยังไม่ได้ลบทิ้ง)
Update 2009-07-21 06.36 AM หลังจากตามดูอยู่ 2 วัน ตอนนี้เหตุการณ์ทุกอย่างเป็นปกติแล้ว
Ping จาก server แล้วขึ้น unknown host
เหตุเริ่มเกิดมาได้สัก 2-3 วันแล้ว แรก ๆ ก็เกิดกับบางเว็บ เช่น www.psu.ac.th แล้วก็เริ่มหลายเว็บมากขึ้น จนมาวันนี้ ping ไปทุกเว็บก็เป็นเหมือนกันหมด แม้กระทั่ง google.com
อาการ : เวลา ssh ไปที่ Server@CAT-HY แล้ว ping ไปที่ google.com จะเกิด error ดังนี้
ping: unknown host google.com
ก็พยายามหาทางดู ลอง reboot server แล้วก็ไม่หาย (เสียดายอุตส่าห์เปิดมาตั้ง 30 วันแล้ว) ลอง ssh เข้าไปทุก vps แล้ว ping ดู ก็เป็นเหมือนกัน เลยคิดว่าน่าจะมีปัญหาที่ proxmox-ve เลย ssh ไปที่ proxmox-ve แล้ว ping ดู ก็มีอาการเหมือนกัน
เลยตั้งเป้าว่า น่าจะเกิดจาก DNS ของ CAT (202.129.27.134 , 202.129.27.135) มีปัญหา คิดว่าพรุ่งนี้จะโทรไปหา CAT ให้เขาเช็คดูเสียหน่อยว่ามีปัญหาอะไรบ้างไหม?
ระหว่างนั้นก็คิดว่า หากเราเปลี่ยน DNS ไปใช้ของที่อื่น จะเกิดอะไรขึ้นบ้าง ก็เลยลองเสี่ยงดู โดยเพิ่ม nameserver 208.67.222.222 ซี่งเป็นของ OpenDNS เข้าไปใน /etc/resolv.conf โดยการแก้ไขไฟล์ /etc/resolv.conf เป็น/เพิ่ม
nameserver 208.67.222.222 nameserver 208.67.220.220
It's work!!!!!!
ขอบคุณ OpenDNS แล้วพรุ่งนี้ค่อยโทรไปสอบถาม CAT-HY อีกที.
ปล. Thank for idea from configuring DNS