การตั้งค่าเบื้องต้นเพื่อป้องกันบอทสแกนหาช่องโหว่ (Vulnerability Scanning)
การโจมตีเว็บไซต์จำนวนมากในปัจจุบันไม่ได้เริ่มต้นจากแฮ็กเกอร์ที่นั่งไล่เจาะระบบด้วยตนเอง แต่เริ่มจาก “บอท” หรือสคริปต์อัตโนมัติที่ทำหน้าที่สแกนหาช่องโหว่ทั่วไปในเว็บไซต์และเซิร์ฟเวอร์ หากไม่มีการตั้งค่าเพื่อ ป้องกันบอทสแกนเว็บ อย่างเหมาะสม เว็บไซต์อาจถูกค้นพบจุดอ่อนและถูกโจมตีต่อเนื่อง เช่น การฝังโค้ดอันตราย การขโมยข้อมูล หรือการยึดเซิร์ฟเวอร์ไปใช้โจมตีระบบอื่น
บทความนี้จะเป็น “คลังความรู้” ด้านการตั้งค่าพื้นฐานที่เจ้าของเว็บไซต์ ผู้ดูแลระบบ และทีม IT สามารถนำไปปรับใช้ได้จริง เพื่อช่วยลดโอกาสที่บอทสแกนหาช่องโหว่จะเข้าถึงระบบของคุณได้ง่ายจนเกินไป
ทำความเข้าใจกับบอทสแกนหาช่องโหว่ และความเสี่ยงที่ตามมา
บอทสแกนคืออะไร และทำงานอย่างไร
บอทสแกนหาช่องโหว่ (Vulnerability Scanner Bot) คือโปรแกรมอัตโนมัติที่เดินทางไปตาม IP และโดเมนต่างๆ เพื่อค้นหาข้อมูล เช่น
- หน้า Login มาตรฐาน เช่น
/wp-login.php,/administrator/,/login - ไฟล์หรือโฟลเดอร์ที่มักมีข้อมูลสำคัญ เช่น
.env,backup.zip,phpinfo.php - ช่องโหว่ที่รู้จักแล้ว (Known Vulnerabilities) ของ CMS, Plugin หรือ Framework รุ่นเก่า
- ช่องโหว่จากการตั้งค่า Web Server ไม่เหมาะสม เช่น แสดง Error รายละเอียดมากเกินไป
หากระบบไม่มีแนวป้องกันพื้นฐาน บอทเหล่านี้จะลองโจมตีต่อ เช่น Brute Force Password, SQL Injection, RCE หรือการอัปโหลดไฟล์อันตราย
ความเสี่ยงหากไม่ป้องกันบอทสแกนเว็บ
- เว็บไซต์ถูกยึดครองเพื่อนำไปส่งสแปม หรือทำ Phishing
- ข้อมูลลูกค้าถูกขโมย เช่น อีเมล เบอร์โทร หรือข้อมูลส่วนบุคคลอื่น
- ทรัพยากรเซิร์ฟเวอร์ถูกใช้ทำ Botnet หรือโจมตีระบบอื่น (DDoS)
- อันดับ SEO และความน่าเชื่อถือของแบรนด์เสียหาย หากมีเนื้อหาอันตรายหรือมัลแวร์บนเว็บไซต์
การตั้งค่าเชิงป้องกันตั้งแต่ระดับเซิร์ฟเวอร์ไปจนถึงระดับแอปพลิเคชัน ช่วยลดโอกาสที่บอทจะพบช่องโหว่ได้ตั้งแต่ต้นทาง และลดความเสี่ยงที่ระบบจะถูกเจาะในระยะยาว
แนวคิดพื้นฐาน: Security by Configuration ก่อน Security by Tools
ก่อนจะใช้เครื่องมือขั้นสูงอย่าง WAF หรือระบบ AI ตรวจจับภัยคุกคาม การตั้งค่าพื้นฐานที่ดีถือเป็น “ด่านแรก” ที่ควรจัดการให้เรียบร้อย แนวคิดคือทำให้บอททำงานได้ยากขึ้นตั้งแต่เริ่มต้น และลดข้อมูลที่เปิดเผยโดยไม่จำเป็น
หลักคิด 3 ข้อในการป้องกันบอทสแกนเว็บ
- ลดข้อมูลที่เปิดเผย – ไม่บอกเวอร์ชันซอฟต์แวร์ โครงสร้างโฟลเดอร์ หรือรายละเอียด Error
- ซ่อนจุดที่คาดเดาได้ง่าย – เปลี่ยน URL มาตรฐาน ปิดหน้าและไฟล์ที่ไม่จำเป็น
- จำกัดพฤติกรรมผิดปกติ – บล็อก IP หรือ User-Agent ที่มีการสแกนผิดปกติหรือยิงคำขอถี่
การตั้งค่าระดับ Web Server เพื่อป้องกันการสแกน
1. ปรับแต่งไฟล์ .htaccess (สำหรับ Apache)
หากเว็บไซต์ใช้ Apache การปรับแต่ง .htaccess จะช่วย ป้องกันบอทสแกนเว็บ ได้ในระดับหนึ่ง โดยแนวทางที่นิยม ได้แก่:
- ซ่อนโครงสร้างโฟลเดอร์ (Disable Directory Listing)
ปิดการแสดงรายชื่อไฟล์ในโฟลเดอร์:
Options -Indexes - บล็อกการเข้าถึงไฟล์สำคัญ
เช่น ไฟล์ Config, Backup, หรือไฟล์ระบบ:
<FilesMatch "\.(env|sql|ini|log|sh|bak|backup)$"> Order allow,deny Deny from all </FilesMatch> - จำกัดการสแกนจาก User-Agent ที่ไม่พึงประสงค์
กรณีเจอ User-Agent แปลกๆ ที่พยายามสแกน:
BrowserMatchNoCase "acunetix" bad_bot BrowserMatchNoCase "sqlmap" bad_bot Order Allow,Deny Allow from all Deny from env=bad_bot
การตั้งค่าเหล่านี้ไม่สามารถหยุดการสแกนได้ทั้งหมด แต่ช่วยลดความง่ายในการเข้าถึงไฟล์ที่มักตกเป็นเป้าหมาย
2. การตั้งค่า Nginx เพื่อเสริมความปลอดภัย
สำหรับเซิร์ฟเวอร์ที่ใช้ Nginx สามารถเพิ่มกฎใน Server Block เช่น:
- ปิดการเข้าถึงไฟล์ซ่อนและไฟล์ระบบ
location ~ /\.(git|svn|htaccess|env) { deny all; } - บล็อกไฟล์สำรองหรือสคริปต์ตรวจสอบระบบ
location ~* \.(bak|backup|sql|sh|log)$ { deny all; } - จำกัดการสแกนแบบถี่ผิดปกติ
สามารถใช้ limit_req หรือ fail2ban ร่วมกัน เพื่อจำกัดจำนวนคำขอในช่วงเวลาหนึ่ง
ซ่อนรายละเอียดระบบและช่องโหว่ที่ถูกสแกนบ่อย
3. ปิดการโชว์ Error รายละเอียดมากเกินไป
ข้อความ Error ที่แสดงรายละเอียดโค้ดหรือ Query สามารถบอกข้อมูลเชิงลึกแก่บอทได้ เช่น โครงสร้างฐานข้อมูล ไฟล์ที่ใช้เรียก การตั้งค่า Framework ตัวอย่างแนวทาง:
- ใน PHP: ตั้งค่า
display_errors = Offแล้วใช้error_logแทนการแสดงบนหน้าเว็บ - ใน Framework: ใช้โหมด Production/Live เพื่อไม่แสดง Stack Trace
การจัดการ Error อย่างถูกต้อง ช่วย ป้องกันบอทสแกนเว็บ จากการเก็บข้อมูลเบื้องต้นเกี่ยวกับระบบของคุณ
4. ปิดการเข้าถึงไฟล์/โฟลเดอร์ของระบบโดยตรง
ไฟล์บางประเภทไม่ควรถูกเรียกจากภายนอกโดยตรง เช่น
- โฟลเดอร์
/vendor,/node_modules - ไฟล์
composer.json,package.json,webpack.config - ไฟล์สคริปต์ทดสอบหรือไฟล์เก่า เช่น
test.php,old/
ควรใช้การย้ายไฟล์เหล่านี้ออกนอก Web Root หรือใช้ Web Server บล็อกการเข้าถึงจากภายนอก
การใช้ Robots.txt และ Security Headers อย่างรอบคอบ
5. Robots.txt: ป้องกันไม่ให้กลายเป็นแผนที่ให้บอทโจมตี
ไฟล์ robots.txt มีไว้กำหนดว่า Search Engine ใดบ้างที่ควรหรือไม่ควรเข้าถึงส่วนใดของเว็บไซต์ อย่างไรก็ตาม บอทที่ประสงค์ร้ายมักใช้ไฟล์นี้เป็นแหล่งข้อมูลค้นหาโฟลเดอร์สำคัญ
- หลีกเลี่ยงการ Disallow โฟลเดอร์อ่อนไหวที่มีข้อมูลสำคัญอย่างชัดเจน
- ใช้ Robots.txt สำหรับจัดการ SEO เป็นหลัก ไม่ใช่ระบบความปลอดภัย
- อย่าหวังพึ่ง Robots.txt เป็นวิธี ป้องกันบอทสแกนเว็บ เพราะบอทอันตรายมักไม่ปฏิบัติตาม
6. เพิ่ม Security Headers เพื่อจำกัดการโจมตี
แม้จะไม่ใช่การบล็อกบอทโดยตรง แต่ Security Headers ช่วยลดผลกระทบจากช่องโหว่หลายรูปแบบ เช่น XSS หรือ Clickjacking
Content-Security-Policy– จำกัดแหล่งที่มาของ Script, CSS, MediaX-Frame-Options: SAMEORIGIN– ป้องกันการฝังหน้าเว็บใน iframe ที่ใช้โจมตีX-Content-Type-Options: nosniff– ป้องกันการเดา MIME Type อัตโนมัติReferrer-Policy– จำกัดข้อมูล Referrer ที่ส่งออกไป
ลดจุดอ่อนจาก CMS ยอดนิยม เช่น WordPress
7. ซ่อน URL และข้อมูลที่บอทนิยมสแกนใน WordPress
หากใช้งาน WordPress บอทมักจะเริ่มจาก
/wp-login.php,/xmlrpc.php- หน้าแสดงเวอร์ชัน / Readme
- Plugin/Theme ที่มีช่องโหว่เก่า
แนวทางลดความเสี่ยง:
- เปลี่ยน URL หน้า Login ให้ไม่ใช่ค่าเริ่มต้น (ผ่าน Plugin หรือ Custom Rewrite)
- ปิดการใช้งาน
xmlrpc.phpหากไม่จำเป็น - ลบไฟล์
readme.htmlหรือลดการเปิดเผยรายละเอียดเวอร์ชัน - อัปเดต Core, Plugin, Theme อย่างสม่ำเสมอ เพื่อลดช่องโหว่ที่รู้จักแล้ว
การจัดการจุดพื้นฐานเหล่านี้ช่วยลดโอกาสที่บอทจะเจอช่องโหว่สำเร็จรูปที่รู้จักในฐานข้อมูลของเครื่องมือสแกน
การตรวจจับพฤติกรรมบอท และตั้งค่าจำกัดการเข้าถึง
8. ใช้ Rate Limiting และ IP Blocking เชิงพฤติกรรม
เครื่องมือสแกนมักยิง Request จำนวนมากในช่วงเวลาสั้นๆ ไปยังหลาย URL พร้อมกัน การตั้งค่า Rate Limit และการตรวจจับพฤติกรรมผิดปกติจึงเป็นแนวทางสำคัญ เช่น
- จำกัดจำนวนคำขอจาก IP เดียวต่อ 1 นาที
- บล็อก IP ที่มี Pattern การยิงไปยังไฟล์หรือโฟลเดอร์ที่ไม่มีอยู่จริงจำนวนมาก
- ใช้ Fail2Ban หรือระบบ Log-based Blocking วิเคราะห์ Log และบล็อก IP อัตโนมัติ
แม้การบล็อก IP จะไม่สมบูรณ์ (เพราะบอทเปลี่ยน IP ได้) แต่ช่วยลดภาระเซิร์ฟเวอร์และตัดบอทระดับพื้นฐานออกไปได้มาก
9. ใช้ Web Application Firewall (WAF) เสริมด่านป้องกัน
WAF ช่วยกรองทราฟฟิกที่น่าสงสัยก่อนถึงแอปพลิเคชัน ตัวอย่างการใช้งานที่เกี่ยวข้องกับการ ป้องกันบอทสแกนเว็บ ได้แก่
- บล็อก Signature ของเครื่องมือสแกนที่รู้จัก เช่น SQLMap, Nikto, Acunetix
- ตรวจจับ Pattern ของ URL ที่น่าจะเป็นการสแกนโฟลเดอร์หรือไฟล์เฉพาะ
- กรอง Request ที่มี Payload น่าสงสัย เช่น Query แปลกๆ ในพารามิเตอร์
ทั้ง WAF ที่อยู่ในระดับ Cloud (เช่น ผ่านผู้ให้บริการ CDN/WAF) หรือระดับเซิร์ฟเวอร์ ต่างช่วยเพิ่มชั้นการป้องกันก่อนถึงตัวแอปพลิเคชันจริง
แนวทางปฏิบัติที่ควรทำเป็นประจำ ร่วมกับการตั้งค่า
10. ตรวจสอบ Log เพื่อหา Pattern การสแกน
การดู Access Log และ Error Log อย่างสม่ำเสมอ จะช่วยให้คุณเรียนรู้ว่าบอทกำลังมองหาอะไรในเว็บไซต์ เช่น
- บอทยิงไปยังไฟล์ที่ไม่มีอยู่จริง แต่ชื่อไฟล์สื่อถึง CMS หรือ Plugin บางตัว
- พยายามเข้าถึง
.env,phpinfo.php,config.phpหรือโฟลเดอร์สำรอง - ยิงไปยัง URL แปลกๆ เช่น
/wp-admin/ทั้งที่เว็บไซต์ไม่ได้ใช้ WordPress
เมื่อรู้ Pattern แล้วสามารถเพิ่มกฎใน Web Server หรือ WAF เพื่อบล็อกหรือจำกัดการเข้าถึงได้ตรงจุดมากขึ้น
11. อัปเดตซอฟต์แวร์และปลั๊กอินอย่างสม่ำเสมอ
ไม่ว่าคุณจะตั้งค่า ป้องกันบอทสแกนเว็บ ดีแค่ไหน หากใช้ซอฟต์แวร์เวอร์ชันเก่าที่มีช่องโหว่ชัดเจน เมื่อบอทพบเวอร์ชันที่ตรงกับฐานข้อมูลช่องโหว่ ก็ยังสามารถโจมตีสำเร็จได้ ดังนั้นจึงควร
- อัปเดต CMS (เช่น WordPress, Joomla, Drupal) อย่างสม่ำเสมอ
- ใช้เฉพาะ Plugin/Theme/Extension ที่ยังมีการพัฒนาและอัปเดตต่อเนื่อง
- อัปเดตเวอร์ชัน PHP, Database Server และ Library ที่เกี่ยวข้องตามรอบที่ปลอดภัย
การป้องกันที่ดี ประกอบด้วยการตั้งค่าระบบให้รัดกุม ควบคู่กับการอัปเดตซอฟต์แวร์ และการเฝ้าระวัง Log อย่างสม่ำเสมอ เพื่อให้คุณเห็นภาพรวมและตอบสนองต่อภัยคุกคามได้ทันท่วงที
📌 สรุปขั้นตอนสำคัญที่นำไปใช้ได้ทันที
- ปิด Directory Listing, ปิดการเข้าถึงไฟล์สำคัญ และซ่อนรายละเอียด Error จาก Public
- ใช้การตั้งค่าใน
.htaccessหรือ Nginx เพื่อบล็อกไฟล์และโฟลเดอร์ที่ไม่ควรถูกเข้าถึงจากภายนอก - ระมัดระวังการใช้
robots.txtไม่ให้กลายเป็นแหล่งข้อมูลให้บอทอันตราย - เสริมความปลอดภัยด้วย Security Headers และการซ่อนข้อมูลเวอร์ชันของระบบ
- สำหรับ WordPress ให้เปลี่ยน URL Login, ปิด
xmlrpc.php(หากไม่ใช้) และลบไฟล์ที่เปิดเผยเวอร์ชันระบบ - ตั้งค่า Rate Limiting, ใช้ Fail2Ban หรือเครื่องมือที่คล้ายกัน เพื่อบล็อก IP และพฤติกรรมต้องสงสัยอัตโนมัติ
- พิจารณาใช้ WAF เพื่อกรองทราฟฟิกที่น่าสงสัย และลดโอกาสที่บอทสแกนจะเข้าถึงแอปพลิเคชันโดยตรง
- ตรวจสอบ Access Log/ Error Log เป็นประจำ เพื่อตรวจพบ Pattern การสแกนและปรับกฎป้องกันให้เหมาะสม
- อัปเดต CMS, Plugin, Theme และซอฟต์แวร์บนเซิร์ฟเวอร์ให้ทันสมัย เพื่อลดช่องโหว่ที่ถูกใช้กันอย่างแพร่หลาย
หากดูแลเว็บไซต์หรือระบบให้บริการออนไลน์อยู่ การวางรากฐานการตั้งค่าความปลอดภัยที่ดีตั้งแต่วันนี้ จะช่วยลดภาระและความเสียหายในระยะยาวได้มาก หากบทความนี้เป็นประโยชน์ ขอเชิญกลับมาติดตามความรู้ด้านความปลอดภัยระบบ เว็บไซต์ และโครงสร้างพื้นฐานดิจิทัลเพิ่มเติม และสามารถส่งต่อบทความนี้ให้ทีมงานหรือผู้เกี่ยวข้อง เพื่อช่วยกันยกระดับความปลอดภัยของระบบออนไลน์ให้ดียิ่งขึ้นอย่างสุจริตและยั่งยืน




