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

กิจกรรมของ 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 »

สร้าง log สำหรับ DNS Query เมื่อใช้ bind9 เป็น DNS Server

เนื่องจากปัญหาของ DNS Query Brute Force Attack ที่เกิดขึ้นกับ DNS Server บางตัวภายในเครือข่ายของมหาวิทยาลัย สงขลานครินทร์ วิธีการแรกที่ควรจะเอามาใช้ในการที่จะแก้ปัญหานี้ก็คือ “identify your enemy”. ใครคือคนที่ส่งคำสั่ง query เข้ามา? query อะไร? และ query บ่อยขนาดใหน? หลังจากแยกแยะข้อมูลในส่วนนี้ได้แล้ว เราค่อยตัดสินใจกันต่อว่าจะทำอย่างไรต่อไป สำหรับบทความนี้ จะพูดถึง Bind9 เท่านั้น Bind version ต่ำกว่า 9 ยังไม่ได้ทดสอบว่าใช้งานได้หรือเปล่า ส่วน version สูงกว่า 9, ถ้ามีก็น่าจะใช้งานได้ ส่วน DNS Server ตัวอื่นๆ ก็ยังไม่ได้ใช้อย่างจริงจังก็เลยไม่รู้เหมือนกันครับว่าจะจัดการอย่างไร แต่โดยหลักๆแล้วก็เหมือนกันครับ ก็คือ สร้าง log แล้วตรวจสอบจาก log สำหรับ bind9 ในส่วนของ option configuration จะมี keyword “logging” อยู่ ซึ่งสามารถใช้ระบุการ log ข้อมูลแบบต่างๆได้หลายอย่าง และ หลายรูปแบบมาก ในที่นี้ สมมติ เราสนใจเฉพาะส่วนของการ query นะครับ ก็อาจจะสร้าง config ได้แบบนี้ logging {       channel query_logging {              file “/var/log/named/query.log”;              print-time yes;       };       category queries { query_logging; }; }; เป็นการสร้าง channel สำหรับ log ขึ้นมาชื่อว่า “query_logging” โดยข้อมูลที่ถูกส่งมาที่ channel นี้จะเก็บลงไว้ในไฟล์ที่ชื่อว่า query.log ซึ่งไฟล์นี้จะเก็บอยู่ใน directory ที่ชื่อว่า /var/log/named config ข้างต้นจะเก็บเอาไว้ในไฟล์ /etc/bind/named.conf.options (สำหรับ Debian หรือ Ubuntu) โดยเพิ่มต่อท้ายเข้าไป ในส่วนของ directory ที่ใช้ในการเก็บ log (/var/log/named) ถ้ายังไม่มีอยู่ ก็ต้องสร้างขึ้นมาใหม่ก่อน และกำหนดให้เป็นของ user ซึ่ง run ตัว named daemon ซึ่งสำหรับบน Debian/Ubuntu จะใช้ user ที่ชื่อว่า bind ดังนั้น สามารถสร้าง diectory ขึ้นมาใช้งานได้โดยใช้คำสั่งดังนี้ $ sudo mkdir -p /var/log/named $ sudo chown bind:bind /var/log/named หลังจากแก้ไขไฟล์ /etc/bind/named.conf.options แล้ว เราก็ควรที่จะตรวจสอบก่อนว่า config ไฟล์ที่แก้ไขไปยังอยู่ใน format ที่ถูกต้องก่อนที่จะใช้งาน ซึ่งทำได้โดยการใช้คำสั่ง $ sudo named-checkconf /etc/bind/named.conf ซึ่งถ้าไม่มีข้อความใดๆแสดงออกมา ก็แสดงว่า config ถูกต้อง เราก็สามารถสั่งให้ named อ่าน config ใหม่เข้าไปใช้ได้ โดยการใช้คำสั่ง $ sudo service bind9 reload หรือ $ sudo rndc reconfig หลังจากนั้น ก็สามารถตรวจสอบการทำงานของตัว named server ได้โดยใช้คำสั่ง $ host www.mydomain.net localhost เปลี่ยน ‘www.mydomain.net’ เป็น host ที่ตัว name server ของเราให้บริการอยู่ หลังจากนั้นก็ไปตรวจสอบดูว่าในไฟล์

Read More »

Ubuntu 12.04 – วิธีการ Upgrade VirtualBox เป็น 4.2.4 โดยไม่ต้องติดตั้งใหม่

Ubuntu 12.04 – วิธีการ Upgrade VirtualBox เป็น 4.2.4 ——————————————————————————- หาก Ubuntu 12.04 ของท่านมีการติดตั้ง VirtualBox ต่ำกว่ารุ่น 4.2.4 และต้องการจะปรับปรุงโดยการ Upgrade VirtualBox สามารถทำได้โดยไม่ต้องติดตั้งโปรแกรม VirtualBox ใหม่ดังนี้ -ในระบบปฎิบัติการ Ubuntu 12.04 เรียกใช้งาน Termial โดยกดปุ่มแป้นพิมพ์พรอ้มกัน Ctrl + Alt + T $ wget -q http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add – $ sudo sh -c ‘echo “deb http://download.virtualbox.org/virtualbox/debian precise contrib” >> /etc/apt/sources.list’ $ sudo apt-get update && sudo apt-get install virtualbox-4.2 – หลังจากพิมพ์คำสั่งข้างต้นเรียบร้อยแล้วโปรแกรม VirtualBox ในเครื่องก็จะถูกปรับเป็น Version ใหม่เรียบร้อยแล้ว

Read More »