Tag: lighttpd

  • การตั้งค่า IPV6 ให้กับ Lighttpd Web Server สำหรับ CentOS Linux

    “อยากตั้งค่า Lighttpd Web Server ให้เปิดใช้ IPv6 ต้องทำอย่างไร”

    • สำหรับวิธีเปิดใช้งาน IPv6 บน Lighttpd จะขอยกตัวอย่างบน CentOS 6.7 ซึ่งจริง ๆ แล้วสามารถตั้งเป็น IPv6 only ก็ได้ แต่ในที่นี่จะตั้งให้สามารถใช้ได้ทั้ง IPv4 และ IPv6
      1. เปิดไฟล์ /etc/lighttpd/lighttpd.conf
        sudo vim /etc/lighttpd/lighttpd.conf
      2. ทำการแก้ไขโดยเพิ่มในส่วนของ IPv6 Config ดังนี้ (แทนที่ [web-path] ด้วย location จริง ๆ เช่น “/var/www”)
        $SERVER["socket"] == "[::]:80" {
         accesslog.filename = "/var/log/lighttpd/ipv6.access.log"
         server.document-root = [web-path]
        }

        *หมายเหตุ : server.use-ipv6 = “disable” ไม่ต้องแก้ไขนะครับ เพราะ ด้วยชื่อ domain เดียวกันจะไม่สามารถเปิด port 80 สอง port ได้พร้อมกัน ทำได้แค่เพิ่ม SERVER Socket config เข้าไปอย่างที่เห็นข้างบนครับ (จะใช้ก็ตอนที่จะเปิดเฉพาะ IPv6 only ครับ)

      3. สั่ง Restart Web Service เป็นอันเรียบร้อยครับ
        sudo service lighttpd restart
      4. สามารถตรวจสอบผ่านคำสั่ง netstat ได้ดังนี้ครับ
        netstat -na | grep ":80"
    • การทดสอบในกรณียังไม่ได้จด DNS6 เราไม่สามารถพิมพ์ URL เป็น IPv6 ตรง ๆ บน Browser ได้ ถ้าจดแล้วสามารถทดสอบผ่าน http://ipv6-test.com/validate.php ดูได้ครับ
  • รวมวิธีการเปิดใช้งาน IPv6

    “บทความนี้เป็นบทความเกี่ยวกับวิธีการเปิดใช้งาน  IPv6 สำหรับบริการที่เป็น Web Server รวมถึงวิธีการตรวจสอบ Client และ Server ว่าพร้อมหรือยังที่จะใช้งาน  IPv6”


    Blog 1 : การตรวจสอบสถานะการใช้งาน IPv6 สำหรับ Client และ Server


    Blog 2การตั้งค่า Interface สำหรับ Windows Server


    Blog 3 : การตั้งค่า Interface สำหรับ Ubuntu Linux


    Blog 4 : การตั้งค่า Interface สำหรับ CentOS/Redhat Linux


    Blog 5 : การตั้งค่า Apache Web Server สำหรับ Ubuntu Linux


    Blog 6 : การตั้งค่า Lighttpd Web Server สำหรับ CentOS Linux


    Blog 7 : การตั้งค่า Nginx Web Server สำหรับ Ubuntu Linux


  • วิธีการปิดช่องโหว่ Logjam,Freak,Poodle,Beast สำหรับ Lighttpd Web Server (Ubuntu 14.04 LTS)

    “จะทำอย่างไรทีดีกับช่องโหว่ SSL เยอะซะเหลือเกิน ปิดใช้แต่ TLS ก็ได้นิ นั่นสินะ”

    • อย่างที่ข้างบนกล่าวไว้ครับวิธีการปิดช่องโหว่นี้ทำง่าย ๆ แค่ปิด SSLv2 SSLv3 และปิด Cipher Suite ที่ไม่ปลอดภัยเพิ่มเติม
    • ก่อนที่จะทำการปิดช่องโหว่ลองทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server ก็จะได้ดังรูปตัวอย่างนี้ (จะเห็นได้ว่ามีช่องโหว่หลายตัว)

    2015-11-11_134128

    • วิธีการปิด SSL ทำได้โดยแก้ไขไฟล์ /etc/lighttpd/conf-enabled/10-ssl.conf ดังนี้
      sudo vim /etc/lighttpd/conf-enabled/10-ssl.conf
    • ทำการแก้ไขไฟล์โดยทำการเพิ่มท้าย ๆ ไฟล์ ก่อนปิดวงเล็บดังนี้ (อย่าลืม comment cipher-list เดิมทิ้งก่อนนะครับ)
      ssl.use-compression = "disable"
      ssl.use-sslv2 = "disable"
      ssl.use-sslv3 = "disable"
      ssl.cipher-list = "EECDH+AESGCM:EDH+AESGCM:AES128+EECDH:AES128+EDH"
    • จากนั้นทำการ Restart Lighttpd Server ตามปกติ
      sudo /etc/init.d/lighttpd restart
    • ทำการทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server อีกครั้งก็ได้ดังรูป

    2015-11-11_140552

    • เป็นอันว่าเรียบร้อยครับ (เรื่อง Grade ไม่ต้อง Serious นะครับ ผมถือว่าเขียวหมดก็ถือว่าปลอดภัยแล้วครับ
    • สามารถอ่านวิธีแก้ไขช่องโหว่เพิ่มเติมได้ที่นี่ครับ
      http://sysadmin.psu.ac.th/2015/11/10/serversecuritypatch
  • การแก้ไข Certificate สำหรับ Lighttpd Web Server (Ubuntu 14.04 LTS)

    “อยากแก้ Certificate บน Linux Lighttpd Server ทำอย่างไร”

      • ในกรณีที่มีไฟล์ Certificate อยู่แล้วให้ทำการวางไฟล์ Certificate ใหม่ทับแล้วสั่ง Restart Apache Server เป็นอันเสร็จครับ (สำหรับการเปลี่ยน Certificate มีแค่ขั้นตอนนี้จบเลยครับ)
      • ในกรณีที่ยังไม่ได้ติดตั้ง https รวมถึง Certificate ให้ทำการติดตั้ง https ก่อนดังนี้
        sudo lighttpd-enable-mod ssl
      • จากนั้นให้สั่ง Restart Apache ตามปกติ
        sudo service lighttpd restart
      • ทำการวางไฟล์ Certificate ไว้ในตำแหน่งที่ Lighttpd สามารถเข้าถึงได้ ในกรณีที่ที่นี้ผมจะวางไว้ที่ /etc/cer
      • ในกรณีที่ได้มาเป็นไฟล์ .cer และไฟล์ .key มาต้องการทำไฟล์ .pem สามารถพิมพ์คำสั่งดังนี้
        sudo cat [file_cer_name].key [file_cer_name].crt > [file_cer_name].pem
      • ทำการแก้ไขไฟล์ 10-ssl.conf ดังนี้
        sudo vim /etc/lighttpd/conf-enabled/10-ssl.conf
      • โดยส่วนที่ทำการเปลี่ยนแปลงจะทำการเปลี่ยน 1 บรรทัดดังนี้
        ssl.pemfile = "/etc/cer/[file_cer_name].pem"
      • จากนั้นให้สั่ง Restart Apache ตามปกติ
        sudo service lighttpd restart

    เป็นอันเสร็จครับ ง่ายมากจริง ๆ ครับ

  • การทดสอบประสิทธิภาพ Web Server ประเภท Static Page : Apache2 vs Lighttpd บนเครื่อง Ubuntu 14.04 LTS

    เครื่องมือในการทดสอบ
    Web Server OS : Ubuntu 14.04 LTS
    Client OS : Windows 8.1
    Software : Apache Jmeter 2.11

    Environment :
    Web Server
    Ubuntu Server (Oracle VM VirtualBox)
    Intel Haswell 1.6GHz (2.30GHz) 4 core RAM 512G
    Client
    Windows 8.1 (Physical Notebook)
    Intel Haswell 1.6GHz (2.30GHz) Intel Haswell 4 core RAM 8G
    – รันอยู่บนเครื่องเดียวกัน
    – ใช้ค่า Default ไม่มีการ Tuning เพิ่มเติม

    วิธีการทดสอบ

    1. ทำการตั้งค่า Apache ให้อยู่คนละ Port กับ Lighttpd2014-05-23_063514

    2. ทำการสร้าง Static Page โดยมีตำแหน่ง และ HTML Code (index.html) ดังนี้

    Apache : /var/www/html/index.html
    สำหรับ Apache ให้ rename ไฟล์เดิมก่อนเนื่องจากมีไฟล์อยู่แล้วด้วยคำสั่งดังนี้

    sudo mv /var/www/html/index.html /var/www/html/index.html_bak
    

    Lighttpd : /var/www/index.html

    <!DOCTYPE HTML PUBLIC -//W3C//DTD HTML 4.0 Transitional//EN">
    <html>
    <head>
    <title>Webserver test</title>
    </head>
    <body>
    This is a webserver test page.
    </body>
    </html>

    3. เปิดโปรแกรม Jmeter ทำการ Add Thread Group, HTTP Request, View Results Tree และ Graph Results
    2014-05-23_063658

    4. ทำการทดสอบโดยชี้ไปที่ Web Site ของ Web Server ที่ต้องการ โดยมีตัวอย่างดังรูป
    (จะสังเกตุว่ามีการตั้งค่า Timeout = 1500 ms เพื่อป้องกันโปรแกรมค้าง เนื่องจาก Web Server ไม่ยอมตอบ)
    2014-05-23_105637

    *หมายเหตุ ระหว่างรัน Test สามารถตรวจสอบการทำงานของเครื่อง Web Server โดยติดตั้งโปรแกรมชื่อ htop ดังนี้

    sudo apt-get install -y htop
    

    พิมพ์คำสั่ง htop จะปรากฎหน้าจอดังรูป2014-05-23_065732

    การตั้งค่าทดสอบ

    Number of Threads (users) : 500,1000,2000,2500,3000
    Ramp-Up Period (in seconds) : 1
    Loop Count : 1

    ตัวอย่างการทดสอบ

    จำนวน Users ที่เปิด Page ไม่สำเร็จ

    Number of Threads (users) 500 1000 2000 2500 3000
    Apache2 0 28 424 2232 Jmeter Hang
    Lighttpd 0 0 3 1418 Jmeter Hang

    ซึ่งการทดสอบแบบไม่มีการ Tuning อาจจะไม่ Fair สำหรับแต่ละ Web Server (แม้ผลจะออกมาชัดว่า Lighttpd เหนือกว่า) เพราะยังไม่ได้มีการดึงประสิทธิภาพหรือตั้งค่า Limit Connection ให้รองรับได้สูงสุด และยังมีในส่วนของ Cache หลาย ๆ แบบที่จะช่วยให้ไม่ต้องประมวลผล Page เดิม ๆ ซ้ำบ่อย ๆ แต่ถึงกระนั้นวิธีนี้เป็นวิธีการหนึ่งที่ใช้ในการทดสอบก่อนจะมีการใช้งานจริง เพื่อทำให้เราเตรียมการได้ทันท่วงที เช่นทดสอบแล้วมีบ้าง SQL ที่ใช้เวลานานกว่าปกติ หรือ database connection limit

    สำหรับ Jmeter นั้นสามารถทำอะไรได้อีกมากมาย สามารถเขียน Script ในลักษณะของ Batch Job เพื่อดู Flow การทำงานของทั้ง Web Database และอื่น ๆ ถ้าใครอยากศึกษาเพิ่มเติมสามารถหาอ่านได้จาก Google ทั่ว ๆ ไปครับ

    Reference :
    [1] http://www.cyberciti.biz/tips/howto-performance-benchmarks-a-web-server.html

  • การติดตั้ง Lighttpd + PHP5 บนเครื่อง Ubuntu 14.04 LTS

    มาเริ่มขั้นตอนการติดตั้งกันเลยครับ

    วิธีการติดตั้ง Lighttpd Web Server

    1. ทำการติดตั้ง Lighttpd ผ่าน apt-get ดังนี้ครับ

    # sudo apt-get install -y lighttpd

    2. ให้ทำการ Restart Lighttpd ด้วยคำสั่ง

    # sudo service lighttpd restart
    

    3. ทำการทดสอบเข้าใช้งาน HTTP โดยพิมพ์คำสั่ง http://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    http://192.168.99.1

    4. ในกรณีที่ต้องการติดตั้ง SSL ให้พิมพ์คำสั่งเพื่อเปิด site ดังนี้

    sudo lighttpd-enable-mod ssl
    

    5. หลังจากนั้นทำการ สร้าง key จาก default cer (ถ้ามี key จริงสามารถนำมาแทนได้ในภายหลัง)

    ในกรณีที่ไม่เคยติดตั้ง apache ให้ติดตั้งโปรแกรม ssl-cert ก่อนดังนี้

    sudo apt-get install -y ssl-cert
    

    ทำการรวม Key โดยสร้างเป็นไฟล์ใหม่ เก็บไว้ที่ /etc/lighttpd/snakeoil.pem

    sudo sh -c 'cat /etc/ssl/certs/ssl-cert-snakeoil.pem /etc/ssl/private/ssl-cert-snakeoil.key > /etc/lighttpd/snakeoil.pem'
    

    6. จากนั้นทำการเข้าไปแก้ไฟล์ระบุ เพื่อระบุตำแหน่ง cer ให้ถูกต้อง

    sudo nano /etc/lighttpd/conf-enabled/10-ssl.conf
    

    7. ทำการแก้ไขข้อความในไฟล์ดังนี้

    ssl.pemfile = "/etc/lighttpd/snakeoil.pem"
    

    8. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ

    # sudo service lighttpd restart
    

    9. ทำการทดสอบเข้าใช้งาน HTTPS โดยพิมพ์คำสั่ง https://หมายเลขไอพีของเซิร์ฟเวอร์ เช่น

    https://192.168.99.1
    

    *หมายเหตุ วิธีการดู IP ให้พิมพ์ดังนี้

    ifconfig

    ให้วิธีการดูให้สังเกตุตามรูปตัวอย่าง

    2014-05-22_102420

    – eth0 เป็น ip จาก nat interface
    – eth1 เป็น ip จาก bridge interface
    – lo เป็น ip จาก loopback interface

    วิธีการเปลี่ยน Lighttpd Server Default Port

    *ยกตัวอย่างการเปลี่ยนจาก port 80->8081

    – เปิดไฟล์ /etc/lighttpd/lighttpd.conf

    sudo nano /etc/lighttpd/lighttpd.conf
    

    – แก้ไขข้อความในไฟล์ดังนี้ (วิธีการ save ให้กด Ctrl-X แล้วกด y แล้ว enter)

    server.port = 8081

    วิธีการติดตั้ง PHP5 เพื่อใช้งานกับ Lighttpd Web Server
    1. ทำการติดตั้ง PHP5 ดังนี้

    sudo apt-get install php5-cgi
    

    2. ทำการเปิดใช้งาน module เพื่อให้สามารถใช้งาน php บน lighttpd ได้

    sudo lighty-enable-mod fastcgi
    sudo lighty-enable-mod fastcgi-php
    

    3. จากนั้นให้สั่ง Restart Lighttpd  ตามปกติ

    # sudo service lighttpd restart

    4. วิธีการสร้างไฟล์ตรวจสอบสามารถทำได้ดังนี้

    – เปิดไฟล์ /var/www/info.php

    sudo sh -c 'echo "<?php echo phpinfo(); ?>" > /var/www/info.php'
    

    – จากนั้นทำการเปิด web http://หมายเลขไอพีของเซิร์ฟเวอร์/info.php ตัวอย่าง

    http://192.168.99.1/info.php