Multiple SSL Web Sites On One IP Address

แก้ให้ apache 2 สามารถให้บริการ ssl-site ได้มากกว่า 1 site บน ubuntu 12.04 ; Apache 2.2.22 * Server ต้องสามารถให้บริการ https ได้อยู่แล้ว เพิ่มบรรทัด NameVirtualHost *:443 ลงไปในไฟล์ /etc/apache2/ports.conf ตัวอย่าง ports.conf # /etc/apache2/sites-enabled/000-default # This is also true if you have upgraded from before 2.2.9-3 (i.e. from # Debian etch). See /usr/share/doc/apache2.2-common/NEWS.Debian.gz and # README.Debian.gz NameVirtualHost *:80 NameVirtualHost *:443 Listen 80

Read More »

ใช้ Powershell แบบ Linux Shell Script

รวบรวมการทำงานกับ Powershell บน Windows โดยเทียบเคียงกับการใช้ ShellScript บน Linux (ทะยอยเขียนบันทึก โปรดติดตามเรื่อยๆ) เลือกบางบรรทัดจากไฟล์ที่มีคำที่ต้องการอยู่ shellscript: grep someword textfile.txt powershell: select-string “someword” textfile.txt เลือกบางบรรทัดจากไฟล์ แล้วแยกด้วยเครื่องหมาย : เพื่อเอาฟิลด์ที่ 3 shellscript: grep someword textfile.txt | awk -f ‘{FS=”:”}{print $3}’ powershell: select string “someword” textfile.txt | % { $_.line.split(‘:’)[2];  } เลือกบางบรรทัดจากไฟล์ แล้วเอาลงไฟล์ shellscript: grep someword textfile.txt  > output.txt powershell: select string “someword” textfile.txt | foreach-object {$_.line} > output.txt ดูท้ายไฟล์ตลอดเวลา (ไม่รู้จะใช้คำว่าอะไรดี) และเริ่มดูโดยเอา 3 บรรทัดสุดท้าย ไม่ใช่เริ่มทั้งไฟลฺ์ shellscript: tail -f mydata.log powershell: get-content mydata.log -wait -tail 3

Read More »

ติว “การจัดการห้องบริการคอมพิวเตอร์และสำนักงาน”

กิจกรรมของ CoP PSU sysadmin ของเราในลำดับต่อไป จะจัดขึ้นในวันที่ 31 ม.ค. 56 (พฤหัส) เวลา 09.00 – 16.00 น. มีอาหารเที่ยงเลี้ยง ที่ห้อง 101 อาคารศูนย์คอมพิวเตอร์ ม.อ.หาดใหญ่ (หมายเหตุ วันที่ 30 ม.ค. 56 ทีมวิทยากรจะเตรียมห้องอบรมด้วยกัน) หากท่านสนใจรีบแจ้งอีเมลมาที่ผมโดยตรง ( wiboon.w@psu.ac.th ) หรือทางเฟสบุ๊คของกลุ่ม และผมจะนำรายชื่อมาใส่ไว้ด้านล่างของบล็อกนี้ (ดูรายชื่อผู้เข้าร่วมติว) ติว “การจัดการห้องบริการคอมพิวเตอร์และสำนักงาน” กลุ่มเป้าหมาย ผู้ดูแลระบบคอมพิวเตอร์และเครือข่ายของม.อ.วิทยาเขตต่างๆ ระยะเวลา 1 วัน สถานที่และเครื่องคอมพิวเตอร์ที่ใช้ ต้องใช้ห้องอบรมที่มีเครื่องคอมพิวเตอร์จำนวน 2 เครื่องต่อผู้เข้าอบรม 1 คน เนื้อหา เป็นเรื่องราวเกี่ยวกับการนำโอเพนซอร์สและฟรีแวร์ มาประยุกต์ใช้ในการจัดการห้องบริการคอมพิวเตอร์และสำนักงาน แนะนำโปรแกรม pGina บนวินโดวส์ เพื่อควบคุมการใช้เครื่องคอมพิวเตอร์ โดยใช้ radius server ที่ติดตั้งพร้อมใช้งานอยู่ใน PSU-12 ต้นแบบพัฒนาจาก FreeRADIUS ซึ่งมี module ที่สามารถ authen กับ PSU-Passport ได้ ความรู้เกี่ยวกับ Disk/Partition/Booting แนะนำชุดโปรแกรม PSU-12 ชุดโปรแกรม PSU-12 ที่มีสรรพคุณดังนี้ Boot Manager Server – ห้องคอมพิวเตอร์อัจฉริยะ ควบคุม boot manager จาก server Cloning Server – ระบบโคลนนิงผ่าน network ใช้ทดแทนโปรแกรม GHOST โคลนนิงได้ทั้ง MS Windows และ Linux DHCP + PXE Server – ทำงานเป็น DHCP server และ PXE server มีระบบบันทึก log accounting สามารถกำหนดให้ หาก PC ลูกข่ายไม่ต่อกับ network จะบูทไม่ได้ ประยุกต์ใช้งานบังคับให้อ่าน message of today จึงจะบูทเครื่องใช้งานได้ สามารถกำหนดให้ PC ลูกข่ายบูทเข้า partition ไหนก็ได้ รายละเอียดหัวข้อติว ตอนที่ 1 – ติดตั้ง server ติดตั้ง Ubuntu server ติดตั้งชุด PSU-12 การปรับแต่งให้ PSU-12 เป็น radius server ที่สามารถ authen กับ @psu.ac.th และ PSU-Passport ทดสอบ authen กับอีเมลของ @psu.ac.th ทดสอบ authen กับบัญชีผู้ใช้ PSU-Passport สามารถปรับตั้งให้เฉพาะบุคลากรของ PSU หรือเฉพาะบุคลากรในหน่วยงานเท่านั้นที่ใช้บริการได้ สามารถปรับตั้งให้เฉพาะนักศึกษาในคณะเท่านั้นที่ใช้บริการได้ ตอนที่ 2 – การโคลนนิ่ง การ Cloning เครื่องต้นแบบไปเก็บเป็นไฟล์ต้นฉบับ (Backup Process) การ Backup Partition Table การ Backup Partition การ Cloning เครื่องใหม่จากไฟล์ต้นแบบ (Restore Process) การตั้งค่าเพื่อทำให้ระบบที่ Cloning มากลับมา boot ได้ ตอนที่ 3 – ติดตั้งโปรแกรมสำหรับควบคุมการใช้เครื่องคอมพิวเตอร์ แบ่ง partition ของฮาร์ดดิสก์โดยใช้แผ่นซีดี Sysresccd และลง Windows 7 ใหม่ใน partition ที่สร้างขึ้น ติดตั้งโปรแกรมเก็บข้อมูลการใช้เครื่องคอมพิวเตอร์

