#Security

Cloudflare token โดน 9109 ทั้งที่ IP อยู่ใน allowlist เพราะออกทาง IPv6
token ของ Cloudflare ที่ล็อกด้วย IP allowlist ใช้ได้เครื่องเดียว อีกเครื่องโดน error 9109 ทั้งที่ list ครอบช่วงของ ISP ไว้แล้ว บันทึกวิธีดึง prefix จาก RIPEstat พิสูจน์ด้วย audit log ว่า IP ไหนเป็นของเรา และสาเหตุจริงที่เป็น IPv6

Build APM บน Windows ตอนที่ 3: build Apache httpd 2.4.69 ด้วย CMake
build APR, APR-util, httpd 2.4.69 และ mod_fcgid ด้วย CMake กับ Ninja บน Windows อธิบายทุก option ว่าใส่ทำไม ไล่ DLL ที่ต้องวางข้าง httpd.exe ด้วย dumpbin ดักไม่ให้ลิงก์ DLL ตัว debug แล้วทดสอบ config ด้วย httpd -t

Build APM บน Windows ตอนที่ 2: ดึง source และ lib ด้วย vcpkg
ขั้นที่ 1 และ 2 ของการ build Apache เองบน Windows อ่านสคริปต์ 00-fetch.ps1 กับ 10-deps-vcpkg.ps1 ทีละบรรทัด ตรวจ sha256 ของ source ทุกตัว แล้วให้ vcpkg build OpenSSL 3.5 LTS กับ lib อีก 8 ตัวจาก source พร้อมคำสั่งตรวจผลทุกขั้น

PHP มีช่องโหว่ RCE ระดับวิกฤตสองตัว (php2shell) อัปเดตด่วนวันนี้
CVE-2026-109618 กับ CVE-2026-109619 เป็นช่องโหว่ RCE ของ PHP ที่ CVSS 9.2 มี exploit สาธารณะแล้ว กระทบทุกเครื่องที่ใช้ PHP รับ request เว็บ รุ่นที่แก้แล้วคือ 8.5.12, 8.4.27, 8.3.36, 8.2.35 บันทึกนี้รวมวิธีเช็กเวอร์ชัน วิธีอัปเดตทั้ง Debian, RHEL, DirectAdmin, Docker และ Windows กับค่าชั่วคราวระหว่างรอแพตช์

กรอกฟอร์มราชการลง PDF ด้วยสคริปต์ และทำสำเนาบัตรให้ปลอดภัย
ฟอร์มราชการที่แจกมาเป็น PDF กรอกได้ มักกรอกภาษาไทยไม่ได้จริง ช่องแบบตารางย่อยทำให้ตัวเลขไหลทับเส้น และวรรณยุกต์ลอยไปชนสระบน บทความนี้คือวิธีไล่ชื่อช่องออกมาก่อน กรอกผ่านฟอร์มแล้วอบให้เป็นเนื้อเอกสารจริง วาดข้อความไทยเองด้วยฟอนต์ที่มีสระครบ และทำสำเนาบัตรขนาดเท่าของจริงพร้อมลายน้ำที่ระบุวัตถุประสงค์

ให้เว็บอ่านเครื่องอ่านบัตรที่เคาน์เตอร์ ด้วย agent บน localhost
เบราว์เซอร์แตะเครื่องอ่านบัตรสมาร์ตการ์ดเองไม่ได้ ทางที่ใช้ได้คือเขียน agent ตัวเล็กเปิดพอร์ตบน localhost แล้วให้หน้าเว็บเรียก บทความนี้เก็บครบทั้ง secure context, CORS preflight, การแย่งพอร์ตกับ agent เจ้าอื่น, PC/SC แบบ SHARED, การถอด TIS-620 เอง และวันที่โดนแอนตี้ไวรัสเหมาว่าเป็น backdoor

