ปลอดภัยอีกขั้น เพิ่ม Layer ด้วยการซ่อน wp-login ให้ WordPress

|
5 นาที ในการอ่าน

การไม่ซ่อนหน้า wp-login.php ในเว็บไซต์ WordPress บน Production เป็นประเด็นที่สำคัญในด้านความปลอดภัย แม้ว่าจะเป็นเพียงหนึ่งในหลาย ๆ มาตรการที่ควรนำมาปฏิบัติ การซ่อนหน้า wp-login.php สามารถช่วยลดความเสี่ยงจากการโจมตีแบบ Brute Force ซึ่งเป็นการพยายามสุ่มรหัสผ่านเพื่อเข้าสู่ระบบ นอกจากจะเพิ่มความเสี่ยงต่อการถูกแฮกแล้ว ยังอาจทำให้เซิร์ฟเวอร์ทำงานหนักขึ้นจากการโจมตีด้วยการสุ่มรหัสผ่านอย่างต่อเนื่อง

หากต้องการเปิดหน้า wp-login.php เอาไว้ก็สามารถทำได้ แต่ควรมีการตั้งค่าจำกัดจำนวนครั้งในการพยายามเข้าสู่ระบบ และหากเกินจำนวนที่กำหนดก็สามารถตั้งค่าให้แบน IP ได้ วิธีนี้ดีกว่าการเปิดไว้โดยไม่มีการจำกัดอะไรเลย เนื่องจาก bot มักจะวิ่งหา wp-login.php โดยอัตโนมัติและพยายามเข้าสู่ระบบ หากเราเปลี่ยน URL ของหน้าล็อกอิน ก็จะช่วยถ่วงเวลาให้ bot หาหน้าล็อกอินได้ยากขึ้น ซึ่งช่วยเพิ่มความปลอดภัยให้กับเว็บไซต์ได้มากขึ้น

คำแนะนำเรื่องการป้องกัน Brute Force จาก WordPress

โดยตามคำแนะนำเป็นทางการของ WordPress เรื่องการป้องกัน Brute Force แนะนำให้ทั้งหมดดังนี้

  1. เปลี่ยน URL การเข้าสู่ระบบ – เปลี่ยน URL จาก wp-login.php เพื่อหลีกเลี่ยงการโจมตีโดยตรง
  2. ใช้รหัสผ่านที่แข็งแกร่ง – สร้างรหัสผ่านที่คาดเดายากและเปลี่ยนรหัสผ่านบ่อยๆ
  3. จำกัดความพยายามในการเข้าสู่ระบบ – ใช้ปลั๊กอินที่ช่วยจำกัดจำนวนครั้งในการเข้าสู่ระบบที่ล้มเหลว
  4. ใช้ระบบการยืนยันตัวตนแบบสองขั้นตอน – เพิ่มความปลอดภัยโดยการใช้ระบบยืนยันตัวตนแบบสองขั้นตอน (2FA)
  5. บล็อก IP ที่น่าสงสัย – บล็อก IP ที่มีพฤติกรรมน่าสงสัยเพื่อป้องกันการโจมตี
Prompt Login จากการเปิดใช้ .htpasswd
Prompt Login จากการเปิดใช้ .htpasswd

วิธีการสร้าง .htpasswd เพื่อป้องกันการเข้าถึง wp-login โดยตรง

วิธีการซ่อนการเข้าถึง wp-login.php โดยไม่ต้องลง Plugin เพิ่ม ซึ่งแนะนำจาก WordPress Best Practice เพียงแค่เขียนโค้ดไม่กี่บรรทัด โดยเราจะสร้าง Layer อีกหนึ่งชั้นเพื่อป้องกันการเข้าถึงหน้าล็อกอิน ด้วยการใช้ความสามารถจาก AppServe และ NGINX

ทุกครั้งที่เข้าหน้า wp-login.php จะมี Prompt Login เด้งขึ้นมาเพื่อให้กรอกรหัสผู้ใช้ และรหัสผ่านขึ้นมา โดยถ้ากรอกผิดจะทำให้ไม่สามารถเข้าไปยังหน้าล็อคอินของ WordPress ได้ วิธีการตั้งค่าจะต้องทำการสร้าง .htpasswd และแก้ไขไฟล์ .htacess ร่วมกัน

ขั้นตอนแรกต้องสร้าง .htpasswd โดยสามารถคลิกที่ ลิงก์ นี้

ตัวสร้าง .htpasswd
ตัวสร้าง .htpasswd

กรอกรหัสผู้ใช้ และรหัสผ่านที่ใช้ในการยืนยันตนสำหรับใช้ใน Prompt Login และจากน้ันให้เลือก ​Bcrypt (Apache v2.4 onwards ) กดปุ่ม Create .htpasswd file แล้วจะได้ text ชุดนึงมา ซึ่งมีลักษณะเหมือนด้านล่าง

