บอทเหล่านั้นอาศัย
คำตอบ สั้น ๆ
เพื่อทำให้
- อัปเดต แกนหลักของ WordPress ปลั๊กอิน ธีม และ PHP และลบสิ่งที่ไม่ได้ใช้
- ปกป้องการล็อกอิน ด้วย
รหัสผ่าน ที่ไม่ซ้ำ และการยืนยันตัวตน สองขั้นตอน - ให้แต่ละคนมีบัญชีของ
ตัวเอง ด้วยสิทธิ์ต่ำที่สุดที่จำเป็น ติดตั้ง เฉพาะปลั๊กอินที่มีคนดูแล จากแหล่งที่เชื่อถือ ได้- ให้บริการทุกอย่างผ่าน HTTPS พร้อม security header
พื้นฐาน - วางไฟร์วอลล์สำหรับเว็บแอปพลิเคชัน ไว้ด้านหน้า
เว็บไซต์ - จำกัดจำนวนครั้งที่พยายามล็อกอิน รวมถึงผ่าน XML-RPC
- ล็อกไฟล์และการ
ตั้งค่า เพื่อให้การเจาะระบบทำอะไรได้น้อยลง - เก็บข้อมูลสำรองไว้นอกเซิร์ฟเวอร์ และทดลอง
กู้คืน จริงแล้ว
เว็บไซต์ WordPress ถูกเจาะได้อย่างไรจริง ๆ
แกนหลักของ WordPress ได้รับการดูแลอย่างดี และรุ่นอัปเดตความปลอดภัยย่อย จะ
| ความเสี่ยง แบบภาษาง่าย ๆ | แก้ด้วย | |
|---|---|---|
| ปลั๊กอินที่มี |
ขั้นที่ 1 และ 4 | |
| การยืนยัน |
ขั้นที่ 2 และ 7 | |
| การควบคุมสิทธิ์ที่บกพร่อง | บัญชี |
ขั้นที่ 1 และ 3 |
| การแทรก |
ฟอร์มหรือปลั๊กอิน ที่ส่งข้อมูลที่ไม่ได้ตรวจเข้า |
ขั้นที่ 1 และ 6 |
| การ |
ขั้นที่ 5 และ 8 |
ลำดับที่ 1: ปิดช่องทาง เข้าที่พบบ่อย
1. อัปเดตให้ทันเวลา
- เปิดการอัปเดตความปลอดภัยอัตโนมัติของ WordPress ไว้
- ตั้งอัปเดตอัตโนมัติให้ปลั๊กอินที่ไม่
ซับซ้อน ส่วนปลั๊กอินที่ซับซ้อน (page builderร้านค้า ออนไลน์ ระบบสมาชิก) ให้ทดสอบบนสำเนา staging ก่อน แล้วอัปเดตโดยเร็ว - ถ้า
ช่องโหว่ ที่ถูกเปิดเผย ยังไม่มีวิธีแก้ ให้ปิดใช้งานหรือเปลี่ยนปลั๊กอินนั้น จนกว่าแพตช์จะออก - ใช้ PHP เวอร์ชันที่ยังได้รับการแก้ไขด้านความปลอดภัย php.net
เผยแพร่ วันสิ้นสุด การรองรับไว้ และ Tools → Site Health จะแจ้งเตือน เวอร์ชันที่ล้าสมัย - ลบปลั๊กอินและธีมที่ไม่ได้ใช้ โค้ดที่ปิดใช้งานแล้วยังอยู่บนเซิร์ฟเวอร์ และบางส่วนยัง
เข้าถึง ได้
ลองตรวจเอง อะไรก็ตามที่รออยู่ใน Dashboard → Updates นานเกินสองสามสัปดาห์ คือ
2. การล็อกอินที่แข็งแรง และการยืนยันตัวตน สองขั้นตอน
บอทลอง
การยืนยัน
ปกป้องบัญชีรอบ ๆ WordPress ด้วย ทั้ง
3. สิทธิ์น้อยที่สุดเท่าที่จำเป็น
ความ
- ให้
ผู้ดูแล ระบบมีแค่หนึ่งหรือสองคนที่รับผิดชอบ ได้ผู้ดูแล ระบบติดตั้ง ปลั๊กอินได้ และปลั๊กอินรันโค้ดอะไรก็ได้ตามที่มันต้องการ - ถือว่า Editor เป็นบทบาทที่ต้องไว้ใจ ในการ
ติดตั้ง แบบเว็บไซต์ เดียวทั่วไป Editor ใส่ HTML ที่ไม่ผ่านการกรอง ได้ รวมถึงสคริปต์ - ถอนสิทธิ์ในวันที่คนออก รวมถึง
นักพัฒนา และซัพพลายเออร์ เก่า และตรวจบทบาทเพิ่มเติม ที่ปลั๊กอินร้านค้า ออนไลน์หรือปลั๊กอินฟอร์ม เพิ่มเข้ามา
หนึ่งคน หนึ่งบัญชี การใช้บัญชีร่วมกัน ทำให้ถอนสิทธิ์ของคนใดคนหนึ่งไม่ได้ หรือดูไม่ได้ว่าใครเปลี่ยนอะไร
4. ใช้แค่ปลั๊กอินที่เชื่อถือ ได้
ปลั๊กอินแต่ละตัว คือโค้ดจาก
- แหล่งที่มา WordPress.org หรือ
เว็บไซต์ ของผู้พัฒนา เอง สำหรับปลั๊กอินแบบพรีเมียม ห้ามใช้สำเนา “nulled” (ละเมิดลิขสิทธิ์)เด็ดขาด ซึ่งเป็นช่องทาง แพร่มัลแวร์ที่รู้กันดี - การดูแล มีการอัปเดตล่าสุด และทดสอบกับ WordPress เวอร์ชันปัจจุบัน ไดเรกทอรีของ WordPress.org จะเตือนเมื่อปลั๊กอินไม่ได้ทดสอบ กับเวอร์ชันหลักล่าสุด
- ประวัติ ค้นชื่อปลั๊กอินใน
ฐานข้อมูล ช่องโหว่ ปัญหาในอดีตที่ถูกแก้อย่างรวดเร็วและเปิดเผย เป็นสัญญาณที่ดี - ไลเซนส์ เมื่อไลเซนส์พรีเมียมหมดอายุ การอัปเดตมักหยุดลง รวมถึงการแก้ไขด้านความปลอดภัย
ลำดับที่ 2: ป้องกันเว็บไซต์ จากภายนอก
5. HTTPS และ security header
HTTPS เข้ารหัสการล็อกอินและการส่งฟอร์ม และโฮสต์http:// redirect ไปยัง https:// และที่อยู่ทั้งสองช่องใน Settings → General ใช้ https
security header บอกเบราว์เซอร์ว่าอะไรได้รับอนุญาตบนหน้าเว็บของคุณ
| Header | ทำอะไร | แรงที่ใช้ |
|---|---|---|
Strict-Transport-Security |
บังคับใช้ HTTPS กับโดเมนของคุณ | ต่ำ เริ่มจาก |
X-Content-Type-Options |
หยุดไม่ให้เบราว์เซอร์เดาประเภทไฟล์ | ต่ำ |
X-Frame-Options |
หยุดไม่ให้ |
ต่ำ |
Content-Security-Policy |
ควบคุมว่าแหล่งไหนโหลดสคริปต์และเนื้อหาอื่นได้ | สูง ต้องอนุญาตให้ page builder และ analytics |
Content-Security-Policy ในโหมดรายงานอย่างเดียวก่อน เพื่อให้การละเมิดถูกรายงานแทนที่จะถูกบล็อก HTTP Observatory ของ Mozilla ให้เกรด header ที่
6. ไฟร์วอลล์สำหรับเว็บแอปพลิเคชัน
ไฟร์วอลล์สำหรับเว็บแอปพลิเคชัน (WAF) ตรวจคำขอก่อนที่ WordPress จะจัดการ และบล็อก
| ประเภท | จุดแข็ง | ต้องระวัง |
|---|---|---|
| ไฟร์วอลล์บน |
บล็อก |
อาจถูกเลี่ยงได้ ถ้าเซิร์ฟเวอร์ยังรับ |
| ไฟร์วอลล์แบบปลั๊กอิน อยู่ใน WordPress | รู้จัก |
ใช้ทรัพยากรของเซิร์ฟเวอร์คุณ |
| ไฟร์วอลล์ของเซิร์ฟเวอร์ ที่โฮสต์ดูแล | ไม่ต้อง |
กฎทั่วไปอาจพลาดการโจมตีเฉพาะปลั๊กอิน |
7. จำกัดจำนวนครั้งที่พยายามล็อกอิน
แกนหลักของ WordPress ไม่ได้จำกัดจำนวนครั้งที่ล็อกอินผิด บอทจึงเดาได้ไม่รู้จบ ให้จำกัดจำนวนครั้งต่อที่อยู่ IP ที่ไฟร์วอลล์ ในปลั๊กอิน หรือบนเซิร์ฟเวอร์
อย่าลืม xmlrpc.php ด้วย
ลำดับที่ 3: จำกัดความเสียหาย
8. ไฟล์และการตั้งค่า
การเสริมความ
- สิทธิ์ของไฟล์ แนวทางเสริมความ
แข็งแรง ของ WordPress.org คือ644สำหรับไฟล์755สำหรับโฟลเดอร์ และ440หรือ400สำหรับwp-config.phpถ้าเซิร์ฟเวอร์ของคุณอนุญาต ห้ามใช้777 - ปิดตัวแก้ไขไฟล์ การ
ตั้งค่า DISALLOW_FILE_EDITเป็น true ในwp-config.phpจะเอาตัวแก้ไขโค้ดในแดชบอร์ด ออก ซึ่งเป็นทางที่เร็วที่สุด ที่บัญชีแอดมิน ที่ถูกขโมยจะใช้ฝังโค้ด แต่มันไม่ได้หยุดการ อัปโหลด ปลั๊กอิน นั่นคือเหตุผลที่ขั้นที่ 2 สำคัญ - ไม่มี PHP ในโฟลเดอร์ uploads โฟลเดอร์ uploads ต้องเขียนได้ จึงเป็นที่ซ่อนโปรดของสคริปต์อันตราย ขอให้โฮสต์บล็อกไม่ให้ PHP รันในโฟลเดอร์นั้น
- ปิดการแสดง
ข้อผิดพลาด ปิดWP_DEBUGไว้บนเว็บไซต์ จริง เพราะข้อความ ผิดพลาด อาจเผยให้เห็นที่อยู่ของไฟล์ - ไม่มีสำเนาที่ถูกลืม
เว็บไซต์ staging เก่าและการติดตั้ง ที่ถูกทิ้งไว้ แทบไม่เคยถูกอัปเดต และเว็บไซต์ ที่ถูกเจาะหนึ่งแห่ง มักเข้าถึง เว็บไซต์ อื่นในบัญชีโฮสติ้ง เดียวกันได้ ลบมันทิ้ง และตั้งรหัสผ่าน ให้ staging
9. ข้อมูลสำรองที่คุณเคยกู้คืน จริงแล้ว
- ไฟล์และ
ฐานข้อมูล ไปด้วยกันฐานข้อมูล เก็บหน้า การตั้งค่า และข้อมูลที่ส่งผ่านฟอร์ม ส่วนไฟล์เก็บสิ่งที่อัปโหลด ธีม และปลั๊กอิน - เก็บนอกเซิร์ฟเวอร์ ด้วยข้อมูลเข้าระบบแยก
ต่างหาก เพื่อให้ผู้โจมตี ที่เข้าถึง เว็บไซต์ ได้ ลบข้อมูลสำรองไปด้วยไม่ได้ - ทุกวัน สำหรับ
เว็บไซต์ ที่รับการติดต่อสอบถามหรือคำสั่งซื้อ โดยมีประวัติย้อนหลัง พอจะกลับไปได้หลายสัปดาห์ เพราะการติดมัลแวร์มักไม่ถูกสังเกต - ทดสอบแล้ว ด้วยการ
กู้คืน ลงสำเนา staging การกู้คืน ไปยังเซิร์ฟเวอร์ใหม่ ก็คือการย้ายเว็บไซต์ ดี ๆ นี่เอง บทความ ย้ายเว็บไซต์ ไปโฮสต์ใหม่ อธิบายเรคคอร์ด DNS และอีเมล ที่มักพังบ่อยที่สุด
มาตรการความปลอดภัย WordPress ที่ช่วยได้น้อยกว่าที่คิด
- ซ่อนหน้าล็อกอิน ลดเสียงรบกวนจากบอท แต่ไม่ได้ปกป้อง XML-RPC และไม่ได้หยุดคนที่หาที่อยู่เจอ
- เปลี่ยน prefix
wp_ของฐานข้อมูล ช่วยได้น้อย และเสี่ยงบนเว็บไซต์ ที่ใช้งานจริง - ซ่อนเวอร์ชันของ WordPress แทบไม่มีผล การโจมตีอัตโนมัติมักแค่ลอง
ช่องโหว่ ไปเลย ติดตั้ง ปลั๊กอินความปลอดภัยซ้อนกันหลายตัว ทำให้เกิดความขัดแย้ง ทำให้เว็บไซต์ ช้า และสร้าง ความมั่นใจแบบผิด ๆ ในแต่ละระดับ มีชั้นป้องกันเดียวที่ตั้งค่า ดีก็พอแล้ว
เว็บไซต์ WordPress ถูกแฮก? ชั่วโมงแรก ๆ
สัญญาณทั่วไปคือ site: ที่คุณไม่เคย
- ควบคุมไม่ให้ลุกลาม ถ้า
ผู้เข้าชม ถูกพาไปที่อื่น หรือได้รับมัลแวร์ ให้เปิดโหมดปิดปรับปรุง หรือขอให้โฮสต์ปิดเว็บไซต์ ไว้ก่อน - เก็บสำเนาไว้ ก่อนเปลี่ยนอะไร ให้ดาวน์โหลดไฟล์และ
ฐานข้อมูล ที่ติดมัลแวร์ และขอ access log จากโฮสต์ เพราะคุณต้องใช้หาทางที่ผู้โจมตี เข้ามา - ล็อกประตู จากอุปกรณ์ที่
เชื่อถือ ได้ ให้เปลี่ยนรหัสผ่าน ของผู้ดูแล ระบบทุกคนโฮสติ้ง SFTP หรือ SSHฐานข้อมูล (และอัปเดตwp-config.phpให้ตรงกัน) และกล่องอีเมลที่รับลิงก์ รีเซ็ตรหัสผ่าน ลบผู้ใช้ ที่ไม่รู้จัก เพิกถอน application password และเปลี่ยน security key ในwp-config.phpเพื่อให้ทุกคนหลุดออกจากระบบ - หาทางที่เข้ามา เทียบเวอร์ชันปลั๊กอินกับ
ฐานข้อมูล ช่องโหว่ และอ่าน log จากช่วงที่การเปลี่ยนแปลงแรกปรากฏ ถ้าข้ามขั้นนี้ การทำความสะอาดจะได้ผลแค่ชั่วคราว กู้คืน หรือทำความสะอาดกู้คืน ข้อมูลสำรองจากก่อนถูกเจาะ อัปเดตทุกอย่างทันที และทำฝั่ง WordPress ของขั้นที่ 3 ใหม่ เพราะการกู้คืน จะนำ รหัสผ่าน key และรายละเอียด ฐานข้อมูล เดิมกลับมา ถ้าไม่มีข้อมูลสำรองที่สะอาด ให้ติดตั้ง แกนหลัก ปลั๊กอิน และธีมใหม่จากแหล่งทางการ ลบไฟล์ PHP ออกจาก uploads และตรวจฐานข้อมูล .htaccessและงานที่ตั้งเวลาไว้ผู้โจมตี มักทิ้งประตูหลังไว้หลายบาน นั่นคือเหตุผลที่การทำความสะอาดแค่บางส่วน มักกลับมาติดซ้ำ- แจ้งคนที่ควรรู้ ขอให้
ตรวจสอบ ใหม่ใน Search Console ถ้า Googleแจ้งเตือน เว็บไซต์ ไว้ ถ้าข้อมูลส่วนบุคคล อาจถูกเข้าถึง ให้ขอคำปรึกษา โดยเร็ว เช่นภายใต้ มาตรา 33 ของ GDPR ของสหภาพยุโรป การละเมิดที่ต้องแจ้ง ต้องรายงานต่อหน่วยงาน กำกับดูแล โดยไม่ชักช้าเกินสมควร และถ้าทำได้ ภายใน 72 ชั่วโมงหลังรับรู้ - เสริมความ
แข็งแรง แล้วเฝ้าดูผู้ใช้ ใหม่ ไฟล์ที่ถูกเปลี่ยน และการพาไปที่อื่น ในช่วงหลายสัปดาห์ต่อมา
ถ้าการทำความสะอาดเผยให้เห็นธีมที่ถูก
ขั้นต่อไป
คู่มือนี้ครอบคลุมสิ่งที่ต้อง
ถ้าไม่อยากรับกิจวัตรนั้นไว้เอง แผนดูแล