EST. 2026 — บันทึกงานเซิร์ฟเวอร์จริง SYSADMIN · SECURITY · AI · DIRECTADMIN เล่มที่ 01
THE SYSADMIN ALMANAC
หน้าหลัก / แท็ก / Hardening
Hardening

#Hardening

13 บทความ
Security
ไฟล์ลับคุม 600 ครบ แต่ log 0644 ถูกอัปออกนอกเครื่องทุกคืน
Security

ไฟล์ลับคุม 600 ครบ แต่ log 0644 ถูกอัปออกนอกเครื่องทุกคืน

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

#security#logging#backup#offsite
อ่าน 10 นาที·10 ต.ค.
ไฟร์วอลล์ขาออกทำระบบเช็คชื่อโดเมนพัง — root ทดสอบแล้วผ่าน
Security

ไฟร์วอลล์ขาออกทำระบบเช็คชื่อโดเมนพัง — root ทดสอบแล้วผ่าน

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

#firewall#csf#security#networking
อ่าน 9 นาที·10 ต.ค.
เว็บกับคิวคนละผู้ใช้ — mkdir 0700 ฆ่า default ACL ทิ้งทั้งโฟลเดอร์
Linux

เว็บกับคิวคนละผู้ใช้ — mkdir 0700 ฆ่า default ACL ทิ้งทั้งโฟลเดอร์

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

#linux#permissions#posix-acl#php-fpm
อ่าน 9 นาที·9 ต.ค.
เก็บ secret ใน .env แบบเข้ารหัส แล้วถอดอัตโนมัติตอน config โหลด
Security

เก็บ secret ใน .env แบบเข้ารหัส แล้วถอดอัตโนมัติตอน config โหลด

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

#laravel#php#security#encryption
อ่าน 9 นาที·18 ส.ค.
ตรวจ security เว็บ Laravel ที่ deploy แล้ว — ไล่ 3 ชั้นตามลำดับที่ควรแก้
Security

ตรวจ security เว็บ Laravel ที่ deploy แล้ว — ไล่ 3 ชั้นตามลำดับที่ควรแก้

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

#security#hardening#php-fpm#cloudflare
อ่าน 8 นาที·17 ก.ค.
nginx โดน heap overflow ย้อนหลัง 15 ปี — แต่เช็คแค่เวอร์ชันไม่พอ
Security

nginx โดน heap overflow ย้อนหลัง 15 ปี — แต่เช็คแค่เวอร์ชันไม่พอ

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

#security#nginx#cve#vulnerability
อ่าน 9 นาที·16 ก.ค.
audit ความปลอดภัยเซิร์ฟเวอร์ Debian shared-host แบบ read-only — เริ่มยังไงไม่ให้แบนตัวเอง
Security

audit ความปลอดภัยเซิร์ฟเวอร์ Debian shared-host แบบ read-only — เริ่มยังไงไม่ให้แบนตัวเอง

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

#security#hardening#csf#cve
อ่าน 9 นาที·16 ก.ค.
libmodsecurity3 + nginx — exclusion ที่ใช้ได้จริงมีแบบเดียว: ctl:ruleEngine
Security

libmodsecurity3 + nginx — exclusion ที่ใช้ได้จริงมีแบบเดียว: ctl:ruleEngine

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

#modsecurity#nginx#security#firewall
อ่าน 9 นาที·10 ก.ค.
ให้ทีม 7 คน remote เข้า LAN โดยไม่เปิด port — Cloudflare Zero Trust ฉบับทำจริง
Network

ให้ทีม 7 คน remote เข้า LAN โดยไม่เปิด port — Cloudflare Zero Trust ฉบับทำจริง

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

#cloudflare#zero-trust#vpn#remote-access
อ่าน 10 นาที·9 ก.ค.
ทำ Redis แบบ per-user บน DirectAdmin โดยไม่ต้องซื้อ pro_pack
DirectAdmin

ทำ Redis แบบ per-user บน DirectAdmin โดยไม่ต้องซื้อ pro_pack

วิธีติดตั้ง Redis object cache แยกต่อ user บน DirectAdmin shared hosting ด้วย systemd template + unix socket + cgroup limit โดยเขียน provisioning script เองแทน DA panel ที่ต้องใช้ pro_pack license พร้อมสูตรเชื่อม WordPress, Flarum และ Laravel

#redis#cache#directadmin#shared-host
อ่าน 12 นาที·20 พ.ค.
ปรับแต่ง ModSecurity บน DirectAdmin ให้พอใช้จริงกับ shared host
Security

ปรับแต่ง ModSecurity บน DirectAdmin ให้พอใช้จริงกับ shared host

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

#modsecurity#csf#directadmin#custombuild
อ่าน 11 นาที·20 พ.ค.
ย้าย DirectAdmin จาก CentOS 7 ไป Debian 12 บน Proxmox (สารบัญซีรีส์)
DirectAdmin

ย้าย DirectAdmin จาก CentOS 7 ไป Debian 12 บน Proxmox (สารบัญซีรีส์)

บันทึกการย้าย DirectAdmin shared host จาก CentOS 7 (EOL) ไป Debian 12 บน Proxmox ลูกค้า 80+ ราย แตกเป็น 5 ตอน พร้อมภาพรวมขั้นตอนและลิงก์ทุกตอน

#migration#server-migration#directadmin#custombuild
อ่าน 8 นาที·20 พ.ค.
ย้าย DA ตอนจบ — security fixes + hardening หลังเครื่องนิ่ง
Security

ย้าย DA ตอนจบ — security fixes + hardening หลังเครื่องนิ่ง

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

#security#hardening#directadmin#modsecurity
อ่าน 12 นาที·20 พ.ค.