Category: Network Configuration

  • มาใช้งาน letsencrypt กันเถอะ

    สำหรับใครก็ตามที่มีความจำเป็นที่จะต้องดูแลเว็บเซิร์ฟเวอร์ในปัจจุบัน ก็ดูเหมือนว่าจะหลีกไม่พ้นที่จะต้องรู้เรื่องของการเซ็ตอัพให้เซิร์ฟเวอร์ที่ต้อดูแล สามารถใช้งานผ่านโปรโตคอล https ได้ นอกเหนือไปจากการใช้งานผ่านโปรโตคอล http ซึ่งเป็นโปรโตคอลมาตรฐานดั้งเดิม สำหรับการให้บริการเว็บเซิร์ฟเวอร์

    เอาล่ะ ถ้าจะว่ากันตามตรงแล้ว งานที่ต้องเพิ่มขึ้นมาสำหรับการที่จะทำให้ เว็บเซิร์ฟเวอร์สามารถใช้ https ได้ ถ้าทำให้มันใช้ http ได้แล้ว โดยทั่วไปก็ไม่ได้ยุ่งยากมากขึ้นเท่าไหร่ ขึ้นอยู่กับระบบปฏิบัติการที่เลือกใช้ ขึ้นอยู่กับตัวเว็บเซิร์ฟเวอร์ที่เลือกใช้ ขึ้นอยู่กับเซอร์ติฟิเคท (certificate) ที่ใช้ด้วย แต่ว่ากันโดยทั่วไป ระบบที่มีผู้ใช้งานเยอะ ตัวติดตั้งซอฟต์แวร์ของระบบปฏิบัติการ ก็มักจะจัดเตรียมวิธีการตรงนี้ไว้ให้แล้ว เหลือแค่การเรียกใช้งานเพิ่มแค่ไม่กี่คำสั่ง ก็สามารถใช้งานได้เลย
    ขอยกตัวอย่างเลยก็แล้วกัน สำหรับระบบปฏิบัติการเดเบียนลินุกซ์ (Debian Linux) รุ่น เจสซี่ (jessie) และ ใช้งาน apache เวอร์ชัน 2 เป็นเว็บเซิร์ฟเวอร์

    วิธีการติดตั้งตัวเว็บเซิร์ฟเวอร์ก็คือ

    $ sudo apt-get install apache2

    เพียงเท่านี้ เราก็สามารถใช้งานเว็บเซิร์ฟเวอร์ สำหรับให้บริการแบบสแตติกไฟล์ และสามารถใช้สคริปต์แบบ CGI ได้แล้ว
    แล้วถ้าต้องการให้มันรองรับแบบไดนามิก โดยใช้ภาษา php ได้ด้วยล่ะ? ก็ไม่ได้ยากอะไร ก็เพียงเพิ่มโมดูลของ php เข้าไป โดยใช้คำสั่ง

    $ sudo apt-get install libapache2-mod-php5

    ตัวโปรแกรมสำหรับติดตั้ง (apt-get) ก็จะตรวจสอบ แพกเกจที่จำเป็นต้องใช้และยังไม่ได้ติิดตั้งเอาไว้ เช่น php5 แล้วก็ติดตั้งแพกเกจเหล่านั้นให้ด้วยเลยโดยอัตโนมัติ หลังจากนั้นเราก็สามารถสร้าง index.php ในไดเรคตอรี่ /var/www/html/ แล้วก็เขียนโปรแกรมภาษา php ให้บริการบนเว็บได้เลย

    ทีนี้ถ้าต้องการให้บริการเว็บ โดยใช้ https โปรโตคอลล่ะ เพื่อให้มีการเข้ารหัสข้อมูลที่มีการรับส่งระหว่าง ตัวเว็บเบราเซอร์ และ เว็บเซิร์ฟเวอร์ อันนี้ ไม่จำเป็นจะต้องติดตั้งโมดูลเพิ่มเติม เพราะตัว apache ติดตั้งให้โดยปริยายตั้งแต่แรกแล้ว แต่ ไม่ได้เปิดให้ใช้งานโดยอัตโนมัติ ผู้ดูแลระบบจะต้องสั่งเพิ่มว่า ให้เปิดบริการแบบ https ด้วย โดยใช้คำสั่งดังนี้

    $ sudo a2enmod ssl
    $ sudo a2ensite default-ssl

    และสั่ง restart ตัวเว็บเซิร์ฟเวอร์โดยใช้คำสั่ง

    $ sudo systemctl restart apache2

    เท่านี้ ก็จะสามารถใช้งาน https โปรโตคอลเพิ่มเติมขึ้นมาจากเดิม ที่ใช้งานได้เฉพาะ http โปรโตคอล

    แต่ … มันไม่ได้จบง่ายๆแค่นั้นน่ะสิ ถึงแม้ว่าการให้บริการจะโดยใช้ https โปรโตคอลจะมีการเข้ารหัสข้อมูลที่มีการรับส่งระหว่างตัวเบราเซอร์กับตัวเซิร์ฟเวอร์ แต่ เซอร์ติฟิเคท (certificate) สำหรับกุญแจที่ใช้ในการเข้ารหัสข้อมูลนั้น จะเป็นแบบที่เรียกว่า self-signed certificate ซึ่งตัวเบราเซอร์โดยทั่วไปจะ ไม่เชื่อถือ (un trusted) ว่าเป็นเซอร์ติฟิเคท ที่ออกให้กับเว็บไซท์ ที่ระบุว่าเป็นโดเมนนั้นๆจริง

    ในการใช้งานเว็บไซท์ที่ตัวกุญแจเข้ารหัสใช้ self-signed certificate ตัวเบราเซอร์ก็จะ “เตือน”, และสร้างความยุ่งยากในการใช้งานให้กับ ผู้ใช้ที่ต้องการเข้าใช้งานเว็บไซท์นั้นๆ

    นั่นอาจจะไม่ได้เป็นปัญหาใหญ่อะไร สำหรับเว็บไซท์ที่สร้างขึ้นมาเพื่อให้บริการภายในหน่วยงานกันเอง ซึ่งผู้ใช้งานในหน่วยงาน อาจจะใช้วิธีการอื่นๆ เช่นเดินไปถาม, โทรศัพท์ไปถาม, ส่ง e-mail ไปถาม … หรือในกรณีที่เป็นจริงส่วนใหญ่ ก็คือ ไม่ต้องถาม ก็แค่กดปุ่มยอมรับความเสี่ยง ให้ตัวเบราเซอร์จำเซอร์ติฟิเคทนั้นไว้ แล้วก็ใช้งานไปแค่นั้นเอง

    แต่นั่น อาจจะเป็นปัญหาในเรื่องของความน่าเชื่อถือ ถ้าเว็บไซท์ดังกล่าว เปิดให้บริการให้กับบุคคลภายนอกหน่วยงานด้วย

    ยกตัวอย่างที่ใกล้ตัวหน่อยก็แล้วกัน ถ้าเว็บไซต์ของภาควิชาใดภาควิชาหนึ่ง ในหลายๆคณะของมหาวิทยาลัยสงขลานครินทร์ เปิดให้บริการแบบ https ขึ้นมา และบุคคลภายนอก ซึ่งบุคคลภายนอกนี้ ไม่จำเป็นจะต้องเป็น บุคคลภายนอกของมหาวิทยาลัย แม้กระทั่งบุคคลากรของมหาวิทยาลัย แต่อยู่ต่างคณะ หรือแม้ต่างภาควิชา การที่จะตรวจสอบว่า เว็บดังกล่าว เป็นเว็บของหน่วยงานนั้นจริงๆ ก็เริ่มเป็นเรื่องยุ่งยากขึ้นมาระดับนึงแล้ว ถ้าต้องให้บริการกับบุคคลภายนอกมหาวิทยาลัยด้วย การที่จะตรวจสอบว่าเป็นเว็บของหน่วยงานนั้นๆ ยิ่งเป็นเรื่องที่ ยุ่งยากเกินเหตุ … แน่นอน ในทางปฏิบัติ ใครที่จำเป็นจะต้องเว็บไซท์เหล่านั้น ก็คงจะต้องใช้ต่อไป ก็เพราะจำเป็นที่จะต้องใช้ ไม่ว่าตัวเบราเซอร์จะเตือนให้ระวังอย่างไร

    มันเป็นสิ่งที่ไม่ดี ในทางหนึ่ง มันเป็นการฝึกให้ผู้ใช้งานเว็บไซต์ ยอมรับ ในความไม่ปลอดภัยที่อาจจะมี และ นำไปใช้งานกับเว็บไซท์อื่นๆด้วย

    ทางแก้ล่ะ ก็ไม่ได้เป็นเรื่องยุ่งยาก “มาก” แต่อย่างใด ก็แค่หาเซอร์ติฟิเคทที่ยอมรับโดยตัวเบราเซอร์มาใช้งานแค่นั้นเอง

    อย่างไร? … ก็ … จ่ายตังค์ ซื้อ … 🙂

    นั่นอาจจะทำให้เป็นเรื่องยุ่งยาก “มาก” ขึ้นมาทันทีสำหรับ หลายๆหน่วยงาน (ฮา)

    สำหรับหน่วยงานภายในมหาวิทยาลัยสงขลานครินทร์ อาจจะมีอีกหนึ่งทางเลือก นั่นคือว่า ถ้าเว็บไซท์ที่ผู้ดูแล มีโดเมนเป็น .psu.ac.th และไม่ได้เป็นโดเมนย่อยของ .psu.ac.th อีกที ตัวอย่างเช่น เว็บไซท์ www.psu.ac.th ถือว่าอยู่ในโดเมน .psu.ac.th แต่เว็บไซท์ www.coe.psu.ac.th จะอยู่ในโดเมนย่อย .coe ของ โดเมน .psu.ac.th อีกทีนึง

    สำหรับเว็บไซท์ ที่อยู่ภายใต้โดเมน .psu.ac.th และไม่ได้อยู่ในโดเมนย่อย ก็จะสามารถติดต่อทาง ผู้ดูแลระบบเครือข่ายของศูนย์คอมพิวเตอร์ เพื่อขอใช้เซอร์ติฟิเคทสำหรับเว็บไซท์นั้นได้ เนื่องจากศูนย์คอมพิวเตอร์ จะซื้อเซอร์ติฟิเคทแบบที่เรียกว่า wildcard สำหรับโดเมน .psu.ac.th ซึ่งจะสามารถออกใบเซอร์ติฟิเคทสำหรับเว็บไซท์ ที่ไม่ได้อยู่ภายใต้โดเมนย่อยของ .psu.ac.th ให้ได้

    แล้วสำหรับผู้ดูแลของเว็บไซท์ ที่ไปขอเซอร์ติฟิเคทของศูนย์คอมพิวเตอร์มาใช้งานไม่ได้ล่ะ ไม่ว่าจะสาเหตุเนื่องจาก โดเมนที่ใช้อยู่เป็นโดเมนย่อยของ .psu.ac.th อีกที หรือ ใช้โดเมนอื่นอยู่ที่ไม่ใช่ .psu.ac.th ทำอย่างไรดี?

    ก็ … จ่ายตังค์ซื้อสิ … เฮ่ย ไม่ใช่!
    งั้น … ใช้ self-signed certificate ต่อ … เฮ้ย! … แล้วจะเขียนมาหาพระแสงของ้าว อะไร …

    โอเค อีกทางเลือกนึง ก็ตามที่เขียนไว้ในหัวข้อบทความน่ะแหละครับ มันมีทางเลือกที่เราจะใช้เซอร์ติฟิเคทที่รองรับโดยเบราเซอร์ทั่วไป และ ไม่ต้องจ่ายตังค์ นั่นคือใช้บริการของ letsencrypt ซึ่ง … ยังมีเรื่องที่ต้องพูดถึงกันอีกยาวพอสมควร และ โดยความขึ้เกียจของผู้เขียน ถ้าจะรอให้เขียนเสร็จเป็นบทความเดียวแล้วค่อยตีพิมพ์เลย ก็เดาได้ว่า คงจะไม่เสร็จแหละ สำหรับใครๆที่สนใจจะอ่านก่อนว่าขั้นตอนที่จะเอามาใช้งานทำได้อย่างไรบ้าง ก็เริ่มต้นจาก ที่นี่ https://letsencrypt.org/getting-started/ ได้ครับ

    ผมขอจบบทความนี้ ไว้แค่นี้ก่อน แล้วค่อยมาต่อ ภาค 2 (หวังว่า) ในเวลาอีกไม่นาน 🙂

  • วิธีทำระบบกล้องวงจรปิดที่บ้านแบบประหยัด + ดูผ่าน Internet โดยไม่ต้องทำ Port Forward

    อยากมีกล้องวงจรปิดที่บ้านแบบประหยัดงบ เชิญอ่าน …

    แนวคิด: ใช้งานสิ่งที่มีอยู่ ซื้อเท่าที่จำเป็น บันทึกวิดีโอได้ตามช่วงเวลาที่กำหนด (06:00-18:00) นอกช่วงเวลาบันทึกเฉพาะเมื่อมีความเคลื่อนไหว (Motion Detection) (00:00-06:00) ระบบสามารถลบวิดีโอที่อายุเกินกำหนดได้ และสามารถดูได้จาก Internet โดยไม่ต้องทำ Port Forward (บ้านที่มี ADSL ไม่สามารถ Fix IP ได้ แถมบางค่ายให้ NAT IP มาที่ Router อีก ยิ่งทำยาก)

    สิ่งที่มีอยู่แล้ว:

    กล้อง: สามารถใช้งาน Smart Phone เก่าๆ เช่น Samsung Galaxy Mini + ติดตั้งโปรแกรม IPCamera โดย Fix IP: 192.168.2.21

       

     

    PC: Notebook เครื่องเก่า เป็น Windows 7 ติดตั้งโปรแกรม Open Source ชื่อ iSpy หรือ จะใช้ VLC ก็ได้ (ค่อยเขียนบทความต่อไป สำหรับคนที่จะใช้ Linux Server)

    Wireless Network:

    TP-Link TD-W8961ND

    ซื้อเพิ่ม:

    กล้อง Network Camera: D-Link DCS-930L ราคา 1,290 บาท โดย Fix IP: 192.168.2.22

    เลือกรุ่นนี้เพราะ พื้นที่ที่ต้องการจับภาพไม่จำเป็นต้องมี Infrared ไว้ดูตอนกลางคืน สามารถตั้งเวลาที่จะเชื่อมต่อจาก Internet ได้ (เพื่อความปลอดภัย) ,มี Motion Detect ซึ่งเพียงพอต่อความต้องการแล้ว และ กล้องของ D-Link มีสิ่งที่เรียกว่า mydlink Cloud Access ทำให้สามารถเชื่อมต่อกล้องจาก Internet ได้โดยไม่ต้องทำ Port Forward (หากใครไม่ชอบ ก็ปิดได้)

    การติดตั้ง:

    กล้องของ Android ที่ติดตั้ง IPCamera Apps ไป จะสามารถเข้าถึงวิดีโอได้ที่ http://a.b.c.d:8080/video โดยสามารถตั้ง Username/Password ได้ตามต้องการ

    กล้องของ D-Link DCS-930L เมื่อแกะกล่อง ก็เสียบสายไฟ แล้วไปกดปุ่ม WPS ที่ Router ระบบก็จะเชื่อมต่อกล้องเข้ากับระบบแล้ว หรือถ้าไม่มี WPS ก็ต่อสาย LAN เข้ากับ Port ของกล้อง และ Fix IP ของ Network Card ของคอมพิวเตอร์ ให้เป็น 192.168.0.2 แล้วเปิดเว็บไปที่ http://192.168.0.20 เพื่อเข้าไปบริหารจัดการกล้อง จากนั้น เมื่อจะเข้าถึงวิดีโอได้ที่ http://a.b.c.d/video/mjpeg.cgi โดยสามารถตั้ง Username/Password ได้ตามต้องการ

    ที่ Router ให้เข้าไปใน Router Configuration เพื่อ Fix IP กับ MAC Address ของกล้อง เป็นอันเรียบร้อย

    โปรแกรม iSpy: กดปุม Add กล้องตาม URL ที่กล่าวข้างต้น จากนั้น ตั้งค่า Schedule เพื่อกำหนดว่า เวลา 06:00-18:00 ของทุกวัน ให้บันทึกวิดีโอต่อเนื่อง ค่าเริ่มต้นจะบันทึกวิดีโอเป็นไฟล์ ความยาว 15 นาที (900 วินาที) ซึ่งสามารถปรับแต่งได้ตามต้องการ ส่วนเวลา 00:00-06:00 ก็สั่งให้ทำ Motion Detect จับภาพเฉพาะเมื่อมีการเคลื่อนไหว (สามารถระบายตำแหน่งที่ต้องการให้จับความเคลื่อนไหวได้ด้วย) แล้วก็ Save … จบ โปรแกรมนี้สามารถเพิ่มกล้องได้ 32 ตัว ไม่จำกัดว่ายี่ห้อกล้อง ขอให้สามารถเข้าถึงวิดีโอได้ผ่าน Network ก็พอแล้ว

    การเข้าถึงกล้องจาก Internet:

    สำหรับ D-Link Network Camera ก็ให้ติดตั้ง Clients แล้วใส่ Username/Password ของ mydlink Account ก็สามารถดูได้แล้วผ่าน Cloud Access

    ส่วน iSpy นั้น ถ้าจะเข้าถึงจากภายนอก ก็ต้องจ่ายเงินนิดหน่อย และต้องทำการ Port Forward (พอดีไม่ได้ทำตรงนี้)

    เดี๋ยวค่อยเล่ารายละเอียดโปรแกรม iSpy และ การใช้ VLC เพื่อบันทึกวิดีโอจากล้องในตอนต่อไป

     

     

     

     

     

  • วิธีการใช้งาน ADSL ร่วมกันกับข้างบ้าน

    ใครใช้ ADSL หรือ ซื้อ Internet ไว้ใช้งานที่บ้านบ้าง ??? มีราคาตั้งแต่ 590 บาทต่อเดือน (ไม่รวม VAT) ขึ้นไป เมื่อมีแล้วก็ใช้งานได้รวดเร็วทันใจ … แต่คำถามคือ … ใช้งานคุ้มค่าหรือไม่ ??? แล้วจะดีไม๊ ถ้ารู้ว่า ยังใช้ไม่คุ้มค่า แล้วสามารถหารค่าใช้จ่ายร่วมกับข้างบ้านได้ หรือ กรณีบ้านเดียวกันนี่แหล่ะ แต่เป็นบ้านทรงสูงเช่น บ้านเป็นตึกหลายชั้น จะเดินสาย LAN ไปชั้นบนๆก็ไม่สะดวก ไม่สวยงาม สามารถใช้ Solution นี้ได้ (แบ่งสัดส่วนกันตามสะดวกใจ)

    โจทย์: บ้าน A พบว่า ตัวเองใช้งาน ADSL 10Mbps ไม่ค่อยคุ้ม เลยคุยกับบ้าน B ว่า แบ่งใช้งานกันไม๊ ? บ้าน B ก็พบว่า ตัวเองถ้าติดตั้ง ADSL ใหม่ก็ใช้ไม่คุ้มเช่นกัน จึงหาทางออกร่วมกัน บ้าน A และ B คั่นด้วยถนนหมู่บ้าน กว้าง 10 เมตร ไม่สามารถลากสาย LAN ข้ามมาได้ ส่วน ADSL Router ของ A อยู่กลางบ้าน และปล่อยสัญญาณ WiFi เต็มพิกัด

    ที่กลางบ้าน B วัดความแรง WiFi ของบ้าน A ได้ -88 dB แต่ถ้ามาที่หน้าบ้านของ B จะวัดได้ -65 dB ซึ่งพอจะไหว

    แนวคิด: จะใช้เทคนิค WiFi Repeater ด้วย ADSL Router ตัวเก่ารับสัญญาณ WiFi มาแล้วกระจายผ่าน LAN ส่งให้ ใช้ WiFi Router อีกตัว ทำหน้าที่เป็น Access Point

    อุปกรณ์ที่ใช้ และการตั้งค่า:
    บ้าน A: 3BB ADSL WiFi Router (Router IP: 192.168.1.1) ตั้ง SSID เป็น AHOME

    บ้าน B:
    1. Xyzel NBG-419N ทำงานในโหมด WISP (Wireless Internet Service Provider) ทำหน้าที่รับสัญญาณ WiFi มากระจายผ่าน LAN (Router IP: 192.168.2.1) และเปิด DHCP Range 192.168.2.2 – 192.168.2.99 จากนั้น เสียบสาย LAN เข้าที่ Port 1 (ถ้าจะให้ตัว Router อยู่ภายในบ้าน ควรซื้อสาย Antenna ยาวสัก 3 เมตร ราคาประมาณ 199 บาท เพื่อให้เสาอากาศไปอยู่นอกบ้าน แล้วเชื่อมสายสัญญาณเข้ามาที่ตัว Router)

    2. TP-Link TD-W8961ND เปลี่ยนเป็น Access Point Mode  (Router IP: 192.168.2.100) ตั้ง SSID เป็น BHOME ปิด DHCP Server แล้วเสียบสาย LAN เข้ามาที่ Port 1

    ผลการทำงาน: 

    บ้าน B: เมื่อเชื่อมกับ BHOME จะได้สัญญาณความแรง -50dB ทั้งบ้าน สามารถทดสอบ Speed Test ได้ 7 Mbps

     

  • เปลี่ยน Certificate!?

    เนื่อง Certificate *.psu.ac.th จาก Comodo เดิมซึ่งกลายเป็น Cert. ที่จัดว่า WEAK แล้ว ทางเจ้าหน้าที่เครือข่ายจึงได้ขอ Cert. ใหม่มา ที่ Strong ขึ้น 🙂 ก็ต้องมานั่งเปลี่ยน Cert. ในเครื่องที่ให้บริการขั้นตอนดังนี้

    • Download Cert. ใหม่มาซึ่งต้องติดต่อขอไปที่ Net@dmin โดยผ่านช่องทางของ help.psu.ac.th
    • ไฟล์ที่จะโหลดมาใช้งานมีทั้งหมด 3 ไฟล์ได้แก่ STAR_psu_ac_th.ca-bundle, STAR_psu_ac_th.crt และ STAR_psu_ac_th_key.key เมื่อดาวน์โหลดมาเสร็จแล้วให้เอาไปแทนที่เก่าได้เลย ในตัวอย่างนี้จะเก็บไว้ที่ /etc/ssl/private
    • ทีนี้ มาดู config เก่าของ apache2

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
    ServerName bahamut.psu.ac.th
    ServerAdmin cc-server-admin@group.psu.ac.th
    DocumentRoot "/var/www/html"
    ErrorLog ${APACHE_LOG_DIR}/bahamut.ssl_error_log
    TransferLog ${APACHE_LOG_DIR}/bahamut.ssl_access_log
    LogLevel warn

    SSLEngine on
    SSLCertificateFile /etc/ssl/private/STAR_psu_ac_th.crt
    SSLCertificateKeyFile /etc/ssl/private/STAR_psu_ac_th.key
    SSLCertificateChainFile /etc/ssl/private/STAR_psu_ac_th.ca-bundle

    RewriteEngine On
    RewriteRule /avl https://licensing.psu.ac.th

    <Directory /var/www/licensing>
    AllowOverride All
    Order deny,allow
    Deny from all
    Allow from 10.0.0.0/8 172.16.0.0/12 192.168.0.0/16
    </Directory>
    </VirtualHost>
    </IfModule>

      • จะเห็นว่าไฟล์ชื่อไม่ตรงอยู่ไฟล์หนึ่งคือ STAR_psu_ac_th.key ก็เปลี่ยนชื่อให้ตรง เป็นอันเสร็จ
      • แต่ … เนื่องจากเป็น Cert. ใหม่ เพื่อเพิ่มความแข็งแรง เจ้าหน้าที่เครือข่ายจึงได้กำหนด Passphrase ไว้ด้วย ต้องแก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf ในบรรทัดที่เขียนว่า SSLPassPhraseDialog exec:/usr/share/apache2/ask-for-passphrase ให้แก้ /usr/share/apache2/ask-for-passphrase เป็น /etc/ssl/private/passphrase-script แล้วสร้างแฟ้ม /etc/ssl/private/passphrase-script มีข้อความว่า

    #!/bin/sh
    echo "passphrase ที่ได้รับแจ้งจาก Net@dmin"

      • chmod +x /etc/ssl/private/passphrase-script และทดสอบ script ด้วยว่าผลลัพธ์ที่ได้ตรงกับ passphrase ที่ Net@dmin แจ้งมา
      • restart apache2 ด้วยคำสั่ง sudo service apache2 restart ถ้า passphrase ที่ใส่ไว้ในแฟ้ม passphrase-script ถูกต้องจะ restart สำเร็จ
      • เป็นอันเสร็จ

    สิ่งที่ต้องแก้เพื่อให้ได้ A+ ในการทดสอบกับเว็บ https://www.ssllabs.com/ssltest/analyze.html

    • แก้ไขแฟ้ม /etc/apache2/mods-enabled/ssl.conf โดยแก้ไข/เพิ่ม ข้อความดังต่อไปนี้

    SSLCipherSuite ECDH+AESGCM:DH+AESGCM:ECDH+AES256:DH+AES256:ECDH+AES128:DH+AES:
    RSA+AESGCM:RSA+AES:!aNULL:!MD5:!DSS
    SSLHonorCipherOrder on
    SSLProtocol all -SSLv3 -SSLv2
    SSLCompression off

    • sudo a2enmod headers เพื่อให้ module headers ของ apache2 ทำงาน
    • แก้ไขแฟ้มของไซต์ที่เปิด ssl ไว้ จากตัวอย่างนี้คือ /etc/apache2/sites-enabled/licensing-ssl.conf โดยเพิ่มข้อความว่า
      Header add Strict-Transport-Security "max-age=15768000;includeSubDomains"
    • ตัวอย่าง

    <IfModule mod_ssl.c>
    <VirtualHost *:443>
    ServerName licensing.psu.ac.th
    ServerAdmin cc-server-admin@group.psu.ac.th
    DocumentRoot "/var/www/html/avl"
    ErrorLog ${APACHE_LOG_DIR}/licensing.ssl_error_log
    TransferLog ${APACHE_LOG_DIR}/licensing.ssl_access_log
    LogLevel warn
    SSLEngine on
    Header add Strict-Transport-Security "max-age=15768000;includeSubDomains"
    SSLCertificateFile /etc/ssl/private/STAR_psu_ac_th.crt
    SSLCertificateKeyFile /etc/ssl/private/STAR_psu_ac_th.key
    SSLCertificateChainFile /etc/ssl/private/STAR_psu_ac_th.ca-bundle
    </VirtualHost>
    </IfModule>

    • restart apache2 ด้วยคำสั่ง sudo service apache2 restart
    • ทั้งหมดนี้ทำ บน Ubuntu 14.04.1
    • ผลของการตั้งค่าตามนี้ จะทำให้ผู้ใช้ที่ยังใช้งาน Windows XP และ IE6 ไม่สามารถใช้งานเว็บไซต์ได้
    • จบ ขอให้สนุกครับ

    จุดสังเกตุเมื่อเปลี่ยน certificate แล้ว
    ก่อนเปลี่ยนบน Chrome เบราเซอร์
    https-sharedrive-chrome-before-update-cert

    หลังเปลี่ยนบน Chrome เบราเซอร์
    after

    ที่มา:

    http://www.bauer-power.net/2014/04/how-to-enable-http-strict-transport.html#.VJJ8pXtKW7A

    http://www.hackido.com/2009/10/quick-tip-auto-enter-password-for-your.html

  • Block Baidu กับ ZyXEL ZyWALL USG1000

    รุ่นที่ใช้คือ ZyWALL USG1000
    1. Login เข้าหน้าจัดการ FireWall
    2. คลิก setting
    001
    3. เลือกเมนู Anti-X => Content Filler
    002
    4. เลือก Tab Fillter Profile
    003
    5. คลิก ADD
    004
    6. ตั้งชื่อ Profile ในที่นี้คือ BAIDU เลือก Tab Custom Service
    005
    7. คลิก Enable Custom Service
    012
    8. ลงมาล่างสุด ที่ Blocked URL Keywords คลิก Add
    006
    9. ใส่ชื่อ Web Site ที่ต้องการ Block ถ้าต้องการใส่มากกว่า 1 web ให้คลิก Add เพื่อเพิ่มเติม
    ในที่นี้ baidu.com และ baidu.co.th เสร๋จแล้วคลิก OK
    007
    10. เลือก Tab General
    009
    11. คลิก Enable Content Filter และ คลิก ADD
    010
    12. ตรง Filter Profile เลือก Profile ที่ ต้องการ ในที่นี้คือ BAIDU คลิก OK
    011
    13. มาดูผลงาน อย่าลืมเลือก Display เป็น Block web sites ด้วย
    008
    013

  • How to: PSU OpenVPN Ubuntu 14.04/15.04/15.10/Linux Mint 17/17.1/17.2

    • ติดตั้ง net-workmanager-openvpn

    Screenshot from 2014-06-24 10:53:42

    • คลิก Ubuntu Button แล้วพิมพ์ netw เลือก Network Connections

    Screenshot from 2014-06-24 11:15:39

    • ได้ดังภาพ คลิก Add

    Network Connections_002

    • ได้ดังภาพ

    Screenshot from 2014-06-24 09:58:04

    • เลือก OpenVPN แล้วคลิก Create…

    Screenshot from 2014-06-24 10:00:06

    Screenshot from 2014-06-24 10:11:33

    • คลิก Advanced เลือกดัังภาพ

    Screenshot from 2014-06-24 13:34:37

    • กด OK ออกมาแล้วคลิกที่ IPv4 Settings ตั้งค่าตามภาพ

    Screenshot from 2014-06-24 10:21:34

    • คลิก IPv6 Settings ตั้งค่าตามภาพ

    Screenshot from 2014-06-24 13:43:54

    • กลับมาแท็บ VPN คลิก Save… ได้ดังภาพ คลิก Close

    Screenshot from 2014-06-24 10:11:58

    • เหลือบมองมุมขวาบนจะมีรูปภาพ Screenshot from 2014-06-24 13:46:19 หรือ Screenshot from 2014-06-24 14:11:36 ให้คลิกที่รูปนี้แล้วเลือก VPN Connection -> PSU

    Screenshot from 2014-06-24 13:48:27

    • รอจนมีข้อความดังภาพปรากฎที่มุมบนขวา เป็นอันเสร็จ

    Screenshot from 2014-06-24 13:54:27สำหรับ Linux Mint 17

    • ติดตั้ง network-manager-openvpn-gnome แทน นอกนั้นเหมือนกัน

    เพิ่มเติม เพื่อให้สามารถคลายแฟ้ม vpn_package_for_all_xp-vista-7.exe ได้ต้องติดตั้งโปแกรมเหล่านี้เพิ่มเติม p7zip-rar, p7zip-full, unace, unrar, zip, unzip, sharutils, rar, uudeview mpack, arj, cabextract, file-roller โดยพิมพ์คำสั่ง

    sudo apt-get install p7zip-rar p7zip-full unace unrar zip unzip sharutils rar uudeview mpack arj cabextract file-roller

    จบจริงๆ … ขอให้สนุกครับ

  • วิธีการตั้งค่า CNAME และ TXT เพื่อ Verification กับ Google Site

    Google Site เป็บบริการหนึ่งของ Google ซึ่งให้เราสร้างเว็บไซต์ได้อย่างง่ายๆ เหมาะสำหรับการงานที่ต้องการความรวดเร็วในการสร้าง และสามารถประสานกับเครื่องมือต่างๆของ Google ได้มากมาย เช่น จะสร้างแบบฟอร์มรับสมัครเข้าร่วมโครงการ, ทำรายงานผู้ที่ชำระเงินแล้ว, ผนวกกับ Google Map เพื่อแสดงตำแหน่งที่จัดงาน และสถานที่ท่องเที่ยว หรือ อื่นๆอีกมากมาย (วิธีการสร้าง จะกล่าวในบทความต่อๆไป)

     ในบทความนี้ เป็นการสร้าง เว็บไซต์ของงาน ประชุมสภาข้าราชการ พนักงานและลูกจ้างแห่งประเทศ (ปขมท) ๒๕๕๗ และเน้นที่ การเชื่อม Domain Name ของมหาวิทยาลัย ซึ่งใช้ Bind DNS เข้ากับ Google Site

    โดย Google Site ที่แสดงในตัวอย่าง สร้างที่ https://sites.google.com/site/cuast57/ ซึ่ง ชื่อจะจำได้ยาก จึงขอใช้ Domain Name สั้นๆชื่อ cuast57.psu.ac.th

    วิธีการมีดังนี้

    1. ไปที่ Setting > Manage Site

    2. คลิกที่ Web Address แล้วใส่ cuast57.psu.ac.th จากนั้นคลิกปุ่ม Add

    3. จะขึ้น error ด้านบน “You have not verfified domain ownership with Google. please follow these instructions” ให้คลิกที่ “these instructions”

     4. เลื่อนลงไปล่าสุดของหน้าจอ คลิกที่ “Webmaster Tools home page” (สมมุติว่าท่านเคยใช้งาน Google Webmaster Tools อยู่แล้ว)

    5. คลิกที่ Add A Site ให้ใส่ Domain Name ที่ต้องการ ในที่นี้คือ cuast57.psu.ac.th แล้วคลิก Continue

    6. คลิกที่ Alternate Methods > Domain name provider แล้วเลือก อันล่างสุด คือ other เพราะ Google Site ไม่เปิดให้เรา Upload File ขึ้นไป, ไม่สามารถแก้ไข Header หรืออะไรทำนองนั้นได้ จึงต้องใช้วิธีการนี้ ซึ่งจะต้องอธิบายตรงนี้เพื่อความเข้าใจ

     ในการที่เราคุม Domain Name แต่ใช้ Google Site นั้น สิ่งที่ต้องทำคือ สร้าง CNAME ไปยัง Google Site และ ทำการ Verification

    6.1 สร้าง CNAME ไปยัง ghs.googlehosted.com. เพื่อบอกว่า cuast57.psu.ac.th จะใช้บริการของ Google Site

    6.2 ต้องทำการ Verification โดยสามารถทำได้ 2 วิธีคือ

    1) ถ้าเราได้ Delegate Zone มา ก็จะสามารถใส่ TXT Record ลงไปได้ โดยใช้ค่าดังภาพ

     2) แต่ถ้าเราไม่ได้ Delegate Zone ก็จะต้องสร้าง CNAME ให้คลิกที่ “Add a CNAME record” ดังภาพ

    ให้เลือกวิธีการเอา แต่ในตัวอย่างนี้ เลือกวิธีการ 2) เพราะไม่ Delegate Zone มา และไปทำข้อ 7. ก่อน แล้วจึงกลับมาคลิกปุ่ม Verify ภายหลัง

    7. เพื่อทำการ Verification ให้สร้าง DNS Record ใน Bind DNS Server ดังนี้

    จากนั้น ทำการ sudo rndc reload แล้วกลับไปทำข้อ 6 เมื่อ Verification เสร็จ รอสักครู่ ก็จะสามารถเรียกใช้งาน cuast57.psu.ac.th ได้ครับ

    ขอให้โชคดี

  • Shorewall Blacklist

    • ใช้ได้กับ Shorewall 4.4.12 ขึ้นมา
    • แก้แฟ้ม /etc/shorewall/interfaces โดยเพิ่มความว่า blacklist ต่อท้ายของเดิม เป็น

    net eth0 detect tcpflags,logmartians,nosmurfs,blacklist

    • เพิ่มลิสต์ที่ต้องการบล็อคลงไปในแฟ้ม /etc/shorewall/blacklist
    • ตัวอย่างค้นหาเครื่องที่ต้องการบล็อคการเข้าถึงพอร์ต 80 และ 443

    grep -R phpmyadmin/scripts/setup.php /var/log/apache2|cut -d: -f2|awk '{ print $1 }'|sort -t'.' -n -k1,1 -k2,2 -k3,3 -k4,4|uniq

    • จากตัวอย่างในเครื่องเราไม่มี phpmyadmin แต่มีคนพยายามเข้าถึงตัวติดตั้ง phpmyadmin ฉะนั้นบล็อค IP พวกนี้ไว้ก่อน (บล็อคถาวรกรั่กๆ…)
    • เอา IP จากข้อที่แล้วมาใส่ในแฟ้ม /etc/shorewall/blacklist รูปแบบ

    #ADDRESS/SUBNET PROTOCOL PORT

    • เช่น

    93.115.210.90 tcp 80,443
    93.174.93.153 tcp 80,443
    94.23.58.185 tcp 80,443
    94.102.51.155 tcp 80,443
    103.247.21.60 tcp 80,443
    107.6.88.155 tcp 80,443
    109.163.232.218 tcp 80,443
    110.170.34.220 tcp 80,443
    111.90.168.5 tcp 80,443
    115.84.101.78 tcp 80,443
    115.238.101.45 tcp 80,443
    115.239.253.11 tcp 80,443
    116.93.105.112 tcp 80,443
    117.35.96.146 tcp 80,443
    118.140.120.26 tcp 80,443
    119.52.254.20 tcp 80,443
    119.57.51.154 tcp 80,443
    122.49.0.220 tcp 80,443
    123.125.148.79 tcp 80,443
    125.210.204.242 tcp 80,443

    • restart shorewall

    sudo shorewall restart

    • IP ที่ถูกแบล็คลิสต์ อาจหายไปจากสารบบ ทำให้ shorewall start ไม่ขึ้น ต้องลบไอพีดังกล่าวออกไปก่อนจึงจะ start ได้

    Compiling /etc/shorewall/blacklist...
    ERROR: Unknown Host (93.x4.93.153) : /etc/shorewall/blacklist (line 23)

    • จบ… ขอให้สนุกครับ

    ที่มา http://shorewall.net/manpages/shorewall-blacklist.html

    • คีย์เวิร์ดสำหรับแบน
    • /CFIDE/administrator/enter.cfm
    • /MyAdmin/scripts/setup.php
    • /myadmin/scripts/setup.php
    • /phpMyAdmin/scripts/setup.php
    • /pma/scripts/setup.php
    • /w00tw00t.at.blackhats.romanian.anti-sec:)
    • เป็นต้น