ลบใบหน้าในเครื่องสแกนไม่ได้ เพราะ API ตอบ notSupport
เครื่องสแกนใบหน้าที่ประตูโฆษณาว่ามีคำสั่งลบใบหน้าใน FDLib แต่ยิงคำสั่งจริงกลับตอบ notSupport ทุกรูปแบบ คนที่ออกไปแล้วเลยยังสแกนเข้าได้อยู่ บทความนี้เล่าทางที่ตัน ทางที่ใช้ได้จริงคือ UserInfo/Modify แบบ body สั้นที่สุด และวงจร sync ทะเบียนคนสองทางที่รันทุกคืน

ดูดเมลเข้าระบบโดยไม่ทำลายกล่องจดหมายของคนอื่น
กล่องเมลที่แอปจะไปดึงของ เป็นกล่องที่คนใช้งานอยู่จริงทุกวัน — ดึงด้วย UNSEEN คือเมลหายเงียบเมื่อเจ้าของเปิดอ่านบนมือถือก่อน cron วิธีที่ถูกคือ UID SEARCH คู่กับ UIDVALIDITY และ BODY.PEEK พร้อมการกันซ้ำที่ต้องทำฝั่งเราเอง

ให้ AI อ่านเอกสาร แต่ให้โค้ดเป็นคนคิดเลข
controller บังคับให้คนกรอกอยู่ในช่วง 0 ถึง 100 แต่เส้นทางที่ AI อ่านค่าจากเอกสารแล้วป้อนเข้ามาตรวจแค่ว่าเป็นตัวเลข ค่าติดลบตัวเดียวดันผลลัพธ์ขึ้นไป 5.25 เท่าโดยไม่มี error — บทเรียนเรื่องการมองเอาต์พุตของ AI เป็น input ที่ไม่น่าเชื่อถือเท่ากับที่คนกรอก

ไฟล์ลับคุม 600 ครบ แต่ log 0644 ถูกอัปออกนอกเครื่องทุกคืน
เข้ารหัส .env เรียบร้อย คุมสิทธิ์ไฟล์ลับครบทุกตัว แต่ข้อมูลลูกค้ายังรั่วออกนอกเครื่องทุกคืนผ่านทางที่ไม่มีใครจัดว่าเป็นความลับ นั่นคือไฟล์ log ที่อ่านได้ทั้งเครื่องและถูกมัดรวมขึ้น object storage พร้อม backup พร้อมวิธีปิดที่ต้นทางด้วยการ log แค่รหัสผลลัพธ์

ไฟร์วอลล์ขาออกทำระบบเช็คชื่อโดเมนพัง — root ทดสอบแล้วผ่าน
หน้าสั่งซื้อโดเมนขึ้นว่าไม่ว่างทุกชื่อ แม้แต่ชื่อที่มั่วขึ้นมาเอง ต้นเหตุคือนโยบายขาออกเป็น DROP แล้วลิสต์พอร์ตที่อนุญาตไม่มีพอร์ต 43 หลังย้ายระบบปฏิบัติการ กับดักคือทดสอบด้วย root แล้วผ่านทุกครั้ง ต้องทดสอบในนามผู้ใช้ที่รันแอปจริงเท่านั้น

เว็บกับคิวคนละผู้ใช้ — mkdir 0700 ฆ่า default ACL ทิ้งทั้งโฟลเดอร์
แอปตัวเดียวแต่รันด้วยสองผู้ใช้ ฝั่งเว็บเป็น php-fpm ฝั่งคิวเป็นอีกบัญชีหนึ่ง ตั้ง default ACL ไว้ครบแล้วยังเขียนข้ามกันไม่ได้ ต้นเหตุคือ mkdir โหมด 0700 ที่ไปตั้ง mask ทับจนสิทธิ์ ACL หายเกลี้ยง พร้อมกับดักเรื่องลบไฟล์ที่ต้องมีสิทธิ์ที่โฟลเดอร์ ไม่ใช่ที่ไฟล์

tinker ส่งเมลผ่าน แต่เว็บส่งไม่ออก — proc_open ที่ปิดอยู่ใน FPM
ทดสอบส่งเมลจาก tinker ผ่านฉลุย แต่พอกดจากฟอร์มจริงกลับไม่มีอะไรออกเลย และ mail log ไม่มีสักบรรทัด — เพราะ CLI กับ PHP-FPM ไม่ใช่ PHP ตัวเดียวกัน พร้อมสูตร SMTP AUTH ที่ใช้ได้จริงบนโฮสต์ DirectAdmin และกฎเรื่อง From ที่ห้ามพลาด

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