Read More »

การเปลี่ยนชื่อ group mail ใน mailman

ในการใช้ mailman เพื่อการให้บริการ Mailing List หรือ Group Mail นั้น การเปลี่ยนชื่อกลุ่มนั้น ค่อนข้างยุ่งยาก แต่สามารถทำได้ง่ายกว่า โดยการสร้าง List ใหม่แล้ว เอา Config และ Member เดิมมาใส่ ขอยกตัวอย่าง กรณี จะเปลี่ยน group name ของกลุ่มคณะ วจก. ซึ่งเดิมจะขึ้นต้นด้วย mgt-* ให้ไปเป็น fms-* ก็จะใช้ Shell Script ตามนี้ oldname=”mgt” newname=”fms” owner=”admin.name@psx.ac.th” password=”xxxxxx” for line in $( /usr/lib/mailman/bin/list_lists | grep -i “$oldname-“|awk ‘{print $1}’) ; do /usr/lib/mailman/bin/config_list -o $line.txt $line /usr/lib/mailman/bin/list_members $line > $line-member.txt newgroupname=$newname-$(echo $line | sed -e “s/$oldname-\(.*\)*/\1/i”) sed -e “s/$oldname-/$newname-/i” $line.txt > $newgroupname.txt /usr/lib/mailman/bin/newlist $newgroupname $owner $password /usr/lib/mailman/bin/config_list -i $newgroupname.txt $newgroupname /usr/lib/mailman/bin/add_members -w n -a n -r $line-member.txt $newgroupname done 1. เมื่อต้องการทราบว่า ในระบบของ mailman มี List ใดบ้างที่ชื่อขึ้นต้นด้วย “mgt-” บ้าง ใช้คำสั่ง /usr/lib/mailman/bin/list_lists | grep -i “mgt-” 2. ซึ่งจะพบว่ามีหลายกลุ่ม ที่มีชื่อขึ้นต้นด้วย “mgt-“, ก็สามารถใช้ Shell Script เพื่อ เอาผลลัพธ์ จากคำสั่งดังกล่าว มาทำงานร่วมกับคำสั่ง ต่อไปนี้ เพื่อเก็บ Config ของกลุ่มนั้นๆ ออกมาเป็นไฟล์ (สมมุติว่า ชื่อกลุ่มคือ mgt-xxx ก็นำออกมาเป็นไฟล์ชื่อ mtg-xxx.txt) /usr/lib/mailman/bin/config_list -o mgt-xxxx.txt mgt-xxx 3.ต่อไป วิธีการดูว่า แต่ละกลุ่ม มีใครเป็นสมาชิกบ้าง แล้วนำออกมาเป็นไฟล์ (สมมุติว่า ชื่อกลุ่มคือ mgt-xxx ก็นำออกมาเป็นไฟล์ชื่อ mtg-xxx-member.txt) /usr/lib/mailman/bin/list_members mgt-xxx > mgt-xxx-member.txt จะได้ไฟล์ชื่อเดียวกับชื่อกลุ่ม แต่จะลงท้ายด้วยคำว่า -member.txt 4, ในการเปลี่ยนชื่อกลุ่ม จะเปลี่ยนจาก mgt-xxxx มาเป็น fms-xxxx วิธีการที่จะได้คำว่า xxxx ที่ต่อท้าย mgt-xxxx นั้น ใช้คำสั่งต่อไปนี้ echo “mgt-xxxx” | sed -e “s/mgt-\(.*\)*/\1/i” คำสั่ง sed นั้นมี option “-e” คือการสั่งให้ execute คำสั่งที่ตามมา ส่วน  “s/mgt-\(.*\)*/\1/i” นั้น จะมีโครงสร้างคือ s/pattern/replace/i s : หมายถึง substitute คือ แทนที pattern: ที่เขียนว่า mgt-\(.*\)* หมายความว่า เมื่อเจอรูปแบบ mgt-xxxx ก็จะเอา xxxx มาเก็บไว้ในตัวแปร replace: ที่เขียนว่า \1 ก็คือเอาค่าจากตัวแปรใน pattern \(.*\) นั่นก็คือ xxxx i: ตัวสุดท้ายหมายถึง Case-Insensitive

