Category: Security

  • 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

  • Virus Total เครื่องมือตรวจสอบ Shorten URL (ช่วยย่อ URL, ย่อ Weblink, ลิ้งค์ย่อ)

    ในโลก Web 2.0 มีการสร้างเครื่องมือเพื่ออำนวยความสะดวกให้ผู้ใช้มากมาย และหนึ่งในนั้นคือการแชร์ URL ข้อมูลต่างๆ ซึ่งปัจจุบัน URL จะมีความยาวมาก เช่นจากการสร้าง Link แชร์เอกสาร แบบฟอร์ม ที่เก็บไฟล์ต่างๆ
    ซึ่งใน ม.อ. คุณ อัษฎายุธ ได้ช่วยอำนวยความสะดวกให้ชุมชนผู้ใช้ไอที ม.อ. ได้ใช้ Shorten URL กันตามข่าว แทนที่จะไปใช้บริการจากนอก ม.อ. เช่น bit.ly tiny.cc

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

    วิธีลดความเสี่ยง ในวันนี้ จึงขอเสนอว่าให้นำ Shorten URL นั้นไปแปะให้ Virus Total ช่วยตรวจสอบความปลอดภัยเบื้องต้นให้ก่อน

    https://www.virustotal.com/gui/home/url

    และฝากเพิ่มเติมสำหรับ สายแชร์ ที่สร้าง URL ลิ้งค์ ที่นำไปสู่เอกสารภายในของกลุ่ม ขององค์กร ของส่วนงาน หรือกลุ่มทำงาน ให้ตรวจสอบการตั้งค่า Share ของสิ่งนั้นให้ดี “ให้เป็นเฉพาะกลุ่ม” เพราะหากเปิดเป็นสาธารณะแล้ว หากผู้รับได้นำ Link ไปใช้ Virus Total ตรวจสอบ ก็อาจจะเป็นการเรียกทัวร์มาลง มาเยี่ยมเยียน ไฟล์ข้อมูลที่เปิดไว้เป็นสาธารณะแบบผิดๆ ไว้โดยไม่ได้ตั้งใจ เพราะ URL ต่างๆ ที่ส่งไปตรวจสอบ Virus Total ก็จะถูกเผยแพร่ไปยังระบบตรวจสอบกลางของ Virus Total ที่ใช้ร่วมกันระหว่างบริษัทที่บริการเครื่องมือความปลอดภัยต่างๆ จำนวนมาก เพื่อวัตถุประสงค์ในการใช้เป็นฐานข้อมูลในการตรวจสอบความปลอดภัยร่วมกัน

    ก่อนจะกดที่ ลิ้งค์ย่อ Shorten URL อย่าลืมใช้ Virus Total ตรวจสอบกันก่อนนะครับ

    ขอขอบพระคุณ คุณชยา ลิมจิตติ ที่ได้แนะนำเครื่องมือ Virus Total ให้ได้รู้จักกันครับ

  • วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt แบบ wildcard สำหรับ Intranet ที่ไม่สามารถเข้าถึงได้จาก Internet

    ความเดิมตอนที่แล้ว

    ต่อจาก วิธีติดตั้ง HTTPS ด้วย Certificate ของ Let’s Encrypt ซึ่ง เครื่องที่จะขอใช้ Certificate นั้น ต้องสามารถ “เข้าถึงได้” จาก Internet เพราะ จะต้องสร้าง File ไปวางในตำแหน่งที่ Let’s Encrypt CA สามารถเข้ามาตรวจสอบได้ว่าเป็น ผู้ที่มีสิทธิ์ในการจัดการ Domain Name นั้นจริง

    ปัญหาคือ

    • ในองค์กร ถ้าจะให้มีเซิร์ฟเวอร์ ที่สามารถเข้าถึงได้ จาก Internet ต้องเปิด Firewall ขององค์กร ซึ่ง ซับซ้อน และ มีความเสี่ยง
    • แล้ว ถ้ามีเครื่องภายใต้โดเมนเดียวกันอีกหลายเครื่อง ต้องทำทุกเครื่อง ซึ่งไม่สะดวกเลย

    ต้องเข้าใจก่อน

    Let’s encrypt มีวิธีการตรวจสอบความเป็นเจ้าของ Domain Name หรือที่เรียกว่า “Challenge” หลายวิธี ได้แก่

    1. HTTP-01 Challenge
    2. DNS-01 Challenge
    3. TLS-SNI-01 Challenge
    4. TLS-ALPN-01 Challenge

    วิธีที่ง่าย และทำกันทั่วไป คือ HTTP-01 คือ เมื่อ certbot client รับคำสั่งขอ certificate สำหรับโดเมนที่ต้องการแล้ว จะต้องเอาไฟล์ ไปวางที่

    http://<YOUR_DOMAIN>/.well-known/acme-challenge/<TOKEN>

    ซึ่ง ชื่อต้องตรงกับที่กำหนด และในไฟล์ จะเป็น Token และ Thumbprint ของ account key

    (ในทางเทคนิค อาจจะให้มีสักเครื่องในองค์กรที่เปิดให้เข้าถึงจาก Internet ได้ ทำหน้าที่ร้องขอ Certificate ได้ แล้วทำ HTTP-01 Challenge ให้ผ่าน ก็จะสามารถขอ Certificate ให้กับ Subdomain อื่น ๆ ได้)

    แต่มีอีกวิธีหนึ่ง คือ DNS-01 Challenge ซึ่ง ไม่จำเป็นต้องมีเครื่องที่เข้าถึงได้จาก Internet (แต่สามารถ ออก Internet ได้) แต่อาศัยการสร้าง TXT Record ตามที่กำหนดแทน ประมาณนี้

    _acme-challenge.<YOUR_DOMAIN> 300 IN TXT "<TOKEN>"

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

    0. เราจะขอ wildcard certificate โดเมนของ abc.ijk.xyz.psu.ac.th โดยการติดตั้ง Let’s Encrypts certbot client บน Ubuntu 20.04 ซึ่งเครื่องนี้ สามารถต่อ Internet ได้ แต่ไม่สามารถเข้าถึงได้จาก Internet

    1.ติดตั้ง Let’s Encrypts certbot client (ยุ่งยากหน่อย แต่จะได้ certbot version 1.19)

    sudo apt update
    sudo snap install core; sudo snap refresh core
    sudo apt-get remove certbot
    sudo snap install --classic certbot
    sudo ln -s /snap/bin/certbot /usr/bin/certbot

    หรือสั้นๆ ทำอย่างนี้ก็ได้ (ไม่ต้องใช้ snap แต่จะได้ certbot version 0.40)

    sudo apt update
    sudo apt install certbot

    2. สั่ง certbot ให้ไปขอเฉพาะ certificate จากนั้นบอกว่าจะติดตั้งเอง (manual) และ ขอใช้ DNS-01 Challenge

    sudo certbot certonly --manual --preferred-challenges dns

    3. กรอกข้อมูล โดเมนเนม ที่ต้องการ ในที่นี้ จะขอใช้ wildcard คือ *.abc.ijk.xyz.psu.ac.th

    Saving debug log to /var/log/letsencrypt/letsencrypt.log
    Plugins selected: Authenticator manual, Installer None
    Please enter in your domain name(s) (comma and/or space separated) (Enter 'c' to cancel): *.abc.ijk.xyz.psu.ac.th
    Obtaining a new certificate
    Performing the following challenges:
    dns-01 challenge for *.abc.ijk.xyz.psu.ac.th

    NOTE: The IP of this machine will be publicly logged as having requested this
    certificate. If you're running certbot in manual mode on a machine that is not
    your server, please ensure you're okay with that.
    Are you OK with your IP being logged?

    (Y)es/(N)o: y

    Please deploy a DNS TXT record under the name
    _acme-challenge.abc.ijk.xyz.medicine.psu.ac.th with the following value:
    xjid...4u1znkFXut0Y...n3ck89gGaUl75K4fI
    Before continuing, verify the record is deployed.

    Press Enter to Continue

    **** ตรงนี้ อย่าเพิ่งเคาะ Enter เด็ดขาด จนกว่า DNS admin จะดำเนินการเสร็จ *****

    4. แจ้งผู้ดูแล DNS ขององค์กร ว่า ให้เพิ่ม TXT Record ส่งข้อความตามนี้ไปให้เค้าก็น่าจะได้

    Please deploy a DNS TXT record under the name
    _acme-challenge.abc.ijk.xyz.medicine.psu.ac.th with the following value:
    xjid...4u1znkFXut0Y...n3ck89gGaUl75K4fI

    หรือจะให้ดี แจ้งไปตรง ๆ ว่า จะเอาแบบนี้

    _acme-challenge.abc.ijk.xyz.medicine.psu.ac.th 300 IN TXT 
    "xjid...4u1znkFXut0Y...n3ck89gGaUl75K4fI"

    5. รอ รอ รอ จนกว่า DNS Admin บอกว่า เสร็จแล้ว (แนะนำว่า ควรทำในเวลาที่สามารถประสานงานกับ DNS Admin ได้ เพราะ ในขั้นตอนข้อ 3. นั้น จะเคาะผ่านไม่ได้ หากแจ้ง DNS admin ไปแล้ว แต่เค้ายังไม่ทันทำให้ แล้วเราดันไปเคาะ Enter ผ่านไปก่อน TOKEN ที่แจ้งไป ก็จะใช้ไม่ได้)

    ตรวจสอบด้วย Google Admin Toolbox ก็ได้ ว่าได้ TXT ตรงตามที่กำหนดมาแล้ว ที่

    https://toolbox.googleapps.com/apps/dig/#TXT/

    สิ่งที่ควรได้ น่าจะมีหน้าตาประมาณนี้

    เมื่อมั่นใจว่า TXT Record ตรงกันแล้ว ค่อยกลับไปที่หน้าต่างในข้อ 3. แล้วกด Enter

    Let’s Encrypt certbot client จะแจ้งไปยัง CA server ให้ตรวจสอบ ถ้าผ่านก็จะได้ข้อคาวมประมาณนี้

    Waiting for verification…
    Cleaning up challenges
    Subscribe to the EFF mailing list (email: kanakorn.h@g.psu.ac.th).
    IMPORTANT NOTES:
    Congratulations! Your certificate and chain have been saved at:
    /etc/letsencrypt/live/abc.ijk.xyz.psu.ac.th/fullchain.pem
    Your key file has been saved at:
    /etc/letsencrypt/live/abc.ijk.xyz.psu.ac.th/privkey.pem
    Your cert will expire on 2021-02-17. To obtain a new or tweaked
    version of this certificate in the future, simply run certbot
    again. To non-interactively renew all of your certificates, run
    "certbot renew"
    If you like Certbot, please consider supporting our work by:
    Donating to ISRG / Let's Encrypt: https://letsencrypt.org/donate
    Donating to EFF: https://eff.org/donate-le

    ตรวจสอบ Certification ด้วยคำสั่ง

    sudo certbot certificates

    จะได้รายละเอียดว่า Certificate ที่ได้มา เป็นของ domain อะไรบ้าง

    Found the following certs:
    Certificate Name: abc.ijk.xyz.psu.ac.th
    Serial Number: 3808642657a...........bbeacd6df8bacc
    Domains: *.abc.ijk.xyz.psu.ac.th
    Expiry Date: 2021-02-17 02:59:43+00:00 (VALID: 89 days)
    Certificate Path: /etc/letsencrypt/live/abc.ijk.xyz.psu.ac.th/fullchain.pem
    Private Key Path: /etc/letsencrypt/live/abc.ijk.xyz.psu.ac.th/privkey.pem

    สุดท้าย เอา fullchain.pem และ privkey.pem ไปไว้ในเครื่อง web server ที่จะต้องการใช้ https เป็น subdomain ของ abc.ijk.xyz.psu.ac.th

    จากนั้น ตั้งค่าใน Web Server เช่น Apache2 ให้ใช้ Certificate ประมาณนี้

    <VirtualHost *:443>
    # ...
       SSLEngine on
       SSLCertificateFile /etc/ssl/letsencrypt/fullchain.pem
       SSLCertificateKeyFile /etc/ssl/letsencrypt/privkey.pem
    </VirtualHost>

    แล้วก็ restart เป็นอันเรียบร้อย

    ตรวจสอบการใช้งานจริง โดยการใช้ https://server1.abc.ijk.xyz.psu.ac.th/ จะได้แบบนี้

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

  • SSH:- no matching key exchange method found

    เดี๋ยวนี้ใน Windows 10 ก็มี ssh ให้ใช้งาน แต่พอใช้กับเซิร์ฟเวอร์รุ่นเก่าๆ ก็เข้าไม่ได้ซะงั้น ไปลอง ssh ฝั่ง Linux (WSL2) ก็ให้ผลเหมือนกันคือ!!!

    Linux
    Windows
    • ถ้าเป็นเมื่อก่อน วิ่งไปหา putty อย่างไว…. แต่ Windows อุตส่าห์ทำมาให้ใช้แล้วทั้งทีจะไม่ใช้ได้ยังไง
    • สิ่งที่ต้องตรวจสอบก่อนคือ man ssh_config สำหรับ Linux ฝั่ง client ว่ารองรับ ciphers และ kexalgorithms แบบไหนรองรับหรือไม่ ส่วนฝั่ง Windows 10 จะอิงตาม OpenBSD manual ซึ่งเหมือนกับ Linux แหละ
    KexAlgorithms
    Ciphers
    • สร้างแฟ้ม .ssh/config โดย
      • Linux ก็จะให้สร้างที่ /home/username/.ssh/
      • Windows ก็อยู่ที่ C:\Users\username\.ssh
    • สำหรับ error ว่า no matching key exchange method found. Their offer: diffie-hellman-group-exchange-sha1,diffie-hellman-group14-sha1,diffie-hellman-group1-sha1 ให้เพิ่มข้อความต่อไปนี้ลงในแฟ้ม .ssh/config โดย somhost.example.org เป็นชื่อและโดเมนเนมของ server เป้าหมาย
    Host somehost.example.org
    	KexAlgorithms +diffie-hellman-group1-sha1
    • สำหรับ error ว่า no matching cipher found. Their offer: aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc,rijndael-cbc@lysator.liu.se ให้เลือกมา 1 cipher ที่ปรากฎใน error มาใส่ในแฟ้ม .ssh/config
    Host somehost.example.org
        Ciphers aes256-cbc
    • บาง server ต้องรวมทั้งสองอย่างเช่น
    Host somehost.example.org
        KexAlgorithms +diffie-hellman-group1-sha1
        Ciphers aes256-cbc
    • ถ้าไม่อยากสร้างแฟ้ม .ssh/config สามารถสั่งผ่าน command line ได้เลยเช่น
    ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 oracle@somehost.example.org

    หรือ ถ้ามี error 2 อย่าง

    ssh -oKexAlgorithms=+diffie-hellman-group1-sha1 -c aes256-cbc oracle@somehost.example.org

    เมื่อสร้างแฟ้ม .ssh/config แล้วลอง ssh เข้าไปใหม่

    Linux
    Windows
  • Spam Alert – หลอกเป็นธนาคารส่งแจ้งเตือนเรื่องการลงชื่อเข้าใช้อุปกรณ์ใหม่

    มุขเดิม เปลี่ยนธนาคาร

    28 เมษายน 2563 08:18 พบอีเมล “หลอกลวง” ว่ามาจากธนาคาร ไทยพานิชย์ แจ้งเกี่ยวกับ อุปกรณ์ใหม่ลงชื่อเข้าใช้

    ลักษณะอีเมลเป็นดังภาพ หากผู้ใดได้รับ ลบทิ้งได้ทันที

    รายละเอียดวิธีการสังเกต อ่านได้จาก Spam Alert – หลอกเป็นธนาคารส่งแจ้งเตือนเรื่องการลงชื่อเข้าใช้อุปกรณ์ใหม่

    คราวนี้ ผมลองคลิกเข้าไปดู ว่าหน้าตา Phishing เป็นอย่างไร

    เหมือนหน้าตาของ SCB Easy เป๊ะ ใครหลงเชื่อ (โดนหลอกสำเร็จ) ก็อาจจะสูญเงินในบัญชีไปได้ เพราะ Hacker ได้ username/password ของธนาคารไปแล้ว

    แถม เดี๋ยวนี้ เข้ารหัส HTTPS มาด้วย

    ความไม่รู้ คือ ความเสี่ยง

    ขอให้โชคดี

  • Spam Alert – หลอกเป็นธนาคารส่งแจ้งเตือนเรื่องการลงชื่อเข้าใช้อุปกรณ์ใหม่

    2 เมษายน 2563 08:18 พบอีเมล “หลอกลวง” ว่ามาจากธนาคาร กรุงไทย แจ้งเกี่ยวกับ อุปกรณ์ใหม่ลงชื่อเข้าใช้

    ลักษณะอีเมลเป็นดังภาพ หากผู้ใดได้รับ ลบทิ้งได้ทันที

    เพิ่มเติม: ลักษณะการโจมตีเช่นนี้ มักจะใช้ “ข้อความแสดงลิงค์” เป็น URL ที่น่าเชื่อถือ แต่เมื่อเอาเมาส์ไปวาง ก็จะพบว่า เป็น Link ไปที่อื่น ในกรณีนี้ อ้างว่าเป็น https://www.ktbnetbank.com แต่จริง ๆ ส่งไปยัง https://www.onlinenewstrend.com/

    ทางระบบ PSU Email ได้ทำการตรวจสอบ และแจ้งเตือนผู้ใช้อยู่แล้ว กรุณาสังเกต

    Disarmed: อีเมลฉบับนี้ ปลด Script อันตรายออกให้แล้ว

    MailScanner has detected a possible fraud attempt: แจ้งแล้วว่า มีความพยายามหลอกลวง

    “www.onlinenewstrend.com” claiming to be https://www.ktbnetbank.com: เนี่ย อีกเว็บนึง เคลมว่าเป็นอีกเว็บนึง

    จากบทความก่อนหน้านี้ เรื่อง ฉันโดนแฮ๊กหรือเปล่า !?!?! ลองทำตามขั้นตอนที่แนะนำดู จะพบว่า อีเมลนี้ มาจากอินเดีย

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

  • ฉันโดนแฮ๊กหรือเปล่า !?!?!

    หลายท่านอาจจะเคยได้รับ email หน้าตาประมาณนี้

    ข้อเท็จจริงคือ

    เราสามารถปลอมเป็นใคร ส่ง email ออกไปให้ใครก็ได้

    Truth …

    แล้ว จะรู้ได้อย่างไร !?!

    ต้องดูสิ่งที่เรียกว่า Header … โดยทำตามวิธีการต่อไปนี้

    1. คลิกที่ View Full Header

    จะได้ผลประมาณนี้

    จากภาพ จะเห็นว่า ส่งจาก (ดูจาก ล่าง ขึ้น บน)

    Received: from [154.117.164.59] (unknown [154.117.164.59])
         by mailscan.in.psu.ac.th (Postfix) with ESMTP id 69F2B150768
         for <kanakorn.h@psu.ac.th>; Thu, 5 Mar 2020 13:24:42 +0700 (ICT)

    แล้วจึงส่งเข้าระบบ PSU Email

    Received: from mailscan.in.psu.ac.th (unknown [192.168.107.12])
         by mail.psu.ac.th (Postfix) with ESMTP id A034D464FC7
         for <kanakorn.h@psu.ac.th>; Thu, 5 Mar 2020 13:24:46 +0700 (+07)

    แล้วจึงเข้า Mailbox ของ PSU (ข้อมูล version ของ cyrus เอาออกไม่ได้จริง ๆ ครับ ไว้รอ Upgrade)

    Received: from mail.psu.ac.th ([unix socket])
         by mail (Cyrus v2.4.18-Debian-2.4.18-3) with LMTPA;
         Thu, 05 Mar 2020 13:24:46 +0700

    จะเห็นได้ว่า ต้นทางคือ IP Address : 154.117.164.59

    ตรวจสอบว่าอยู่ที่ไหนในโลก ด้วย

    https://whatismyipaddress.com/ip/154.117.164.59

    ประมาณ South Africa

    สรุป ! ไม่ได้โดน Hack (ไม่ได้เข้ามาใช้ PSU Email ส่ง)

    ครับ

  • ELK #09 Anomaly Detection (Case Study)

    ระบบ PSU Email ให้บริการผู้ใช้ของมหาวิทยาลัยสงขลานครินทร์ ซึ่งมีการใช้งานจากทั่วโลก ทั้งระบบประกอบขึ้นจากคอมพิวเตอร์หลายเครื่อง การจะตรวจสอบ Log เมื่อเกิด Incident ขึ้น อาจจะต้องใช้ระยะเวลานาน และเป็นการยากพอสมควรที่จะเชื่อมโยงความสัมพันธ์ของเหตุการณ์ และสรุปออกมาเป็นรายงานได้ จึงเริ่มใช้ ELK สำหรับรวบรวม Log ของทั้งระบบไว้ที่ส่วนกลาง และพัฒนาต่อยอดเพื่อการตรวจจับความผิดปรกติต่าง ๆ ได้

    ในบทความนี้ จะนำเสนอวิธีการใช้ ELK เพื่อตรวจจับ การ Login ที่ผิดปรกติบน PSU Email โดยจะสนใจ ผู้ใช้ที่มีการ Login จากนอกประเทศเป็นหลัก

    การส่ง Log จาก Server เข้า ELK

    ที่เครื่อง Server แต่ละเครื่อง กำหนดให้ส่ง Log จาก /etc/rsyslog.d/50-default.conf เข้าไปที่ your.logstash.server:port ตามที่กำหนดไว้

    การสร้าง Logstash Filter

    ที่ Logstash Server

    • Input เพื่อรับข้อมูลจาก syslog ที่ port ที่ต้องการ เช่นในที่นี้เป็น 5516 เป็นต้น
    • Filter ใช้ Grok Plugin เพื่อจับข้อมูล จาก message แบ่งเป็นส่วน ๆ ตามลักษณะ แล้วตั้งชื่อตาม Field ตามต้องการ ในที่นี้คือ description, username, domainname, clientip, actiondate, actiontime เป็นต้น (ตัวที่สำคัญในตอนนี้คือ username และ clientip)
    • Output ตั้งว่าให้ส่งผลไปยัง Elasticsearch ที่ “your.elasticsearch.server” ที่ port 9200

    [ตรงนี้มีกระบวนการบางอย่าง ซึ่งค่อยมาลงรายละเอียด]

    เมื่อมี Log ไหลเข้าสู่ Logstash และ ถูกประมวลผลแล้ว ก็จะเข้าสู่ Elasticsearch แล้ว ก็นำไปใช้งานบน Kibana

    หลังจากนั้น สามารถ Search ข้อมูล และใส่ Fields ที่สนใจ เช่น Time, Username, geoip.country_name และ description ได้ แล้ว Save เอาไว้ใช้งานต่อ ในที่นี้ ตั้งชื่อว่า squirrelmail-geoip

    จากนั้น สามารถเอาไปสร้างเป็น Visualization แบบ Coordinate Map ได้ เช่น ดูว่า มีการ Login Success / Failed Login / Sent จากที่ไหนบ้างในโลก

    จะเห็นได้ว่า ส่วนใหญ่ ใช้งานจากในประเทศไทย (วงกลมสีแดงเข้ม ๆ) ส่วนนอกประเทศ จะเป็นวงสีเหลืองเล็ก ๆ

    การตรวจหาการใช้งานที่ผิดปรกติ

    สร้าง Search ใหม่ กรองเฉพาะ ที่มี (exist) Username และ ไม่เป็น N/A และ มี (exist) geoip.country_code และ ไม่ใช่ Thailand แล้ว Save ไว้ใช้งานต่อไป ในที่ตั้งชื่อว่า squirrelmail-geoip-outside-th

    จากนั้น เอาไปสร้าง Visualization แบบ Vertical Bar
    กำหนดให้
    Y Axis เป็นจำนวน
    X Axis เป็น Username
    โดยที่ Group by geoip.country_name และ description
    ก็จะทำให้รู้ว่า ใครบ้างที่ มีการใช้งานนอกประเทศ และ เป็นการใช้งานแบบไหน

    จะเห็นได้ว่า จะมีบางคนที่ แสดงสีแค่สีเดียว กับบางคนมีหลายสี เนื่องจาก มีหลายประเทศ และ หลายประเภทการใช้งาน เราสามารถ กรองเอาเฉพาะ ข้อมูลที่สนใจได้ โดยคลิกที่ Inspect แล้วกดเครื่องหมาย + กับข้อมูลที่ต้องการ เช่น description ที่เป็น “Failed webmail login” ก็ได้

    ก็จะกรองเฉพาะ Username ที่มีการ Login จากต่างประเทศ แต่ไม่สำเร็จ จากภาพด้านล่าง แสดงว่า 3 คนนี้ น่าจะโดนอะไรเข้าแล้ว

    หรือ ถ้าจะกรองข้อมูล เฉพาะคนที่ “Failed webmail login” และ “Message sent via webmail” ก็ได้ แต่ต้องเปลี่ยน ชนิดการ Filter เป็น “is one of”

    ผลที่ได้ดังภาพ แต่เนื่องจาก ก็ยังเป็น 3 คนนี้อยู่ จะเห็นได้ว่า คน ๆ เดียว (ซ้ายสุด) มีการ Login จากหลายประเทศ ภายใน 24 ชั่วโมง

    ต่อไป ถ้าเราสนใจเฉพาะ คนที่ “ส่งอีเมล” จากนอกประเทศ ในเวลาที่กำหนด จะได้ผลประมาณนี้

    พบว่า คนซ้ายสุด คนเดิมนั่นแหล่ะ แต่เราจะมาดูรายละเอียด ก็คลิกที่ปุ่ม Inspect แล้ว เลือก Include เฉพาะ Username นั้น

    ก็พบว่า คนนี้มีการส่ง email ออกจากประเทศ USA, Canada, Panama, Argentina, Mexico แล้วบินมา UK ภายในวันเดียว –> ทำได้ไง !!! (ดังภาพด้านล่าง)

    เมื่อลองตรวจสอบ ก็จะพบว่า Username นี้ มีพฤติกรรม ส่ง Spam จริง ๆ ก็จะจัดการ “จำกัดความเสียหาย” ต่อไป

    วิธีการที่กล่าวมาข้างต้น สามารถสร้างเป็น Process อัตโนมัติ (เว้นแต่ขั้นตอนการ จำกัดความเสียหาย จะ Automatic ก็ได้ แต่ตอนนี้ขอ Manual ก่อน) เอาไว้สำหรับ Monitoring ได้ โดยอาจจะสั่งให้ เฝ้าดู 1 ชั่วโมงล่าสุด และ Refresh ทุก 1 นาที ดังภาพ

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

    ส่วนรายละเอียด คอยติดตามตอนต่อไปครับ

  • ปิดช่องโหว่เหลือค้าง

    • หลังจากไม่ได้ตรวจสอบช่องโหว่มานาน วันนี้ Nessus ทำใหม่แล้วลองสแกนซักหน่อย
    Nessus Scan Report
    • ซึ่งจะพบว่ามี Medium สองรายการ คือ Browsable Web Directory และ WordPress User Enumeration โดย
      • Browsable Web Directory คือ สามารถเข้าถึงรายการใน directory ได้ เช่น ชื่อไฟล์ มีไฟล์อะไรบ้าง ขนาดเท่าไหร่ เป็นต้น เมื่อตรวจสอบก็พบว่าเป็น directory ที่ผู้ใช้ไม่จำเป็นต้องเข้าถึง
      • WordPress User Enumeration คือ สามารถเข้าถึง username ได้ว่ามี user อะไรบ้าง

    ปิด Directory Browsing

    ทำได้ 2 วิธีคือ

    • แก้ไขแฟ้ม config ของ site ที่ต้องการปิด โดยทั่วไปแฟ้มจะอยู่ที่ /etc/apache2/site-enabled/site.conf โดย site.conf คือชื่อไฟล์ที่ต้องการ โดยเพิ่มในส่วนของ Directory ของไซต์นั้น ตัวอย่างเป็น /var/www/html/aaeee ให้ทำการแก้ไขหรือเพิ่มข้อความตามตัวอย่าง ส่วนสำคัญคือ Options ต้องไม่มีคำว่า Indexes เมื่อแก้ไขเสร็จ ให้ reload หรือ restart apache2 ด้วยคำสั่ง sudo systemctl reload apache2 หรือ sudo systemctl restart apache2
    <Directory /var/www/html/aaeee>
            Options FollowSymLinks
            AllowOverride All
    </Directory>
    • สำหรับวิธีที่สองนี้ ต้องมีการระบุ AllowOverride All ในแฟ้มของไซต์ ด้วยจึงจะใช้งานได้ (หากแก้ไขไฟล์ไซต์ของ apache2 ต้อง reload หรือ restart ด้วย) เช่น
    <Directory /var/www/html/aaeee>
            AllowOverride All
    </Directory>
    • สร้างแฟ้ม .htaccess เอาไว้ใน Directory (จากตัวอย่างนี้คือ /var/www/html/aaeee) ที่ต้องการ โดยเพิ่มข้อความข้างล่างนี้วิธีนี้ มีผลทันทีไม่ต้อง reload หรือ restart apache2
    Options -Indexes

    ปิด WordPress User Enumeration

    • ในไซต์ของ WordPress จะมีแฟ้ม .htaccess อยู่ให้เพิ่มข้อความต่อไปนี้ลงไป โดย yoursite.name คือชื่อเว็บไซต์
    #user enumeration
    RewriteCond %{QUERY_STRING} ^author=([0-9]*)
    RewriteRule .* https://yoursite.name/? [L,R=302]
    • เมื่อทำสองอย่างแล้วให้ nessus เข้าตรวจสอบอีกครั้ง
    Nessus Scan Report
    • เย่….หายไปละ
    • จบขอให้สนุก