Category: CMS (Joomla!, Moodle, Wordpress)

  • Juju #03 – วิธีสร้าง Load Balance MySQL

    จาก Juju #02 – วิธีติดตั้ง WordPress ทำให้ได้ WordPress ซึ่งเป็น Web Application 2 เครื่องทำหน้าที่ Load Balance กัน ด้วย haproxy แล้ว

    จากนั้น ทำการเพิ่ม MySQL เข้าไปใหม่ แล้วตั้ง Application Name เป็น mysql-slave แล้ว Commit Chages

    จากนั้น สร้าง Relation เป็น mysql:master –> mysql-slave:slave

    เมื่อเสร็จแล้ว จะได้ผลอย่างนี้

    ทดสอบเพิ่ม Post ใหม่

    แล้วเข้าไปใน mysql-slave (juju-xxx-xx เป็นชื่อเครื่องที่ Juju สร้างขึ้น)

    lxc exec juju-xxxx-xx  bash

    แล้วใช้คำสั่งต่อไปนี้

    mysql -u root -p$(cat /var/lib/mysql/mysql.passwd) -e ‘use wordpress; select post_title from wp_posts;’

    ก็จะพบว่า mysql-slave ได้รับการ Update ตามไปด้วย

    บทความต่อไป จะกล่าวถึงวิธีการทำให้ WordPress สามารถใช้ mysql-slave ในการ Read ได้ เพื่อกระจายโหลดครับ

     

  • Juju #02 – วิธีติดตั้ง WordPress

    ในบทความนี้ จะแสดงวิธีการใช้ Juju เพื่อติดตั้ง WordPress พร้อมแสดงวิธีการเฝ้าระวังด้วย Nagios และ การ Scale Out

    1. เริ่มต้นจากคลิกที่ รูปเครื่องหมายบวก (+) สีเขียว
      2559-12-02-13_55_33
    2. ในช่องค้นหา พิมพ์คำว่า “wordpress” แล้วคลิก Enter2559-12-02-13_56_04
    3. จะปรากฏผลการค้นหา สิ่งนี้เรียกว่า Charm ซึ่งเป็น Image ของระบบปฏิบัติการ พร้อมทั้งการ Setup สิ่งที่เราต้องการมาให้เลย ในภาพให้คลิกที่คำว่า WordPress ด้านซ้ายมือ
      2559-12-02-13_56_19
    4. จากนั้น คลิก Add to canvas
      2559-12-02-13_56_34
    5. ต่อไป ทำซ้ำ โดยการค้นหาสิ่งต่อไปนี้
      haproxy, mysql, nagios
      แล้วจัดระเบียบให้สวยงามตามต้องการ
      2559-12-02-13_58_18
    6. จากนั้น ลากเส้นเชื่อมโยงความสัมพันธ์กัน Juju จะสร้างการเชื่อมต่อต่างๆให้เองอัตโนมัติ ในภาพ จะเป็นการตั้งค่าให้ haproxy ทำหน้าที่เป็น Load Balance ให้ WordPress ซึ่งจะเกิดขึ้นอีกหลายเครื่องในอนาคต และ WordPress ก็จะเชื่อมต่อกับ MySQL นอกจากนั้น ก็มี Nagios ที่จะเฝ้าระวัง WordPress และ MySQL
      เมื่อลากเส้นเชื่อมโยงเสร็จแล้ว คลิก Commit Changes ด้านขวามือล่าง
      2559-12-02-13_58_58
    7. จากนั้นคลิกปุ่ม Deploy
      2559-12-02-13_59_21
    8. หลังจากนั้น Juju จะไปเรียก Image มาติดตั้ง และสร้างความสัมพันธ์ของระบบที่เราออกแบบไว้ เมื่อเสร็จแล้วจะได้ผลดังภาพ2559-12-02-14_08_57
    9. ต่อไปคลิกที่ haproxy แล้วคลิกคำว่า Expose เพื่อบอกให้ระบบนี้สามารถเข้าถึงจากภายนอกได้
      2559-12-02-14_09_30
    10. ใน Expose ให้เลือก On ระบบจะแสดง IP Address ให้ ในที่นี้คือ 10.107.107.215 ซึ่งจะเข้าถึงโดยใช้ TCP Port 80
      2559-12-02-14_09_49
    11. ที่ Nagios ก็เช่นกัน ให้ Expose เป็น On แล้วจะเข้าถึงได้จาก IP 10.107.107.95
      จากนั้น คลิก Commit Changes
      2559-12-02-14_10_07
    12. ที่ IP Address 10.107.107.215 ก็จะพบการเริ่มต้นใช้งาน wordpress ทันที
      เริ่มจาก เลือกภาษา แล้วคลิก Continue
      2559-12-02-14_15_03
    13. จากนั้น ตั้ง Site Title, Username ที่จะเข้าใช้, Password, email address แล้วคลิก Install WordPress
      2559-12-02-14_17_39
    14. แค่นี้ก็ใช้ wordpress ได้แล้ว
      2559-12-02-14_18_17
    15. ที่ Nagios ก็จะสามารถใช้งานได้ที่ IP 10.107.107.95 (วิธีการเข้าใช้งาน มี Username/Password ที่กำหนดไว้แล้ว)
      2559-12-02-14_21_15
    16. ใน Nagios คลิก Service เพื่อเฝ้ารายละเอียดของ Service ต่างๆ
       2559-12-02-14_22_42
    17. ใน Nagios คลิกที่ Map เพื่อดูผังการเชื่อมต่อ
      2559-12-02-14_22_54
    18. เมื่อมีการใช้งานมากขึ้น ก็สามารถเพิ่มเครื่อง WordPress เพื่อให้รองรับการเชื่อมต่อจำนวนมากขึ้นได้ โดยใน Juju คลิกที่ WordPress แล้วคลิก Scale จากนั้นให้เพิ่มเครื่องไปอีก 1 เครื่อง แล้วคลิก Confirm
      จากนั้นคลิก Commit Changes
      2559-12-02-14_23_39
    19. รอสักครู่
      2559-12-02-14_24_14
    20. ก็จะพบว่า ใน Nagios ก็จะเพิ่มเครื่องใหม่ในการเฝ้าระวังให้เองอัตโนมัติด้วย
      2559-12-02-14_29_53

    จะง่ายไปไหน?

     

  • บาง plugin ก็ไม่อัปเดตขึ้นตาม WordPress

    plugin ชื่อ member access (member-access.1.1.6.zip) ทำให้ในขณะนี้ไม่สามารถเพิ่มบทความที่ให้เฉพาะสมาชิกอ่านได้เท่านั้น แต่ต้องเปิดเป็น public ได้อย่างเดียว มิฉะนั้นในหน้าแรก (Home) จะไม่เป็นหน้าว่าง ๆ ต้อง login จึงเห็นบทความทุกเรื่องได้

     

     

  • อย่าเชื่อ Tools จนเกินไป : กรณี joomscan

    ได้ยินหลายคนพูดถึงการใช้งานตรวจสอบ Website โดยเฉพาะ Joomla โดยใช้เครื่องมือที่ชื่อว่า joomscan

    ก็เลยลองติดตั้ง และ ทำการทดสอบกับ Web Server ใน VirtualBox ที่มีช่องโหว่ JCE ที่เจาะได้แน่ๆ เพื่อดูว่าเครื่องมือนี้ทำงานอย่างไร

    2559-10-12-11_14_13-desktop-running-oracle-vm-virtualbox

     

    ทำการโจมตีจาก Kali Linux ไปยังเครื่องเป้าหมาย ด้วย joomscan

    2559-10-12-11_15_33-start

     

    รายงานผลแจ้งว่า joomscan มีการ Update ล่าสุด เมื่อ Oct 22, 2012 นั่นคือเมื่อ 4 ปีที่แล้ว

    2559-10-12-11_06_50-start

    รายผลที่แจ้งช่องโหว่ ที่เจาะได้ มีดังนี้

    2559-10-12-16_46_50-clipboard

    แสดงให้เห็นว่า ด้วย Tools ตัวเดียวอาจจะไม่สามารถมั่นใจได้ว่า ระบบของเราปลอดภัยหรือไม่

    ฝากไว้พิจารณาครับ

     

     

     

  • แก้ไข wordpress post แล้ว update ไม่ได้ แอดมินต้องแก้ไขอย่างไร

    หลังจากย้าย WordPress site ไปลง ubuntu 16.04.1 ก็ได้เตรียมติดตั้งโปรแกรมต่าง ๆ แต่แล้วเมื่อลองจะแก้ไขบล็อก กลับทำไม่ได้ ขึ้นข้อความว่า

    “The sysadmin.psu.ac.th page isn’t working
    sysadmin.psu.ac.th is currently unable to handle this request.
    HTTP ERROR 500”

    เกิดอะไรขึ้นหล่ะ แล้วเราจะต้องทำอย่างไร

    ค้นหาเจอเว็บนี้ ที่บอกเราว่า ให้ลองเปิด DEBUG
    https://wordpress.org/support/topic/http-error-500-internal-server-error-whole-blog-is-down

    “So to understand where the reason of 500 error is I suggest go to wp-config.php in the root of your website and add there two lines:
    define(‘WP_DEBUG’, true);
    @ini_set(‘display_errors’, 1);
    After that you can see exactly place which linked with 500 error.
    After fixing I suggest return it how it was by default (only one line)
    define(‘WP_DEBUG’, false);”

    เมื่อใช้คำสั่งตรวจสอบ error.log ครั้งแรก ไม่เห็นอะไรเพิ่มเติม แต่พบ error 404 ของ plugin ที่ชื่อ WP Like Button ก็ลองปิด plugin นี้ดูเราจึงจะพบ error ก็เห็น error ต่าง ๆ ได้จากคำสั่งข้างล่างนี้

    tail -f /var/log/apache2/error.log

    Fatal error: Uncaught Error: Class ‘DomDocument’ not found in /var/www/wordpress/wp-content/plugins/google-sitemap-plugin/google-sitemap-plugin.php:144

    ค้นหาต่อว่าทำไมจึงขาด DomDocument ก็เจอเว็บนี้
    https://blog.namran.net/2009/03/10/php-fatal-error-class-domdocument-not-found-in-blabla/
    แนะนำว่า

    “the solution turn out to be yum install php-xml”

    ตรวจสอบดู เออนะ ไม่มี php-xml จริง ๆ ด้วย ด้วยคำสั่งนี้
    dpkg -l | grep php-xml
    dpkg -l | grep php7.0-xml

     

    ทีนี้เราก็ติดตั้ง php-xml ด้วยคำสั่ง
    sudo apt install php-xml
    จะได้
    libxslt1.1 php-xml php7.0-xml

    ทำให้สามารถใช้งานได้ปรกติแล้ว ซึ่งในกระบวนการ post และ ppdate post นั้น ได้แก้ไข post ให้แล้ว เพียงแต่ว่ามันไปทำต่อที่ google-sitemap-plugin ไม่สำเร็จจึงแสดงเป็น error ออกมา

    ขอบคุณเพื่อน ๆ ที่ช่วยกันแก้ไขเรื่องนี้ด้วยกันด้วยครับ

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

    ได้รับแจ้งจาก ThaiCERT ว่ามีเว็บไซต์ภายในโดเมนของมหาวิทยาลัย เผยแพร่ Code อันตราย ดังต่อไปนี้
    2559-08-01 14_13_24-[THAICERT.OR.TH #93507] แจ้งปัญหา พบโปรแกรมหรือซอร์สโค้ดที่ต้องสงสัยบนโดเมน psu.
    จึงเข้าทำการตรวจสอบในเครื่องเว็บเซิร์ฟเวอร์ดังกล่าว พบการวางไฟล์ Backdoor ไว้ดังที่อธิบายใน วิธีตรวจสอบเว็บไซต์ที่โดน Hack #17 แล้ว

    แต่ที่เห็นผิดปรกติ ก็เป็นใน access.log ของ Apache ซึ่งพบว่า มีการเรียกใช้ xmlrpc.php เป็นจำนวนมาก ดังภาพ

    13838385_1246527315359434_1464114410_o

    จากการตรวจสอบ พบว่า xmlrpc.php เป็นช่องทางให้สามารถเรียกใช้ Function ต่างๆผ่านทาง HTTP และเป็นช่องทางให้ App ต่างๆสามารถติดต่อกับ WordPress ได้ แต่ก็เป็นช่องทางให้เกิดการเดารหัสผ่านจำนวนมากได้เช่นกัน (Brute Force Attack) โดยสามารถทดลอง ส่ง XML ที่มีโครงสร้าตามที่ API กำหนด เช่น wp.getUsersBlogs [1][2][3] สามารถดูจำนวน Blog ที่ User คนนั้นๆเขียนขึ้นมา แต่ ต้องระบุ username/password ซึ่งตรงนี้จะเป็นส่วนที่ทำให้เกิดการ Brute Force ได้ ด้วยคำสั่งต่อไปนี้ เป็นการเดารหัสผ่านไปยัง http://localhost/blog/xmlrpc.php


    echo "<methodCall><methodName>wp.getUsersBlogs</methodName><params><param><value> <string>admin</string></value></param>  <param><value><string>password</string></value></param></params></methodCall>" | POST http://localhost/blog/xmlrpc.php

    หากสำเร็จ จะได้คำตอบมาอย่างนี้

    2559-08-01 15_14_21-Clipboard

    หากเป็น WordPress รุ่นต่ำกว่า 4.0 เปิดให้ใช้ system.multicall ซึ่งทำให้สามารถเดารหัสผ่านจำนวนมาก ใน 1 Request ทำให้ระบบตรวจจับได้ยาก ดังนั้น หากไม่จำเป็นต้องใช้ xmlrpc.php ก็สมควรปิดการใช้งานที่ระดับ Apache โดยสร้างไฟล์ /etc/apache2/conf-enabled/xmlrpc.conf มีข้อมูลเป็น


    <FileMatch "xmlrpc\.php$">
    Order Deny,Allow
    Deny from All
    </FileMatch>

    จากนั้น Restart Apache ก็สามารถปิดการทำงานได้
    Reference
    [1] http://www.hackingsec.in/2014/08/wordpress-xml-rpc-brute-force-attack.html#
    [2] http://blog.dewhurstsecurity.com/2012/12/11/introduction-to-the-wordpress-xml-rpc-api.html
    [3] https://codex.wordpress.org/XML-RPC_WordPress_API

  • อัพ PHP 5.2 to 5.3

    ไม่แน่ใจว่าจะเอามะพร้าวมาขายสวนหรือเปล่านะคับ แต่ก็เผื่อว่าบางท่านเจอปัญหาเดียวกันแล้วแก้ไม่ได้สักที (แบบไม่ต้องติดตั้งโปรแกรมใหม่หมด)

    ด้วยตัวเองก่อนหน้านี้ติดตั้ง Apache 2.2 + PHP 5.2 + phpMyAdmin on Windows 8.1 เพื่อใช้งาน Joomla 2.5 แต่เมื่อต้องการจะติดตั้ง Joomla 3 และ Moodle ระบบกลับฟ้องว่าไม่ support PHP 5.2 จะต้องติดตั้ง PHP 5.3.10 ขึ้นไป[1] ด้วยความที่ไม่อยากติดตั้งใหม่ทั้งหมด เลยค้นหาวิธีการอัพ php 5.2 เป็น php 5.3 แต่ก็ไม่ประสบผลสำเร็จ -_-‘ หลายเว็บมีความซับซ้อนและยุ่งยากสำหรับผมมาก แต่ไปเจอมาเว็บนึง[2] ซึ่งมีวิธีการที่ง่ายมากๆ เลยอยากนำมาแชร์ให้สำหรับท่านไหนที่ประสบปัญหาเหมือนอย่างผม

    ขั้นตอนการ upgrade 

    1. เข้าเว็บ http://windows.php.net/downloads/releases/archives/  แล้วคลิกดาวน์โหลด

    php-5.3.29-Win32-VC9-x86.zip

    01

    2. เมื่อดาวน์โหลดไฟล์เสร็จแล้ว ก็ทำการ unzip

    3. เปลี่ยนชื่อโฟลเดอร์ เป็น php5

    4. copy โฟลเดอร์ php5

    5. ไปที่โฟลเดอร์ php5 เวอร์ชั่นก่อนหน้านี้ที่เราเคยติดตั้งไว้ โดยให้ทำการ rename เป็น php5_old    ในที่นี้จะอยู่ที่ C:\AppServ\

    6. past โฟลเดอร์ php5 ที่ได้จากการ ข้อ 2 และ 3

    02

    7. เข้าไปที่ Control Panel > Computer Management> Service เพื่อคลิก restart service ของ Apache2.2  หรือจะคลิกขวาที่ My Computer > Manage > Service ก็ได้เหมือนกันคับ

    03

    8. ทำการทดสอบการใช้งานโดย เปิดเว็บเบราเซอร์ แล้วพิมพ์ url : localhost/phpinfo.php จะปรากฏรายละเอียดเกี่ยวกับ php 5.3.29 ที่เราได้ทำการติดตั้ง

    04

    9. เสร็จสิ้นกระบวนการ ^^

    ปล. Joomla 1.5 และ 2.5 ที่ได้เคยติดตั้งไว้ ก็ยังสามารถใช้งานได้ปกติดีคับ

    Refer :
    [1] http://www.joomla.org/technical-requirements.html
    [2] http://www.websiteadministrator.com.au/articles/install_guides/installing_php535.html

  • วิธีใช้เครื่องมือในการเขียนบล็อกใน wordpress

    how-to-add-new-post-in-wordpress

    ผมได้เขียนคำแนะนำวิธีใช้เครื่องมือในการเขียนบล็อกใน wordpress ไป วันนี้อยากนำมาเล่าสู่กันฟังอีกสักรอบ เพราะว่ามีสมาชิกใหม่ๆเข้ามาร่วมเยอะ

    เคยเขียนเรื่อง “KM เรื่อง การใช้งานสำหรับผู้เขียน wordpress” (http://sysadmin.psu.ac.th/2012/11/16/km-how-to-authoring-in-wordpress/) Posted on November 16, 2012 by วิบูลย์ วราสิทธิชัย

    อันนี้จะเป็นคำแนะนำวิธีการตั้งชื่อ URL Link เป็นภาษาอังกฤษ แม้ว่า เราจะตั้งชื่อเรื่องเป็นภาษาไทย ต้องใช้วิธีการ manual ในการแก้ไข

    ตั้งค่าการเผยแพร่บทความให้อ่านได้เฉพาะสมาชิกที่ login (http://sysadmin.psu.ac.th/2013/01/04/set-post-to-private/) Posted on January 4, 2013 by วิบูลย์ วราสิทธิชัย

    อันนี้จะเป็นคำแนะนำวิธีการซ่อนบทความที่ไม่ต้องการเปิดเผยเนื่องจากเป็นข้อมูลเฉพาะเจาะจงในม.อ. เช่น workshop PSU Passport Authentication อย่างนี้กำหนดค่าให้ login ก่อนจึงอ่านได้

    และวันนี้มีมาเล่าสู่กันฟังเพิ่มเติมครับว่า เราสามารถใส่รูปภาพ เพื่อเป็นรูปแรกสำหรับหน้าบล็อกเรื่องที่เขียนครับ โดยคลิกที่คำว่า Set featured Image อยู่ด้านขวามือข้างล่างหน้าบล็อกที่กำลังเขียน ให้อัปโหลดรูป (ต้องย่อขนาดรูปให้เล็ก ประมาณสัก กว้าง 130px สูง 130px ด้วยเครื่องมือตกแต่งรูปที่ใช้เป็น ก่อนอัปโหลดนะครับ) ขึ้นไปเก็บบน sysadmin.psu.ac.th แล้วคลิกเลือกมาใช้ ลืมบอกไปว่า Featured Image จะโผล่ในหน้าแรก (Home)

    ลองใช้งาน ติดขัดอย่างไรก็สอบถามมานะครับ

     

  • How to Install VCNT Visitorcounter on joomla 3.x

    วิธีติดตั้ง VCNT Visitorcounter on Joomla 3.x

    สวัสดีครับ ในวันนี้ใครที่ใช้ Joomla 3 ที่ยังไม่มีตัวนับสถิติผู้เข้าชม ผมมีตัวนับสถิติ ที่ทำงานง่ายไม่ซับซ้อนมาแนะนำครับ โดยมันมีชื่อว่า VCNT Visitorcounter บางคนอาจจะเคยใช้ Vinaora Visitcounter มาก่อน แต่พอมา joomla 3 นี้ไอ่ตัว Vinaora ยังไม่ได้ทำ plugin มาเผื่อ joomla 3 ใครเผลอเอาไปติดตั้งเว็บของท่านอาจไม่ปรากฏอะไรซักอย่างในหน้าแรกเลยก็เป็นได้นะครับ (อย่าลองเชื่อผม) ตัวนับสถิติที่แนะนำวันนี้ก็ได้แก่  VCNT Visitorcounter ซึ่งดาวน์โหลดได้จาก http://joomla-extensions.kubik-rubik.de/vcnt-visitorcounter#backend-info  เมื่อดาวโหลดมาแล้วก็ทำการติดตั้ง มันจะไปเพิ่มอยู่ใน Module Manager ครับ

    vcnt-counter1และหากจะเข้าไป ปรับแต่งค่าให้ไปที่  Module Manager > VCNT Visitorcounter มันก็จะมีหลาย Tab ให้เราปรับเปลี่ยน ซึ่งเราvcnt-counter2ติดตั้งเสร็จแล้วเลือก Position ให้มัน มันก็จะไปปรากฏหน้าเว็บดังรูปนี้ครับ จบข่าว..

    vcnt-counter3