แอปเก็บเอกสารหน้าเดียวด้วย PHP กับ SQLite ที่เก็บต้นฉบับไว้เสมอ
แอปเก็บรูปเอกสารสำหรับงานยื่นราชการที่ถ่ายจากมือถือหน้างาน ออกแบบให้หนึ่งการอัปโหลดกลายเป็นสามไฟล์ คือไฟล์ที่ใช้แสดง ไฟล์ต้นฉบับ และค่าครอปที่บันทึกไว้ กลับมาปรับใหม่ได้โดยไม่เสียคุณภาพ พร้อมการย้ายจาก JSON มาเป็น SQLite แบบดูดของเดิมเข้าให้เอง และการปิดโฟลเดอร์ข้อมูลส่วนบุคคลที่เว็บเซิร์ฟเวอร์

ส่งไฟล์จากงานอัตโนมัติเข้า Telegram กับเพดาน 50 MB ของ Bot API
วางบริการเล็ก ๆ ในเครื่องที่รับไฟล์จากสคริปต์แล้วส่งเข้า Telegram ให้ตัวเอง เป็นช่องทางออกทางเดียวล้วน ไม่มี polling ไม่รับคำสั่งกลับ พร้อมเพดานจริงของ Bot API ที่ต้องรู้ก่อนเขียน ทั้ง 50 MB ต่อไฟล์ รูปเกิน 10 MB ที่ต้องส่งเป็นเอกสาร และกับดักภาษาไทยใน curl บน Windows

เก็บ secret ใน .env แบบเข้ารหัส แล้วถอดอัตโนมัติตอน config โหลด
วิธีเก็บรหัสผ่านและ API key ใน .env ของ Laravel เป็น ciphertext แล้วให้ config ถอดกลับเองตอนโหลด ด้วย helper ตัวเดียวที่ตรวจเองว่าค่าไหนเข้ารหัสไว้ พร้อมกับดัก APP_KEY ต่าง environment ที่ทำให้ระบบล่มทั้งชุดถ้าพลาด

Laravel หลัง proxy เห็น IP เป็น 127.0.0.1 — ฟอร์มเงียบ ไม่มี error
ฟอร์มติดต่อบน DirectAdmin กดส่งแล้วขึ้นว่าไม่ใช่คน เมลไม่ออก แต่ log ทุกชั้นเงียบสนิท — ต้นเหตุคือ Laravel หลัง nginx-to-apache เห็น $request->ip() เป็น 127.0.0.1 ทำให้ด่านตรวจบอทไม่ผ่านแล้ว return ก่อนถึงบรรทัดส่งเมล พร้อมเหตุผลว่าทำไม TrustProxies ห้ามใส่ '*'

WAF ตอบ 406 เพราะข้อความไทยใน POST — แก้ยังไงเมื่อไม่ใช่ root
ModSecurity บนโฮสต์ตอบ 406 ใส่ข้อความไทยบางประโยคใน POST body ทำให้ฟอร์มบันทึกไม่ได้ — แต่เราเป็นแค่ผู้เช่า แก้ rule เองไม่ได้ บทความนี้คือวิธี isolate หาท่อนที่โดนแบบ black-box แล้วอ้อมด้วย JS encode ตอน submit + middleware decode กลับฝั่ง Laravel

Googlebot โดนไฟร์วอลล์ตัวเองแบนถาวร จนเว็บหายจากผลค้นหา
ไล่ตรวจว่าทำไมเว็บหายจากผลค้นหา แล้วเจอ Googlebot นอนอยู่ในรายการแบนถาวรของไฟร์วอลล์ตัวเอง 408 จาก 500 แถวมาจากตัวนับ false positive ของ WAF วิธีปลดแบน สคริปต์ดึงช่วงไอพีทางการของบอทมาใส่ ignore list ทุกวัน กับดัก grep และผลข้างเคียงของการบล็อกทั้งประเทศ