demo:$2y$10$mHPbKdzE4up1TsWmaKurCeJQmPMeMeIiMHc7hQL5jJ64PbA1mAOIu
directory ที่นำไปวาง .htpasswd
directory ที่นำไปวาง .htpasswd
วาง generate text ที่ไฟล์

สร้างไฟล์ “.htpasswd” ขึ้นมา ที่ root directory ของ Host สังเกตได้ว่าจะเป็นที่เดียวกับ .htaccess ที่ไฟล์ WordPress สร้างมาให้เราตั้งแต่แรก จากนั้นให้นำชุด Text ที่ได้จากการ Generate ที่ได้ไปใส่ไว้ที่ไฟล์ .htpasswd และไปสู่ขั้นตอนถัดไป

แก้ไขไฟล์ .htacess กำหนดเงื่อนไข ให้ prompt login ก่อนการเข้าถึง wp-login เท่านั้น

หากเซิฟเวอร์ใช้ Apache ให้นำโค้ดนี้ไปวางไว้ด้านบนสุด ที่ไฟล์ .htaccess โดยโค้ด tag <Files wp-login.php> จะเป็นตัวกำหนดว่า ถ้าใครเข้า URL นี้ จำเป็นต้องล็อคอินก่อนเท่านั้น

# เริ่มการตั้งค่าการป้องกันไฟล์ wp-login.php
<Files wp-login.php>
    # ระบุไฟล์ที่เก็บข้อมูลผู้ใช้และรหัสผ่าน
    AuthUserFile ~/.htpasswd
    
    # ระบุชื่อที่จะแสดงเมื่อขอให้ผู้ใช้ใส่ข้อมูลการเข้าสู่ระบบ
    AuthName "Private access"
    
    # กำหนดประเภทการยืนยันตัวตนเป็น Basic
    AuthType Basic
    
    # ระบุชื่อผู้ใช้ที่ได้รับอนุญาตให้เข้าถึงไฟล์ wp-login.php
    # demo = user ที่เราสร้างขึ้นมา
    require user demo
</Files>

.htaccess

สำหรับ NGINX ให้นำโค้ดด้านล่างไปใส่ไว้ใน nginx.conf แทนซึ่งจะทำงานแบบเดียวกัน

location /wp-login.php {
    auth_basic "Private access";         # ข้อความที่จะแสดงในกล่องการยืนยันตัวตน
    auth_basic_user_file .htpasswd;      # ไฟล์ที่เก็บข้อมูลชื่อผู้ใช้และรหัสผ่าน
}

nginx.conf

ปัญหาที่เจอบ่อยคือ .htacess ไม่พบเจอตัว .htpasswd ซึ่งขึ้นอยู่กับเซิฟเวอร์นั้นๆ บางที่ใช้ . (จุด = ตำแหน่งปัจจุบันที่อยู่ไฟล์เดียวกับ .htaccess) ก็เจอแล้ว หรือบางที่ต้องกรอก absolute path ของไฟล์นั้นๆ ถึงจะเจอ หากใครไม่ทราบ absolute path สามารถติดต่อผู้ให้บริการเซิฟเวอร์เพื่อช่วยเหลือได้ครับ

ข้อสรุป

โดยหลังจากที่เราวางไฟล์ .htpasswd และแก้ไขไฟล์ .htaccess เรียบร้อยแล้ว เมื่อเราไปเข้าพยายามไปเข้าไปด้านหลังด้วยการพิมพ์ /wp-login.php ตรงๆ หรือเข้าไปยัง /wp-admin ระบบจะทำการดีดออกมาที่ wp-login.php จะเจอหน้าต่าง Prompt เข้าสู่ระบบอยู่ดี ถ้าหากเรากรอกรหัสผู้ใช้ และรหัสผ่านไม่ถูก ก็จะไม่สามารถเข้าถึงหน้าเข้าสู่ระบบของ WordPress ได้ เปรียบเสมือนเกราะป้องกันอีกชั้นนึง

โดยตัว Prompt เข้าสู่ระบบจะไม่ได้กันการ Brute force ได้ 100% ผู้ให้บริการบางเจ้าจึงติดตั้ง Fail2Ban ร่วมด้วยเพื่อเพิ่มระดับความปลอดภัยให้กับระบบ โดย Fail2Ban จะช่วยตรวจสอบและบล็อก IP ที่พยายามโจมตีหรือเข้าสู่ระบบล้มเหลวหลายครั้ง ซึ่งช่วยลดโอกาสที่ผู้โจมตีจะทำการ brute-force สำเร็จ

ซึ่งการป้องกันการโจมตี Brute force เป็นอีกวิธีหนึ่งเท่านั้น ในการทำให้ WordPress ปลอดภัย แต่ยังมีวิธีอีกมากมาย หากคุณสนใจสามารถอ่านรายละเอียดเพิ่มเติมได้ ที่นี่

Designil PDPA Banner Thai Woo AIO Banner
แชร์:
line

author - aum watcharapon
อั้ม วัชรพล
👨🏻‍💻 ผู้เชี่ยวชาญทางด้าน WordPress

Subscribe to newsletter

