Author: jatuporn.ch

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

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

    • สำหรับวิธีเปิดใช้งาน IPv6 บน Nginx จะขอยกตัวอย่างบน Ubuntu ซึ่งจริง ๆ แล้วสามารถตั้งเป็น IPv6 only ก็ได้ แต่ในที่นี่จะตั้งให้สามารถใช้ได้ทั้ง IPv4 และ IPv6
      1. เปิดไฟล์ /etc/nginx/site-available/[site-file]
        sudo vim /etc/nginx/site-available/psu-v6
      2. ทำการแก้ไขโดยเพิ่มในส่วนของ IPv6 Config ดังนี้ (เพิ่มเฉพาะตัวสีแดงนะครับ)
        server {
          listen [::]:80;  
          ...
        }
      3. สั่ง Restart Web Service เป็นอันเรียบร้อยครับ
        sudo /etc/init.d/nginx restart
      4. สามารถตรวจสอบผ่านคำสั่ง netstat ได้ดังนี้ครับ
        netstat -na | grep ":80"
    • การทดสอบในกรณียังไม่ได้จด DNS6 เราไม่สามารถพิมพ์ URL เป็น IPv6 ตรง ๆ บน Browser ได้ ถ้าจดแล้วสามารถทดสอบผ่าน http://ipv6-test.com/validate.php ดูได้ครับ
  • การตั้งค่า 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 ดูได้ครับ
  • การตั้งค่า Interface IPv6 สำหรับเครื่อง CentOS/Redhat Server

    “อยากให้ CentOS/Redhat Server เปิดใช้ IPv6 ต้องทำอย่างไร”

    • สำหรับวิธีเปิดใช้งาน IPv6 บน CentOS/Redhat จะขอยกตัวอย่าง CentOS 6.7 โดยทำการตั้งค่า Interface ในส่วนของ IPv6 ดังนี้
      1. เปิดไฟล์ /etc/sysconfig/network-scripts/[interface-setting-file]
        sudo vim /etc/sysconfig/network-scripts/ifcfg-eth0
      2. ทำการแก้ไขโดยเพิ่มในส่วนของ IPv6 Config ดังนี้ (xxx คือ censor นะครับ)
        IPV6INIT="yes"
        IPV6ADDR=2001:xxxxxxx:34
        IPV6_DEFAULTGW=2001:xxxxxxx::1
        
      3. สั่ง Restart เครื่องเป็นอันเรียบร้อยครับ (ในกรณีที่เป็น CentOS 6 สั่ง sudo service network restart ก็ได้ครับ)
        sudo reboot
      4. สามารถตรวจสอบผ่านคำสั่ง ifconfig ได้ดังนี้ครับ
        ifconfig
    • อย่าลืมตรวจสอบ Firewall ด้วยนะครับ แต่โดยปกติ CentOS จะมี Firewall ตั้งแต่เริ่มติดตั้ง ในกรณีที่ไม่ได้ Disable Firewall ให้เข้าไปแก้ได้ที่
      sudo /etc/sysconfig/ip6tables
    • ในกรณีที่ใช้ Shorewall ลองศึกษาเพิ่มเติมดูครับว่าต้องแก้ไขอย่างไร
  • การตั้งค่า Interface IPv6 สำหรับเครื่อง Ubuntu Server

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

    • สำหรับวิธีเปิดใช้งาน IPv6 บน Ubuntu จะขอยกตัวอย่าง Ubuntu 14.04 โดยทำการตั้งค่า Interface ในส่วนของ IPv6 ดังนี้
      1. เปิดไฟล์ /etc/network/interfaces
        sudo vim /etc/network/interfaces
      2. ทำการแก้ไขโดยเพิ่มในส่วนของ IPv6 Config ดังนี้ (xxx คือ censor นะครับ)
        iface eth0 inet6 static
                pre-up modprobe ipv6
                address 2001:xxxxxxxx:101
                netmask 64
                gateway 2001:xxxxxxxx::1
        
      3. สั่ง Restart เครื่องเป็นอันเรียบร้อยครับ
        sudo reboot
      4. สามารถตรวจสอบผ่านคำสั่ง ifconfig ได้ดังนี้ครับ
        ifconfig
    • อย่าลืมตรวจสอบ Firewall ด้วยนะครับ แต่โดยปกติ Ubuntu จะไม่มี Firewall ตั้งแต่เริ่มติดตั้ง อาจจะต้องระวังในกรณีที่ Gateway ของหน่วยงานยังไม่ได้ตั้งค่า IPv6 Firewall อาจโดน ssh จากข้างนอกได้ครับ (ลองศึกษาเพิ่มเติมเกี่ยวกับ Shorewall IPv6 หรือ ip6tables ดูครับ) ซึ่งจะมีผลกับเครื่องที่จดชื่อแล้วซะมากกว่า เพราะจะให้ Scan หา IPv6 เยอะ ๆ เพื่อจะเข้าผ่าน IPv6 ตรง ๆ น่าจะลำบากอยู่
  • การตั้งค่า Interface IPv6 สำหรับเครื่อง Windows Server

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

    • สำหรับวิธีเปิดใช้งาน IPv6 บน Windows เป็นเรื่องง่ายมาก แค่ตั้งค่า Interface ในส่วนของ IPv6 ดังตัวอย่าง

    2015-12-08_152152 2015-12-08_152218 2015-12-08_152336

    • เท่านี้ก็เรียบร้อยครับ ในส่วนของ DNS ถ้าไม่ทราบสามารถลอง nslookup จาก dns (ที่ได้จดชื่อ IPv6 ไว้แล้ว) ดังตัวอย่างในรูปครับ (ขออภัย censor เยอะหน่อยครับ)

    2015-12-08_153053

    • สำหรับ Web Server อย่าง IIS ใน Windows ไม่ต้องแก้ไขอะไรครับ แต่ถ้าเป็น Apache อันนี้ยังไม่ได้ลองครับ
    • อย่าลืมนะครับ Firewall สำหรับ IPv6 จะแยกกับ IPv4 ในกรณีที่ตั้งระบุการเข้าถึงจาก IP ต้นทาง ปลายทางต้องทำการเพิ่มเข้าไปใน Firewall ด้วยครับ
  • รวมวิธีการเปิดใช้งาน 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


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

    “เราจะตรวจสอบได้อย่างไรว่าเครื่องสามารถใช้งาน IPv6 ได้แล้ว และเราจะรู้ได้อย่างไรว่า Server ก็ให้บริการ IPv6”

    วิธีการตรวจสอบ Client

    • สำหรับวิธีตรวจสอบ Client ให้เข้า Web Site http://ipv6-test.com จากนั้นสังเกตุดังรูป

    2015-12-08_110837

    Native IPv6 หมายความว่าสามารถสื่อสารจากต้นทาง กลางทาง ปลายทางด้วย IPv6 ทั้งหมด โดยไม่ต้องผ่าน IPv4 เลย (ต้นทาง ปลายทางไม่จำเป็นต้องมี IPv4 เลยก็ได้)

    2015-12-08_110901

    Fallback คือการที่ Web Browser ที่ใช้อยู่สามารถกลับมาใช้ IPv4 ในการเชื่อมต่อได้ในกรณีที่ Web ปลายทางไม่มี IPv6

    2015-12-08_110920

    ค่าดังกล่าวเป็นการบอกว่าสามารถเชื่อมต่อ DNS ด้วย IPv4 หรือ IPv6 และสามารถ resolve  IPv4 หรือ IPv6 ได้

    วิธีการตรวจสอบ Server

    2015-12-08_133827

    ยกตัวอย่างในกรณีที่ยังไม่จด DNS จะขึ้นดังรูปเลย แต่ถ้าจดแล้วแต่ยังไม่ได้ออน Service IPv6 บน Web Server ก็จะขึ้น x ในส่วนที่ยังไม่สามารถเข้าถึงได้

    2015-12-08_133642

    ในกรณีที่ผ่านทุกอย่างก็จะปรากฎดังรูป
    • จะเห็นว่าการตรวจสอบไม่ยาก โดยเฉพาะเดี๋ยวนี้บาง Web จะมีตัวช่วยบอกว่าผู้ใช้กำลังเชื่อมต่อด้วยอะไรเข้ามาดังตัวอย่าง

    2015-12-08_135730

  • วิธีการปิดช่องโหว่ 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
  • วิธีการปิดช่องโหว่ Logjam,Freak,Poodle,Beast สำหรับ Apache Web Server (Ubuntu 14.04 LTS)

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

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

    2015-11-11_131008

    • วิธีการปิด SSL ทำได้โดยแก้ไขไฟล์  /etc/apache2/mods-enabled/ssl.conf ดังนี้
      sudo vim /etc/apache2/mods-enabled/ssl.conf
    • ทำการแก้ไขไฟล์ดังนี้ (จะ Comment SSLCipherSuite กับ SSLProtocol แล้วเพิ่มตรงท้าย ๆ ก่อน tag ปิด </IfModule> ก็ได้ครับ)
      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
    • จากนั้นทำการ Restart Apache Server ตามปกติ
      sudo /etc/init.d/apache2 restart
    • ทำการทดสอบ test ความปลอดภัย ที่ website https://ssltest.psu.ac.th/server อีกครั้งก็ได้ดังรูป

    2015-11-11_132628

    • เป็นอันว่าเรียบร้อยครับ
    • ถ้าใครต้องการให้ได้คะแนนถึง A+ ให้ทำเพิ่มตามลิงก์ของคุณเกรียงไกรดังนี้ครับ (อ่านเฉพาะส่วนของการปรับ Header นะครับ)
      https://sysadmin.psu.ac.th/2014/12/18/เปลี่ยน-certificate