AI crawler ยิง ?add-to-cart= จนโหลดพุ่ง — บล็อกยังไงไม่ให้เสีย SEO
โหลดเซิร์ฟเวอร์พุ่งจนได้เมลเตือน ไล่ log แล้วพบว่า 84% ของทราฟฟิกทั้งวันมาจาก AI crawler ตัวเดียวที่ไล่กดลิงก์ add-to-cart ทุกสินค้า ปิดเป็นชั้น ๆ ด้วย robots.txt, rel=nofollow และ nginx limit_req โดยหน้าสินค้ายังถูก index ครบ

เครื่องในโรงงานหลัง NAT ขึ้นคลาวด์ ด้วย push snapshot + คิวคำสั่ง
เครื่องงานจริงอยู่ใน LAN หลัง NAT ไม่มี public IP แต่เจ้าของอยากดูข้อมูลบนเว็บคลาวด์และแก้ข้อมูลจากมือถือให้ลงไปถึงเครื่องใน — ทำได้โดยไม่เปิดพอร์ตไม่ตั้ง VPN ด้วย push snapshot + คิวคำสั่งแก้ + ack แบบ idempotent

mailbox รหัสรั่ว ส่งสแปมออก 1,786 ฉบับ โดยที่ CSF/LFD ไม่เห็น
เคสจริงของ mailbox ที่ถูกขโมยรหัสแล้วใช้ยิงสแปมออกนอกวันละ 50-75 ฉบับใต้เพดาน 200 ติดต่อกัน 4 สัปดาห์ โดย CSF/LFD/BFM ไม่ขยับเลยสักครั้ง เพราะมันนับแค่ auth ที่ล้มเหลว พร้อมคำถามชี้ขาดว่าโดนแฮ็กจริงหรือแค่โดนถล่ม ชุดคำสั่ง forensics บน exim และ playbook ขอปลดออกจาก blocklist

เกณฑ์ราคากลาง CCTV ภาครัฐ MDES 2564 กับการออกแบบ BOM Hikvision PoE
อ่านเกณฑ์ราคากลางและคุณลักษณะพื้นฐานของระบบกล้องวงจรปิดภาครัฐ ฉบับ มิ.ย. 2564 ของ MDES ให้ครบก่อนตั้งงบ แล้วออกแบบ BOM Hikvision IP/PoE ให้ผ่านทั้งสเปกขั้นต่ำ เพดานราคากลาง กฎเก็บภาพย้อนหลัง 30 วัน และเงื่อนไขต้องแข่งได้อย่างน้อย 3 ยี่ห้อ

ทำ network-as-code บน MikroTik RouterOS
แนวคิด network-as-code สำหรับ MikroTik — ดึง /export ออกมาเก็บเป็นไฟล์, ล้าง secret ด้วยสคริปต์ sanitize ก่อนแชร์, แยกหมวด แล้ว generate config หลายไซต์จากเทมเพลต Jinja2 + ค่า variables ชุดเดียว

ตรวจ security เว็บ Laravel ที่ deploy แล้ว — ไล่ 3 ชั้นตามลำดับที่ควรแก้
หลัง deploy Laravel ขึ้น production ควรไล่ตรวจความปลอดภัย 3 ชั้น — external probe หา endpoint ที่รั่ว, ตรวจไฟล์/สิทธิ์บนเซิร์ฟเวอร์, แล้ว grep หาช่องในโค้ด บทความนี้ให้ชุดคำสั่งพร้อมลำดับความสำคัญ P0-P2 ที่ควรแก้ก่อนหลัง

ย้ายโดเมนเข้า Cloudflare แล้วเมลหาย — เพราะ record เมลถูกเปิดพร็อกซี (ส้ม)
เพิ่มโดเมนเข้า Cloudflare ให้ DNS ตรงกับโฮสต์แล้วอยู่ดี ๆ เมลส่งเข้าไม่ได้ — สาเหตุที่เจอบ่อยสุดคือปล่อย record mail/smtp/pop เป็นพร็อกซี (เมฆส้ม) ทั้งที่พร็อกซี Cloudflare แบกแค่ HTTP/S บทความนี้สรุปกฎ record ไหนต้องเทา + กับดัก token/SSL

