ตั้งค่าความปลอดภัยให้เวิร์ดเพรส

wordpress-security

ปรับปรุงล่าสุด: 4 พ.ค. 2017

ปัจจุบันเว็บเริ่มมีระบบหลังบ้านไว้แก้เนื้อหา (Content Management System: CMS) เป็นมาตรฐานกันแล้ว เว็บที่เขียน CMS เอง ก็เจอปัญหาแบบนึง (คือมักจะเขียนไม่รอบคอบทันยุค) ส่วนเว็บที่ใช้ CMS มาตรฐาน เช่น WordPress ก็เจอปัญหาอีกแบบนึง (คือเค้าเขียนมารอบคอบ แต่เราอัพเดทไม่ทัน หรือตั้งค่าไม่รอบคอบ)

จากประสบการณ์เคยทำเว็บใหญ่ๆ ด้วย WordPress แล้วโดนโจมตีเป็นประจำ (แต่ไม่เคยโดยแฮคนะ :D) พบว่าสิ่งที่ควรทำเพื่อเพิ่มความปลอดภัยให้เว็บของเรามีดังนี้

วิธีเบื้องต้น

  • ตั้งรหัสผ่านให้ยาก ไม่มีใน Dictionary ลองค้นคำว่า password generator จะเจอเว็บที่ช่วยตั้งรหัสผ่านยากๆ ให้ ส่วนตัวผมเองจะตั้งรหัสแต่ละเว็บไม่ซ้ำกัน แต่มีการใช้โค้ดส่วนตัว เช่น อิงจากเว็บ/โดเมน/ชื่อลูกค้า/ปีที่ทำ/ชื่อย่อบางอย่าง/รหัสพิเศษบางอย่าง ฯลฯ ผสมออกมาเป็นรหัสผ่านของเว็บนั้นๆ
  • อย่าใช้ user ชื่อ admin – อันนี้โดนคนสุ่มรหัสผ่านมามั่วตลอด
  • ลงปลั๊กอินกันคนมั่วล็อกอิน ปี 2017 นี้แนะนำ Invisible reCaptcha for WordPress

วิธีมาตรฐาน

  • ติดตั้งปลั๊กอินที่ช่วยดูแลเรื่องความปลอดภัย หลังจากลองใช้มาหลายตัว คิดว่า Wordfence ตัวฟรีนั้นก็เหลือเฟือแล้ว ตั้งค่าง่าย ระบบจะคอยบล็อกคนที่สุ่มรหัสผ่านมา ถ้าใส่รหัสผิดหลายครั้งก็จะโดนบล็อกไประยะหนึ่ง, มีระบบ Scan โค้ดต่างๆ ในเว็บไซต์ว่าอันไหนน่าจะมีปัญหาบ้าง, อันไหนถูกดัดแปลงไปแล้วบ้าง ฯลฯ (เพิ่มเติม มิ.ย. 2559: แต่ปัจจุบันผมจะไม่เปิด Wordfence ไว้ตลอดนะครับ เพราะกินทรัพยากรพอควร ใช้ Jetpack ก็แทบไม่เจอปัญหาแล้ว นานๆ มาเปิดเพื่อสั่ง scan ทีก็พอครับ)
  • ตั้ง Permission ของไฟล์ใน FTP ถูกต้อง ไม่ควรตั้ง 777 ไปซะหมด ถ้าตั้งค่า Hosting ดีๆ (เช่น ปรับค่าเจ้าของไฟล์ให้ถูกต้อง หรือใช้ VestaCP เป็น Control Panel) จะไม่จำเป็นต้องมี Folder ไหนเป็น 777 เลย คนอื่นจะแอบเอาไฟล์มาฝังได้ยาก
  • พยายามอย่าใช้ FTP ให้ใช้ sFTP แทน (Hosting ทั่วไปก็มักจะเปิดให้ทั้งคู่แหละ) เพราะถ้าใช้ FTP เวลาส่งค่าต่างๆ จะมีคนมาดักจับรหัสไปได้

วิธีที่ซับซ้อนขึ้น

  • สำหรับเว็บใหญ่ๆ ที่มีคนไล่เจาะจริงจัง (ที่ผมเคยทำโดยใช้ WordPress ก็เช่น Chula.ac.th กับ Majorcineplex.com ก่อนเวอร์ชั่นปัจจุบัน) ก็ควรตั้งค่าว่า ถ้าจะเข้าหลังบ้าน ต้องเจอรหัสผ่านอีกชุดไปเลย ซึ่งทำโดยไปตั้งค่า .htaccess ใหม่ (ลองดูบล็อก Password Protect your WordPress Admin Folder)
  • บล็อกตั้งแต่ระดับ Hosting เลยว่า IP ที่จะให้เข้ามาหลังบ้านได้ ต้องมาจากประเทศที่ตั้งไว้เท่านั้น (ต้องตั้งค่าระดับเน็ตเวิร์ค, จะใช้ Wordfence ตัวเสียเงินก็พอได้)
  • อย่าใช้ Server ร่วมกับใคร (Shared Hosting) ควรแยกเป็น VPS ของตัวเองไป เวลาตัวอื่นโดนแฮค จะได้ไม่กระทบเว็บเราด้วย

สำหรับเว็บที่โดนแฮ็ค / ติด Malware / โดน Google ป้ายสีแดงก่อนเข้าเว็บ

บทความนี้สรุปไว้ครบ “How to Clean a Hacked WordPress Site using Wordfence” ซึ่งมีหลายวิธีมาก หลักๆ คือหาทางลงปลั๊กอิน Wordfence ให้ได้ แล้วสั่ง scan ซะ มันจะจัดการให้เรียบร้อย ส่วนถ้าโดน Google ป้ายสี ก็มีวิธีจัดการอยู่ คือต้องลง Google Webmaster Tools ให้ได้ แล้วส่งเรื่องให้ google มาเช็คอีกที

ที่ผมเคยไปช่วยเค้าแก้ปัญหา Malware พบว่าถ้า Scan เสร็จ เคลียร์ malware เรียบร้อย ส่งเรื่องให้ Google มาเช็ค ประมาณ 1 วันเว็บก็ไม่ติดคำเตือนสีแดงละ

สนใจความรู้เพิ่มเติม

ค้นจากคำว่า WordPress Security จะพบอีกมาก ถ้ามีประเด็นไหนน่าสนใจก็มาแชร์ในคอมเม้นท์กันได้นะคร้าบ

เพิ่มเติม: 3 ก.ค.

คุณ Suthee แชร์เพิ่มว่าปลั๊กอิน All In One WP Security & Firewall นั้นก็น่าสนใจ ค่อนข้างครบถ้วน มีตัวเล่นเยอะ กับแนะนำว่า ควรปิด XML-RPC ด้วย เพราะ เป็นฐานให้คนอื่นมาใช้ยิงเว็บต่างๆ ได้ ซึ่งเท่าที่ผมลองหา คิดว่าใช้ปลั๊กอิน Disable XML-RPC Pingback ก็สะดวกดีครับ