Tag: dns

  • DNS BIND Severity HIGH 7.5 Update

    แจ้ง SysAdmin ที่มีการดูแล DNS Server ที่ใช้ BIND ให้ปรับปรุงด่วนครับ
    Ubuntu 20.04 มี bind9 (1:9.16.1-0ubuntu2.12) ที่แก้ไขช่องโหว่ 1of4 แล้วตั้งแต่ 25Jan2023
    Ubuntu 22.04 มี bind9 (1:9.18.1-1ubuntu1.3) ที่แก้ไขช่องโหว่ 3of4 แล้วตั้งแต่ 25Jan2023
    ท่านใดเพียงใช้ Ubuntu Update ล่าสุดตาม OS แล้วได้ bind9 รุ่นใหม่ โดยไม่ต้องติดตั้ง BIND ใหม่ด้วยตนเอง?
    ผมยังไม่ทราบ ฝากช่วยให้ข้อมูลด้วย ขอบคุณมากครับ

    ขอบคุณคุณ เกรียงไกร หนูทองคำ ที่ให้ข้อมูล เกี่ยวกับการ Update ของ Ubuntu 20.04 ที่ยังมี Security Update ขยายต่อให้จนถึงต้นปี 2030
    https://ubuntu.com/about/release-cycle
    ด้วยบางระบบปรับไปใช้ 22.04 แล้วบริการเก่าขัดข้อง ทำให้ต้องอยู่กับ 20.04 แต่ก็ขอให้ Update สม่ำเสมอ

    2023-01-30 ISC แนะนำให้ปรับใช้ BIND 9.16.37, 9.18.11, 9.19.9, and 9.16.37-S1 แก้ไข HIGH 7.5 จำนวน 4 ช่องโหว่

    https://thehackernews.com/2023/01/isc-releases-security-patches-for-new.html
    https://webboard-nsoc.ncsa.or.th/topic/590/isc-ออกแพตช-ความปลอดภ-ยสำหร-บช-องโหว-ซอฟต-แวร-bind-dns-ใหม?_=1675133273660&lang=en-US
    https://www.ubuntuupdates.org/package/core/focal/main/updates/bind9
    https://www.ubuntuupdates.org/package/core/jammy/main/updates/bind9

  • วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt

    จาก มาใช้งาน let’s encrypt กันเถอะ ของอาจารย์ฉัตรชัย ผมขอขยายความต่อ เอาแบบว่า Copy-Paste กันเลย

    โดยในที่นี้ …

    • OS เป็น Ubuntu 18.04
    • Web Server เป็น Apache
    • ที่ Firewall เปิดให้เข้าถึง TCP 80 / 443 จาก Internet ได้ — มันจำเป็นสำหรับการ Verification ของ Certbot ครับ *** ในเบื้องต้นนะ 🙂 ***

    Let’s Encrypt คืออะไร อ่าน …
    https://letsencrypt.org/getting-started/

    เริ่มต้น ต้องติดตั้ง Certbot ก่อน อ่าน …
    https://certbot.eff.org/

    ดูต้นฉบับการติดตั้งของ Ubuntu 18.04 และใช้ Apache ได้จาก
    https://certbot.eff.org/lets-encrypt/ubuntubionic-apache

    ติดตั้ง Certbot ก่อน

    ใช้คำสั่งต่อไปนี้ จาก User ที่สามารถ sudo ได้

    sudo apt-get update
    sudo apt-get install software-properties-common
    sudo add-apt-repository ppa:certbot/certbot
    sudo apt-get update
    sudo apt-get install python-certbot-apache 

    แบบ Auto

    จากนั้นใช้คำสั่งต่อไปนี้ เพื่อให้ certbot ทำการติดตั้ง Certificate และแก้ไขไฟล์ (ในที่นี้ใช้ Apache) Configuration ให้เลย

    sudo certbot --apache

    แบบแก้ไขเอง

    หรือถ้าจะทำเอง โดยต้องการเอาเฉพาะ Certificate มา แล้วทำการแก้ไขไฟล์ Apache Configuration เองก็ได้

    sudo certbot --apache certonly 

    ระบบจะถาม

    • ยอมรับเงื่อนไขไม๊ –> แน่นอน (A) Accept
    • email address ให้ใส่ไปตามจริง
    • ต้องการให้แสดง email address เปิดเผยหรือไม่ –> ผมตอบ No นะ
    • และ บอกว่า Domain Name ของเราคืออะไร ให้ใส่ FQDN ไป เช่น kx1.in.psu.ac.th เป็นต้น

    จากนั้น Certbot จะ Callback ไป ให้มีการ Verification จาก Internet ว่าสามารถเข้าถึงได้จริงหรือไม่ (ตรงนี้ ใน PSU ต้องแจ้งทาง Network Admin เพื่อเปิด Port ที่ Firewall ให้เข้าถึง TCP 80 และ 443 ให้สำเร็จก่อน)

    เมื่อ Verification สำเร็จ ก็จะได้ไฟล์ Certificate และ Private Key มา จะอยู่ที่ (path แต่ละเครื่องจะแตกต่างกันตรงที่ Domain Name ที่กำหนดข้างต้น) ตามลำดับ

    /etc/letsencrypt/live/kx1.in.psu.ac.th/fullchain.pem
    /etc/letsencrypt/live/kx1.in.psu.ac.th/privkey.pem

    แก้ไขไฟล์

    /etc/apache2/sites-available/default-ssl.conf

    ให้มีค่าต่อไปนี้

    SSLCertificateFile  
       /etc/letsencrypt/live/kx1.in.psu.ac.th/fullchain.pem
    SSLCertificateKeyFile 
        /etc/letsencrypt/live/kx1.in.psu.ac.th/privkey.pem

    จากนั้นใช้คำสั่งนี้ เพื่อเปิดใช้งาน https

    sudo a2enmod ssl

    ใช้คำสั่งนี้ เพื่อใช้งาน default-ssl

    sudo a2ensite default-ssl

    และทำการ Restart apache ด้วยคำสั่งนี้

    sudo systemctl reload apache2

    ทดสอบใช้งาน HTTPS

    ใช้งานได้

    NOTE

    • จริง ๆ แล้ว ในองค์กร สามารถทำเครื่อง ๆ หนึ่งขึ้นมา เพื่อติดตั้ง certbot แล้วขอ Certificate มา ของ Domain ต่าง ๆ แล้วค่อย “ย้าย” certificate และ key file ไปเครื่องที่จะใช้งานจริง แล้ว ชี้ Domain Name ใหม่ไปยังเครื่องนั้นก็ได้ แต่เมื่อครบ 90 วัน ต้อง Renew ใหม่ (ทดลองทำกับ Google Compute Engine โดยสร้าง Certificate โดยชี้ Domain ไปยัง IP จริง ของ Google พอเรียบร้อยแล้ว ก็แล้วย้ายไฟล์ ย้าย Domain Name มาที่ IP ภายใน ใช้งานได้ เหมือนกัน) — วิธีนี้ลักไก่เอาได้ แต่ก็จะยุ่งยากหน่อย และต้องระวัง 90 วันที่จะต้อง Renew
    • แต่จะให้ถูกต้อง ก็ควรใช้งานกับเครื่องที่เปิด Firewall ให้เข้าถึง TCP 80 / 443 ได้ เพื่อติดตั้ง certbot จะดีกว่า
    • สามารถขอ Wildcard ได้ เช่น จะขอ *.kx1.in.psu.ac.th ก็ได้ แต่ต้องมีความรู้ DNS กว่านี้หน่อย เดี๋ยวค่อยมาเล่าให้ฟังครับ
    • [UPDATE] กรณีเป็น Web Hosting กล่าวคือ ให้บริการหลาย ๆ Virtual Host เช่น เครื่องหลักใช้ชื่อว่า kx1.in.psu.ac.th ถ้าต้องการให้ www.something.psu.ac.th ชี้มาที่เครื่องนี้ด้วย ก็ทำ www CNAME kx1.in.psu.ac.th.  (ที่ zone something.psu.ac.th) มาก็ได้ แล้วค่อยใช้ certbot ที่เครื่อง kx1.in.psu.ac.th นี้ สร้าง Certificate ให้ก็ได้ครับ

    หวังว่าจะเป็นประโยชน์ครับ

  • dnsqsum script

    DNS Query Summary Script
    สำหรับ Summary DNS Query Log เพื่อดูว่ามีการ query มาจาก host ใหน และ query domain ใหนบ้าง โดยแสดงเฉพาะ Top 10
    — quick & dirty version —

    #!/bin/bash

    QLOG=”/var/log/named/query.log”

    [ ! -f “$QLOG” ] && echo “Log file ‘$QLOG’ doesn’t exist?” && exit

    DCOL=6

    V=`head -1 $QLOG | cut -f5 -d’ ‘`
    if [ “$V” = “view” ]; then
    DCOL=8
    fi

    echo “===== Source of Query =====”
    cat $QLOG | cut -f4 -d’ ‘ | cut -f1 -d’#’ | sort | uniq -c | sort -rn | head
    echo “=———————-=”

    echo “===== Domain to Query =====”
    cat $QLOG | cut -f$DCOL -d’ ‘ | sort | uniq -c | sort -rn | head
    echo “=———————-=”