nginx โดน heap overflow ย้อนหลัง 15 ปี — แต่เช็คแค่เวอร์ชันไม่พอ
CVE-2026-42533 กินเวอร์ชัน nginx ตั้งแต่ 0.9.6 ถึง 1.31.2 คือย้อนหลัง 15 ปี แต่จะโดนจริงหรือไม่อยู่ที่ config ไม่ใช่เวอร์ชัน ปัญหาคือเงื่อนไขที่ข่าวสรุปกันแคบกว่าของจริง เช็คตามข่าวแล้วจะได้ผลว่า "ปลอดภัย" ทั้งที่ยังเข้าเงื่อนไขอยู่

เขียนสคริปต์บน Windows ไปรันบน Linux — สองกับดักที่ทำไฟล์ค้างเซิร์ฟเวอร์
เขียน helper script บน Windows แล้ว scp ขึ้นไปรันบน Linux เป็นงานประจำ แต่มีสองอย่างที่กัดซ้ำ ๆ — path แบบ d:\ ที่ฝังในสคริปต์กลายเป็นชื่อไฟล์ประหลาดใน /tmp จนโดน file monitor จับ และไฟล์ token/payload ที่ลืมลบทิ้งไว้บนเซิร์ฟเวอร์ บทความนี้สรุปกฎกันพลาด

audit ความปลอดภัยเซิร์ฟเวอร์ Debian shared-host แบบ read-only — เริ่มยังไงไม่ให้แบนตัวเอง
ตรวจความปลอดภัยเซิร์ฟเวอร์ Debian ที่รัน DirectAdmin แบบ read-only ก่อน — แต่กับดักแรกคือทราฟฟิกจากการ scan เองเข้าเงื่อนไข brute-force ของ CSF จนแบน IP ตัวเอง บทความนี้วางลำดับ audit ที่ปลอดภัย + จุดที่ต้องดูในยุค 2024-2026

libmodsecurity3 + nginx — exclusion ที่ใช้ได้จริงมีแบบเดียว: ctl:ruleEngine
ModSecurity v3 (libmodsecurity3) + nginx + OWASP CRS — ctl:ruleRemoveById ที่ตำราสอนกันไม่ทำงานและเงียบสนิท บทความนี้สรุปจากการลองครบทุกท่า: ของที่ใช้ได้จริงคือ ctl:ruleEngine จำกัดขอบเขตด้วย chained rule Host+URI และไฟล์ exclusion ต้องโหลดก่อน CRS

ลูกค้าเช็คเมลแล้วโดน firewall แบนยกออฟฟิศ — แก้ด้วย auto-whitelist จาก login
พฤติกรรมลูกค้าเมลจริงหน้าตาเหมือน bot เป๊ะ — เครื่องในออฟฟิศยิงรหัสเก่ารัวๆ จนโดน CSF แบนทั้งวง บทความนี้เล่าระบบ auto-whitelist ที่เกาะเหตุการณ์ login สำเร็จ + GeoIP ไทย แล้ว temp allow 24 ชั่วโมง พร้อมกับดัก 5 ข้อที่เจ็บมาแล้ว

ให้ทีม 7 คน remote เข้า LAN โดยไม่เปิด port — Cloudflare Zero Trust ฉบับทำจริง
ทีมงาน 7 คนต้อง RDP เข้าเครื่องใน LAN โดยห้ามเปิด port ออก internet — สรุปสถาปัตยกรรม Cloudflare Zero Trust (WARP + cloudflared) พร้อม 3 บทเรียนจากการทำจริง: IdP ที่ลืมตั้ง, Gateway default ที่ผ่านหมด และ default-deny ที่คนลืมบ่อยสุด