doaction จะส่งเพื่อแจ้งเตือนเมื่อมีบทความใหม่ๆ ในเว็บไซต์และสามารถกดยกเลิกได้ตลอดเวลา

บทความอื่นๆ

ขนาดไฟล์รูปเล็กส่งผลต่อ SEO อย่างไร ? และเครื่องมือปรับขนาดยอดนิยม

การทำรูปไฟล์ให้เล็กเพื่อใช้บนเว็บไซต์จะมีผลอย่างมากต่อคะแนนของ Core web vitals โดยเฉพาะในส่วนของ Largest Contentful Paint (LCP) ซึ่งเป็นหนึ่งในตัวชี้วัดสำคัญของ Core Web Vitals ที่ Google ใช้ในการจัดอันดับการแสดงผลของ SEO Largest Contentful Paint (LCP) คือ การวัดเวลาที่ใช้ในการโหลดเนื้อหาหลักของหน้าเว็บ ซึ่งรวมถึงรูปภาพ วิดีโอ หรือบล็อกของข้อความขนาดใหญ่ หากรูปภาพที่ใช้ในเว็บไซต์มีขนาดไฟล์ใหญ่เกินไป จะทำให้เวลาในการโหลดเพิ่มขึ้น ส่งผลให้คะแนน LCP ลดลง โดยการย่อไฟล์รูปภาพมีหลายวิธี ตั้งแต่ย่อก่อนที่จะอัพโหลดขึ้นไปยังบนเว็บไซต์ หรือโยนขึ้นไปแล้วให้เว็บไซต์จัดการ โดยแต่ละวิธีมีข้อดีข้อเสีย และเครื่องมือที่แตกต่างกัน นามสกุลไฟล์รูปภาพยอดนิยม ที่ใช้กันบนเว็บไซต์ นามสกุลไฟล์รูปภาพยอดนิยมในยุคเก่าได้แก่ JPG, JPEG, PNG, GIF ซึ่งจะมีขนาดใหญ่กว่า แต่หลังจากนั้นได้พัฒนา SVG, WEBP, AVIF ขึ้นมา โดยจะกล่าวถึงแค่ AVIF และ WEBP ซึ่งเป็นนามสกุลไฟล์รูปภาพที่ทันสมัยและมีข้อดีหลายอย่างที่เหมาะสมกับการใช้งานบนเว็บไซต์ AVIF […]

อ่านต่อ

เปลี่ยน WordPress ให้เป็น Backend ด้วยพลังของ REST API

WordPress ไม่ใช่แค่ระบบสร้างเว็บไซต์หรือเครื่องมือในการจัดการเนื้อหาเท่านั้น แต่ยังมีฟีเจอร์ API ที่ช่วยขยายความสามารถในการพัฒนาและเชื่อมต่อกับระบบอื่นๆ ไม่ว่าคุณจะต้องการสร้างแอปพลิเคชันหรือเชื่อมต่อกับบริการต่างๆ WordPress API สามารถช่วยคุณได้ บทความนี้จะพาคุณทำความรู้จักกับ WordPress API และวิธีการนำไปใช้งานให้เกิดประโยชน์สูงสุด คนเริ่มใช้ WordPress เป็น Backend มากขึ้น ในช่วงไม่กี่ปีที่ผ่านมา การใช้งาน WordPress ในฐานะ Backend กำลังเป็นที่นิยมมากขึ้น สาเหตุหลักมาจากการที่นักพัฒนาเริ่มหันไปใช้ React และ Vue.js ในการสร้าง Frontend และใช้ WordPress API (REST API) นั้นสามารถทำงานร่วมกับ Frameworks เหล่านี้ได้อย่างราบรื่น ทำให้ WordPress ไม่ได้เป็นแค่ระบบจัดการเนื้อหา (CMS) อีกต่อไป แต่กลายเป็นเครื่องมือที่สามารถใช้เป็น Backend ในการเก็บและส่งข้อมูลไปยัง Frontend ได้ WordPress API เริ่มต้นมีอะไรมาให้ใช้บ้าง ? ใน WordPress REST […]

อ่านต่อ

หากมีคำถาม หรือต้องการคำปรึกษาเกี่ยวกับ WordPress

สำนักงาน

  • บริษัท ดู แอคชั่น จำกัด
    66 ซอยเพชรเกษม 98/1, ถนนเพชรเกษม,
    แขวงบางแคเหนือ, เขตบางแค
    กรุงเทพมหานคร
    10160

เราใช้คุกกี้เพื่อสร้างประสบการณ์ที่ดี มีประสิทธิภาพยิ่งขึ้น

ตั้งค่าความเป็นส่วนตัว

คุณสามารถเลือกการตั้งค่าคุกกี้โดยเปิด/ปิด คุกกี้ในแต่ละประเภทได้ตามความต้องการ ยกเว้น คุกกี้ที่จำเป็น

ยอมรับทั้งหมด
จัดการความเป็นส่วนตัว
  • เปิดใช้งานตลอด

บันทึกการตั้งค่า