5 สิ่งจำเป็น: ทำก่อน
- อัปเดตแกนหลักของ WordPress ธีม และปลั๊กอินให้ทันสมัยอยู่เสมอ ปลั๊กอินที่มีช่องโหว่เป็นเวกเตอร์การโจมตีอันดับ 1 เปิดใช้งานการอัปเดตอัตโนมัติของเวอร์ชันย่อย (WordPress 5.6+ ทำสิ่งนี้โดยค่าเริ่มต้น) สำหรับเวอร์ชันหลัก อัปเดตภายใน 7 วันหลังการเปิดตัว สำหรับปลั๊กอิน เปิดใช้งานการอัปเดตอัตโนมัติของตัวที่เชื่อถือได้; ตรวจสอบบันทึกการเปลี่ยนแปลงของปลั๊กอินที่สำคัญด้วยตนเอง
- ใช้รหัสผ่านที่แข็งแกร่งและไม่ซ้ำกันสำหรับทุกบัญชี WordPress โดยเฉพาะของผู้ดูแลระบบ ใช้ตัวจัดการรหัสผ่าน (1Password, Bitwarden) ปิดใช้งานชื่อผู้ใช้ «admin»: สร้างผู้ดูแลระบบใหม่และลบตัวเก่า
- เปิดใช้งานการยืนยันตัวตนสองปัจจัย ใช้ Wordfence Login Security (ฟรี) หรือเครื่องมือสร้าง QR 2FA ของเรากับแอป TOTP ใดก็ได้ 2FA เอาชนะการโจมตีแบบ credential stuffing ได้มากกว่า 99%
- ติดตั้งปลั๊กอินความปลอดภัยที่เชื่อถือได้ Wordfence (เวอร์ชันฟรีเพียงพอสำหรับเว็บไซต์ส่วนใหญ่) หรือ Solid Security อย่าซ้อนกันหลายตัว: พวกมันขัดแย้งกัน ปลั๊กอินจัดการการจำกัดความพยายามเข้าสู่ระบบ การตรวจสอบความสมบูรณ์ของไฟล์ และการสแกนมัลแวร์
- สำรองข้อมูลรายวันนอกเว็บไซต์ UpdraftPlus → Dropbox/Google Drive ทำการสำรองข้อมูลก่อนที่คุณจะต้องการมัน ทดสอบกระบวนการกู้คืนอย่างน้อยหนึ่งครั้ง
10 ข้อถัดไป: มาตรการเพิ่มเติมที่มีผลกระทบสูง
- บังคับใช้ HTTPS Let's Encrypt ฟรีบนโฮสติ้งสมัยใหม่ทุกตัว เปลี่ยนเส้นทาง HTTP ไปยัง HTTPS ที่ระดับเซิร์ฟเวอร์
- เปลี่ยนคำนำหน้าตารางฐานข้อมูล WordPress ใช้ wp_ โดยค่าเริ่มต้น; เปลี่ยนเป็นอะไรที่กำหนดเองระหว่างการติดตั้ง ไม่ป้องกันการโจมตี แต่ทำให้รูปแบบการโจมตีบางอย่างยากขึ้น
- ปิดใช้งาน XML-RPC หากคุณไม่ได้ใช้ XML-RPC เป็นเวกเตอร์การขยาย brute force ทั่วไป หากคุณไม่ได้ใช้แอปมือถือ Jetpack หรือการเผยแพร่ระยะไกล ให้ปิดใช้งานผ่าน .htaccess หรือปลั๊กอิน
- จำกัดความพยายามเข้าสู่ระบบ Wordfence ทำสิ่งนี้โดยอัตโนมัติ ป้องกัน credential stuffing แบบ brute force
- หมุนเวียนคีย์/salts การยืนยันตัวตนของ WordPress ใช้เครื่องมือสร้าง Salts ของ WordPress ของเรา หมุนเวียนหลังจากสงสัยว่ามีการถูกบุกรุก หลังจากลบผู้ดูแลระบบที่ถูกบุกรุก และทุก 6-12 เดือนตามปกติ
- ใช้ SSH หรือ SFTP เพื่อถ่ายโอนไฟล์ ไม่ใช่ FTP ธรรมดา FTP ส่งข้อมูลรับรองในรูปแบบข้อความธรรมดา
- จำกัดการเข้าถึง wp-admin ตาม IP หากเป็นไปได้ หากทีมของคุณใช้ IP คงที่ (สำนักงาน, VPN) ให้จำกัด wp-admin เฉพาะ IP เหล่านั้น ผ่าน .htaccess หรือการตั้งค่า Nginx
- ปิดใช้งานการแก้ไขไฟล์ใน wp-config.php เพิ่ม:
define('DISALLOW_FILE_EDIT', true);ป้องกันไม่ให้ผู้โจมตีแก้ไขธีม/ปลั๊กอินจากแผงควบคุมหากพวกเขาบุกรุกบัญชี - ซ่อนหมายเลขเวอร์ชันของ WordPress ลบเมตาแท็ก generator ไม่ป้องกันการโจมตี แต่ลด fingerprinting
- ล็อกสิทธิ์ไฟล์ ไฟล์ 644, ไดเรกทอรี 755, wp-config.php 600 โฮสติ้งแบบ managed ส่วนใหญ่ทำสิ่งนี้โดยอัตโนมัติ; บน VPS ให้ตั้งค่าอย่างชัดเจน
การขัดเกลา: ดีแต่ไม่สำคัญยิ่งยวด
- URL เข้าสู่ระบบที่กำหนดเอง (เช่น WPS Hide Login) ส่วนใหญ่ลดเสียงรบกวนจากปริมาณการเข้าชมของบอท; ไม่ใช่ความปลอดภัยที่แท้จริง
- CAPTCHA บนแบบฟอร์มเข้าสู่ระบบ แรงเสียดทานเล็กน้อยสำหรับการโจมตีอัตโนมัติ
- ปิดใช้งานการเรียกใช้ PHP ใน /uploads/ ป้องกันไม่ให้ shell PHP ที่อัปโหลดถูกเรียกใช้
- ใช้ WAF ของ Cloudflare (ระดับฟรี) กรองปริมาณการเข้าชมที่เป็นอันตรายก่อนที่จะถึงเซิร์ฟเวอร์ของคุณ
- ตั้งค่าการแจ้งเตือนทางอีเมลของผู้ดูแลระบบสำหรับการอัปเดตปลั๊กอิน/แกนหลัก
- ใช้ HSTS preload เพื่อบังคับใช้ HTTPS ที่ระดับเบราว์เซอร์
- ปิดใช้งานการแจกแจงผู้ใช้ผ่าน REST API (Solid Security หรือ Wordfence จัดการสิ่งนี้)
- ใช้ส่วนหัว Content Security Policy (CSP)
- ปิดใช้งานการเรียกดูไดเรกทอรี (โฮสติ้งส่วนใหญ่ทำโดยค่าเริ่มต้น)
- ตรวจสอบเวลาทำงาน + ความสมบูรณ์ด้วยบริการภายนอก (ระดับฟรีของ UptimeRobot + Sucuri SiteCheck รายสัปดาห์)
- จำกัดบทบาทผู้ใช้ให้มีสิทธิ์น้อยที่สุด ผู้ร่วมเขียนส่วนใหญ่ไม่ต้องการการเข้าถึงระดับ editor
- การเข้ารหัสการสำรองข้อมูลฐานข้อมูล (UpdraftPlus Premium มีให้)
- การโฮสต์รูปภาพนอกโดเมนผ่าน CDN (ลดพื้นผิวการโจมตี)
- การตรวจสอบบันทึกการตรวจสอบความปลอดภัยเป็นระยะ
- การทดสอบเจาะระบบประจำปีหากเว็บไซต์สร้างรายได้อย่างมีนัยสำคัญ
ตำนานความปลอดภัยของ WordPress: ข้ามไปได้
มาตรการ «ความปลอดภัย» ที่แนะนำกันอย่างมากหลายอย่างให้การป้องกันที่แท้จริงน้อยมาก: (1) «ซ่อนเวอร์ชันของ WordPress»: การรู้เวอร์ชันของคุณช่วยการโจมตีแบบเจาะจงเป้าหมายเล็กน้อย แต่วิธีแก้ที่แท้จริงคือการอัปเดต ไม่ใช่การซ่อน (2) «ย้าย wp-config.php ไว้เหนือ public_html»: ให้ประโยชน์ด้านความปลอดภัยแทบเป็นศูนย์; ไฟล์นี้ได้รับการป้องกันโดย .htaccess อยู่แล้ว (3) «ปิดใช้งาน REST API»: ทำให้ปลั๊กอินจำนวนมากเสียหายและบล็อกได้น้อย ให้จำกัด endpoint ที่เฉพาะเจาะจงแทน (4) «ซ้อนปลั๊กอินความปลอดภัยหลายตัว»: พวกมันขัดแย้งและทับซ้อนกัน ปลั๊กอินที่เชื่อถือได้หนึ่งตัว (Wordfence หรือ Solid Security) ครอบคลุมสิ่งที่สามตัวจะทำ (5) «เปลี่ยนชื่อ wp-login.php»: ความปลอดภัยโดยความคลุมเครือ; ผู้โจมตีพบ URL ใหม่ได้ง่ายผ่านการเปลี่ยนเส้นทาง
หากคุณถูกแฮ็ก: รายการการกู้คืน
- อย่าตื่นตระหนก; อย่าลบสิ่งต่างๆ ทันที ถ่ายภาพรวมของสถานะปัจจุบันก่อนสำหรับการวิเคราะห์เชิงนิติเวช
- นำเว็บไซต์ออฟไลน์ (ปลั๊กอินโหมดบำรุงรักษาหรือการเปลี่ยนเส้นทาง .htaccess ไปยังหน้าสแตติก)
- เปลี่ยนรหัสผ่านผู้ดูแลระบบทั้งหมดและหมุนเวียน salts ของ WordPress
- ตรวจสอบบัญชีผู้ใช้: ลบบัญชีผู้ดูแลระบบที่ไม่รู้จักทันที
- สแกนหามัลแวร์ด้วย Wordfence Premium หรือ Sucuri
- เปรียบเทียบไฟล์ปัจจุบันกับการดาวน์โหลด WordPress ที่สะอาด: diff เผยให้เห็นไฟล์แกนหลักที่ถูกแก้ไข
- ตรวจสอบตาราง wp_options ของฐานข้อมูลหาเอนทรีที่ไม่คาดคิด (มักมี JS ที่ฉีดเข้ามา)
- กู้คืนจากการสำรองข้อมูลที่สะอาดล่าสุด (นี่คือเหตุผลที่การสำรองข้อมูลรายวันสำคัญ)
- เมื่อกู้คืนแล้ว ตรวจสอบปลั๊กอินแต่ละตัว: ลบตัวที่ไม่ได้ใช้ อัปเดตทั้งหมด และแทนที่ตัวใดก็ตามที่มี CVE สาธารณะ
- อัปเดตแกนหลักของ WordPress เป็นเวอร์ชันล่าสุด
- เปิดใช้งานเว็บไซต์อีกครั้งและเฝ้าระวังการติดเชื้อซ้ำเป็นเวลา 30 วัน