AdSense บอก ads.txt "ไม่พบ" ทั้งที่ไฟล์อยู่ — ไล่ log พิสูจน์ทีละชั้น
หน้า Sites ของ AdSense ขึ้น ads.txt "ไม่พบ" ทั้งที่ไฟล์อยู่ครบถูกต้อง — บทความ forensics ไล่พิสูจน์ทีละชั้นด้วย curl + access log ว่า Googlebot เคยมาแล้วได้อะไรกลับไป สรุปคดี: ไม่มีใครบล็อค มันคือสถานะค้างของ Google เอง

โดเมน .com โดนยึด — ย้ายทั้งเว็บไป .net บน DirectAdmin แบบข้อมูลไม่หาย
โดเมน .com หมดอายุหลุดไปอยู่กับ domain squatter — เล่าวิธีย้ายทั้งเว็บ (ไฟล์/เมล/DNS/SSL) ไปโดเมน .net ใหม่บน DirectAdmin ด้วย CMD_CHANGE_DOMAIN คำสั่งเดียว พร้อมงานหลังบ้าน 4 อย่างที่ไม่ตามมาอัตโนมัติ

คุม Linux server ด้วย AI ผ่าน SSH ให้ปลอดภัย ไม่เผลอพังระบบ
วิธีที่ผมใช้จริงในการเอา Claude มาช่วย audit และแก้ security ของ Linux server ผ่าน SSH ตั้งแต่เตรียมเครื่อง เก็บความลับ ไปจนกฎเหล็กก่อนแตะ production

ปลด CSF อัตโนมัติให้ออฟฟิศจริง แต่ไม่ปลดให้ attacker ด้วย geo+account gate
เคสจริง ออฟฟิศลูกค้า IP หมุนทุกวัน มี ghost device รหัสเก่าค้างทำให้ทั้งออฟฟิศโดน CSF บล็อกเป็นรอบ ๆ วิธีปลดอัตโนมัติด้วย gate แคบ account+geo ที่ปลดให้ออฟฟิศจริงแต่กันต่างชาติที่ brute creds.

วาง Telegram Bot เฝ้า DA Server แบบ blast radius เล็ก
คู่มือวาง Telegram bot เป็น control surface เบาๆ สำหรับเฝ้า DirectAdmin server — read-only commands บวก block/unblock IP เท่านั้น ไม่เปิด port ไม่เพิ่ม service และจำกัด blast radius ด้วย least-privilege ทุกชั้น

ปรับแต่ง ModSecurity บน DirectAdmin ให้พอใช้จริงกับ shared host
รวม 4 ส่วนที่ผมเพิ่มเข้าไปเหนือ DA default — exclusion ก่อน CRS, credscan ban 1 hit, แก้ MODSEC_LOG path ที่ DA ship ผิด และ self-heal cron กัน rebuild ทับ

ย้าย DA ตอนจบ — security fixes + hardening หลังเครื่องนิ่ง
ปิดท้ายซีรีส์ย้าย DirectAdmin ข้ามดิสโทร ด้วยงาน security ที่ทำหลังเครื่องนิ่งแล้ว — sudoers wildcard CVE, OpenSSL SECLEVEL, ModSec exclusion ก่อน CRS, csfpost drop-in และ 5 ชั้นรอด DA update

ปลด CSF block อัตโนมัติ คัด ghost device ออกจาก botnet brute force
เคสจริงบนเซิร์ฟเวอร์ DA shared host ที่ ghost device ในออฟฟิศทำให้ทั้งออฟฟิศโดน CSF block ทุกเช้า ผมเล่าวิธีทำ auto-unblock 4 ชั้น ที่แยกเครื่องในออฟฟิศออกจาก botnet ได้โดยไม่เผลอปลด attacker

OpenClaw กับ VSCode + AI Agent ต่างกันยังไง แล้วใครควรใช้อะไร
เทียบ AI Agent สองสายที่ยกระดับ AI จากแชทบอทมาเป็นผู้ช่วยที่ลงมือทำงานจริง — สายเกตเวย์บนแชทแอปอย่าง OpenClaw กับสายฝังใน editor อย่าง VSCode + AI Agent ทั้งวิธีทำงาน ค่าใช้จ่าย token และความปลอดภัยที่มือใหม่ต้องรู้