Read More »

ตั้งรับและตอบโต้การโจมตี DNS Brute Force Query Attack

ต่อเนื่องจาก บทความนี้ หลังจากรู้แล้วว่า DNS Server ของเราถูกโจมตีล่ะนะ ทีนี้จะตอบโต้อย่างไรดี? ถ้าหากการโจมตีมันไม่ได้เป็น distribution คือตรวจสอบแล้วมาจาก host เพียงตัวเดียวหรือไม่กี่ตัว ก็สามารถตอบโต้แบบง่ายๆได้ โดยใช้ความสามารถของ bind9 เอง bind9 จะมี option ที่จะสามารถ block การ query จาก client ได้ โดยสามารถระบุเป็น ip เดี่ยวๆ หรือเป็น block ของ ip network โดยการเพิ่มเป็น blackhole ใน named.conf.options แบบนี้ครับ สมมติ options config เดิมของ bind9 คือ options {     directory “/var/cache/bind”;     forward only;     forwarders {          192.100.77.2;          192.100.77.5;     };     auth-nxdomain no;    # conform to RFC1035     listen-on-v6 { any; }; }; เราสามารถเพิ่ม include “/etc/bind/blackhole.list”; เข้าไปก่อน บรรทัด “};” ซึ่งเป็นบรรทัดล่างสุดของ options เป็น options {     directory “/var/cache/bind”;     forward only;     forwarders {          192.100.77.2;          192.100.77.5;     };     auth-nxdomain no;    # conform to RFC1035     listen-on-v6 { any; }; include “/etc/bind/blackhole.list”; }; โดยข้อมูลในไฟล์ /etc/bind/blackhole.list จะมีข้อมูลดังนี้ blackhole {     174.127.92.85;     31.210.155.237;     178.32.76.101;    … }; ซึ่งวิธีการนี้ ทำให้เราสามารถแก้ไขเฉพาะไฟล์ blackhole.list โดยไม่ต้องไปแก้ไข named.conf.options เมื่อมีการโจมตีโดยใช้ ip address ใหม่เกิดขึ้น อย่างไรก็ตาม ผมพบว่า วิธีการนี้ ไม่ค่อยได้ผลสักเท่าไหร่ ถ้าการโจมตีเป็นแบบ DoS หรือ DDoS เพราะ ผู้ที่โจมตี ไม่ได้สนใจข้อมูลที่ DNS Server ของเราจะส่งกลับไป เพียงแต่ต้องการทำให้ Server ทำงานหนักขึ้นเท่านั้น การระบุ blackhole list จะทำให้ DNS Server ส่งคำตอบกลับไปยัง client ที่ query มาว่า REFUSED แต่ก็จะยังมีการตอบกลับ และมีการบันทึกการ query ลงสู่ record อยู่ นอกจากนี้ ถ้าเป็น DDoS ซึ่งจะมี client ที่มี ip address ใหม่ๆ โจมตีเข้ามาเรื่อยๆ การแก้ไขไฟล์ blackhole.list เพื่อให้ทันสมัยอยู่เสมอ ก็แทบที่จะทำให้วิธีการนี้ ใช้ป้องกันจริงๆไม่ได้ ซึ่งก็จะขอเสนอเป็นบทความต่อไปครับ การใช้ fail2ban เพื่อป้องกันการโจมตีแบบ

Read More »