Skip to content
  • HOME
  • Windows
  • Linux
  • VMware
  • DirectAdmin
  • VestaCP
  • WordPress
  • Utility
  • Security

1412

WordPress ป้องกัน Brute Force wp-login.php ด้วย Nginx Rate Limit

Posted on 4 กันยายน 20204 กันยายน 2020 by 1412
0 Shares
Tweet
Share
Share
Pin

สำหรับท่านที่ตรวจสอบ Log แล้วพบว่ามีการเรียกใช้งาน wp-login.php แบบ POST /wp-login.php จำนวนมากๆ และแน่นอน ในวินาทีเดียวกัน ก็จะมีหลาย Req ด้วย เรียกได้ว่าโดน Access แบบรัวๆไม่ยั้ง เพื่อสุ่มรหัสผ่าน Login เข้าสู่ระบบ WordPress ของเรานั่นเอง

สำหรับท่านที่ใช้ Cloudflare CDN อยู่แล้ว สามารถดูวิธีป้องกันได้จากลิงก์นี้ครับ https://xvlnw.com/topic/370

แต่สำหรับผู้ที่ไม่ได้ใช้งาน Cloudflare เราสามารถใช้งานการตั้งค่า Limit Req ใน Nginx ช่วยได้ครับ โดยหลักการก็คือ เราจะทำการ Limit การเรียกใช้งาน wp-login.php ไม่ให้โดนเรียกเร็วเกินไป หรือเกินกว่าที่ควรจะเป็น โดยตั้งสมติฐานว่า หากเราเป็นผู้ใช้งานทั่วไป เรียกหน้า wp-login.php พิมพ์ User + Pass แล้วก็ Login น่าจะใช้เวลาเร็วสุด ราวๆ 5 – 10 วินาที เพราะฉะนั้น หากเร็วกว่านี้ แสดงว่าเป็นบอทแน่นอน มาดูการตั้งค่ากันเลยครับ

เพิ่ม Limit zone ในส่วนของ http { } โดนค่า 10r/m คือ 10 Req/นาที หรือ 6 Req/วินาที

http{

# เก็บ Log
error_log            /var/log/nginx/error.log warn;
...
# Limits
    limit_req_log_level  warn;
    limit_req_zone       $binary_remote_addr zone=login:10m rate=10r/m;
...
}

เพิ่ม Rule ที่ต้องการเรียกใช้ limit_req ไว้ในส่วนของ server{ … } แนะนำให้วางไว้ก่อน location / หรือแล้วแต่การวาง Config ของแต่ละคนนะครับ

server{
...
# WordPress: throttle wp-login.php
location = /wp-login.php {
    limit_req zone=login burst=2 nodelay;
    # ส่ง Req ไปยัง Backend
    #proxy_pass http://127.0.0.1:8000 // กรณีใช้ Nginx + Apache หรือ Upstream Backend
    #fastcgi_pass unix:/var/run/php/php7.4-fpm.sock; // กรณีใช้ Nginx + PHP-FPM
    # 
}

location / {
...
}
..
}

ทดสอบ Rule ด้วย nginx -t และโหลด Config ด้วย nginx -s reload ตามลำดับ

วิธีการทดสอบ เราสามารถใช้ curl ทดสอบได้ด้วยคำสั่งนี้ โดยเรียกซ้ำๆหลายๆครั้ง เราจะเห็นว่า http status ที่ Return กลับมาจะไม่ใช่ 200 จนกว่าเวลาจะถึงที่อนุญาตให้เรียกใช้งาน ตามที่เรากำหนดไว้

curl -I http://domain.com/wp-login.php

อาการก็จะประมาณนี้ครับ

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

สำหรับ Nginx Rate Limit ยังสามารถนำเอาไปปรับปรุงใช้กับ Page อื่นๆที่ไม่ต้องการให้เรียกถี่เกินไปก็ได้นะครับ แล้วแต่ว่าระบบเราจะออกแบบไว้แบบไหน ซึ่งก็ถือว่ามีประโยชน์มากๆครับกับ Feature นี้

1412

Blog ส่วนตัว ที่จะแชร์เรื่องร่าวต่างๆที่พบเจอมา จากประสบการณ์จริง เพื่อเป็นประโยชน์ต่อสังคมและผู้ที่กำลังศึกษาหาความรู้เรื่องต่างๆ ไม่ว่าจะเป็น Server, Network, Security, ทำเว็บไซต์, เขียนโปรแกรม, ฯลฯ ขอบคุณทุกๆการติดตามครับ 😉

★ บริการ Cloud Server ★

0 Shares
Tweet
Share
Share
Pin

Related posts:

วิธีป้องกัน WordPress Brute Force Attack ด้วย Cloudflare Rule Wordpress on Udemyวิธีการป้องกัน WordPress โดนแฮก [Hack WordPress] ด้วย WordPress Plugin Default Thumbnailป้องกัน XSS Protection ด้วย .htaccess Default ThumbnailDirectAdmin ป้องกัน Spam Email ด้วย SpamAssassin, Easy Spam Fighter และ BlockCracking
Posted in Security, Wordpress Tagged Nginx Rate Limit, Wordpress Attack wp-login.php, Wordpress โดน Hack
Previous
Next

ป้ายกำกับ

Apache CloudFlare Cloudflare LiteSpeed Enterprise for Wordpress Cloudflare Wordpress Caching Cloud Wordpress Hosting dig DNSSEC คืออะไร DNS Server FastCGI Flash Player Google PageSpeed สำหรับ SEO Inodes คืออะไร Let's Encrypt LiteSpeed Enterprise Memcache Nginx nslookup Opcache OpenLiteSpeed OpenLiteSpeed HTTP3 OpenLiteSpeed QUIC Pi-hole Resolve-DnsName SSL SSL ฟรี Update Pi-hole VestaCP VMware VMware Esxi VMware vCenter Server VMware vSphere Client Windows dig Wordpress Wordpress Attack XMLRPC Wordpress Brute Force Attack Wordpress Hosting Wordpress ป้องกัน DDoS Attack XMLRPC Wordpress โดน Hack Wordpress โดนยิง XMLRPC Wordpress โหลดช้า การติดตั้ง VestaCP วิธีการติดตั้ง VestaCP สอน WordPress SEO สอนเพิ่มคะแนน WordPress Google PageSpeed อัพเดต Pi-hole

เรื่องล่าสุด

  • Auto Restart OpenLiteSpeed เมื่อมีการเปลี่ยน Rule ใน .htaccess ใน DirectAdmin
  • วิธีแก้ไขเบราเซอร์ Block Flash Player ให้ทำงานได้
  • dig Windows ใช้คำสั่ง dig ใน Windows
  • การอัพเดต Pi-Hole เวอร์ชั่นล่าสุด
  • cf-edge-cache: cache,platform=wordpress
  • วิธีปิดใช้งาน Swap ใน CentOS
  • คอร์สเรียน WordPress ออนไลน์
  • การซ่อน IP Server ด้วย Cloudflare
  • CentOS 7 ติดตั้ง cwebp library
  • VMware ยกเลิก​ Migration Tasks ที่ค้างอยู่
All rights reserved © 1412