กำลังมองหาวิธีปิดใช้งาน WordPress XML-RPC อย่างรวดเร็ว? แต่ก่อนจะทำ ให้พิจารณาว่าทำไมคุณถึงต้องการทำเช่นนั้น
คุณอาจมีคำถามอื่นๆ อีกมากมาย:
- xmlrpc.php คืออะไร?
- มันเป็นช่องโหว่ด้านความปลอดภัยขนาดไหน?
- การปิดใช้งาน xmlrpc.php จะแก้ไขภัยคุกคามได้โดยอัตโนมัติหรือไม่?
ในบทความนี้ เราจะตอบคำถามทั้งหมดนี้และอื่นๆ อีกมากมาย
เว็บไซต์ของคุณถูกแฮกเพราะ XML-RPC หรือไม่?
คำตอบคือ ไม่ได้
สิ่งที่เกิดขึ้นคือ แฮกเกอร์กำลังพยายามเข้าถึงเว็บไซต์ของคุณ โดยลองผสมผสานชื่อผู้ใช้และรหัสผ่าน แต่ไม่ต้องตกใจ เว็บไซต์ของคุณยังไม่ถูกแฮก
เราเคยเห็นเกือบทุกเว็บไซต์ประสบปัญหานี้ หากคุณใช้รหัสผ่านที่แข็งแกรก โอกาสที่เว็บจะถูกแฮกจากการโจมตีนี้เป็นน้อยมาก จากเว็บไซต์ที่ถูกแฮก 10,000+ รายที่เราเคยเห็น น้อยกว่า 5% ที่ถูกแฮกเนื่องจากการโจมตีแบบนี้
อย่างไรก็ตาม การโจมตีแบบ Brute Force ใช้ทรัพยากรเซิร์ฟเวอร์ แม้คุณจะป้องกันหน้าล็อกอินและแอดมินแล้ว การโจมตีเหล่านี้จะข้ามหน้าเหล่านั้นไปเลย ทำให้เซิร์ฟเวอร์ทำงานเกินความจุ
เพื่อป้องกันเรื่องนี้ จึงสำคัญมากที่จะติดตั้งไฟร์วอลล์ที่ดี
XML-RPC คืออะไร?
XML-RPC เป็นฟีเจอร์ของ WordPress ที่ช่วยให้โอนข้อมูลระหว่าง WordPress กับระบบอื่นๆ ได้ ปัจจุบันถูกแทนที่โดย REST API แล้วส่วนใหญ่ แต่ยังคงรวมอยู่ในการติดตั้งเพื่อความเข้ากันได้กับรุ่นเก่า
XML-RPC อนุญาตให้แอปภายนอกเผยแพร่เนื้อหาบนเว็บไซต์ WordPress ของคุณ ตัวอย่างเช่น หากคุณใช้แอป WordPress บนมือถือเพื่อเผยแพร่โพสต์ XML-RPC จะช่วยให้คุณทำได้
แต่นั่นไม่ใช่ทั้งหมด WordPress ยังใช้มันสื่อสารกับแพลตฟอร์มบล็อกกิ้งอื่นๆ เช่น ทำให้ Trackback และ Pingback ทำงานได้
มันเคยขับเคลื่อนรุ่นเก่าของปลั๊กอิน Jetpack อีกด้วย
WordPress ใช้ XML-RPC เชื่อมต่อกับแอปมือถือ WordPress หากเคยใช้แอปนี้ คุณจะจำได้ว่าต้องเปิดใช้งาน XML-RPC
เรื่องแปลกคือ WordPress เองไม่ได้ใช้ XML-RPC อีกต่อไป ตั้งแต่ปล่อย REST API ของตัวเอง WordPress หยุดใช้โค้ดเก่าแล้ว
เหตุผลเดียวที่ไฟล์ xmlrpc.php ยังอยู่คือ เพื่อความเข้ากันได้กับรุ่นเก่า กล่าวง่ายๆ คือสำหรับเว็บที่ยังรัน WordPress รุ่นเก่ามาก!
ถ้านี่คือคุณ เราขอแนะนำให้สำรองเว็บไซต์ทันทีและอัปเดต WordPress Core, ธีม และปลั๊กอิน การอยู่บนรุ่นเก่ามีความเสี่ยงด้านความปลอดภัยมากกว่าการที่แฮกเกอร์พยายามเชื่อมต่อ xmlrpc.php
สรุปคือ คุณสามารถปิด XML-RPC ได้อย่างปลอดภัยหาก WordPress รุ่นสูงกว่า 4.7 มันไม่กระทบ Jetpack แม้คุณจะใช้ปลั๊กอินนี้อยู่ แต่การปิด XML-RPC แม้จะปลอดภัย แต่ไม่ช่วยป้องกันแฮกเกอร์
ทำไมแฮกเกอร์จึงโจมตี XML-RPC?
หากเคยใช้แอป WordPress มือถือ คุณจะจำได้ว่าต้องล็อกอินก่อนจึงจะแก้ไขได้ การล็อกอินนี้เกิดจากการส่งข้อมูลประจำตัวไปที่สคริปต์ xmlrpc.php ซึ่งจะตรวจสอบและยืนยัน
แฮกเกอร์พยายามทำอย่างเดียวกัน: ล็อกอินโดยส่งข้อมูลประจำตัวไปที่ xmlrpc.php ความเสี่ยงใหญ่คือ รหัสผ่านอ่อนแอ ฉะนั้น XML-RPC จึงกลายเป็นปัญหาความปลอดภัย
นอกจากนี้ ยังมีโอกาสเซิร์ฟเวอร์ทำงานเกินความจุ ซึ่งแก้ไขได้ง่ายด้วยไฟร์วอลล์
WordPress 4.7 ขึ้นไปที่ใช้ REST API ใช้การยืนยันตัวตนแบบ OAuth Tokens ซึ่งปลอดภัยมากกว่า XML-RPC ที่ใช้ชื่อผู้ใช้และรหัสผ่านโดยตรง
ถ้าให้เวลานานพอ บอทหรือแฮกเกอร์สามารถส่งรหัสผ่านผิดๆ ไปเรื่อยๆ จนทายถูก เรียกว่า Brute Force Attack
ปัญหาอีกอย่างคือ Pingback ซึ่งแจ้งเตือนเมื่อมีคนลิงก์มาที่เนื้อหาของคุณ แฮกเกอร์สามารถส่ง Pingback จำนวนมากมายาวเว็บ (DDoS Attack) ทำให้เซิร์ฟเวอร์ล่มและโฮสติ้งระงับบริการ
REST API แทนที่ฟังก์ชันนี้แล้ว ดังนั้นหากชอบ Pingback ก็ยังปิด XML-RPC ได้อย่างปลอดภัย
หากกังวลว่าเว็บอาจถูกแฮก (อยู่ใน 5%) ให้ใช้ malware scanner ฟรีของเราตรวจสอบทันที
ควรปิด XML-RPC หรือไม่?
เราไม่แนะนำให้ปิด XML-RPC เลย
เหตุผลง่ายๆ: การปิดไฟล์ PHP ไม่ช่วยอะไร แฮกเกอร์และบอทจะหันไปโจมตี wp-login.php แทน
อีกอย่าง ปลั๊กอินปิด XML-RPC จะทำเว็บช้าลง เพราะต้องโหลดเพื่อบล็อกคำขอ
สำคัญกว่าคือการป้องกันเว็บไซต์จริงๆ และอาจจะเดาได้ว่าเราจะแนะนำให้ติดตั้งไฟร์วอลล์
วิธีปิด XML-RPC ใน WordPress
เหมือนทุกอย่างใน WordPress มี 2 วิธี:
- ใช้ปลั๊กอิน
- ไม่ใช้ปลั๊กอิน (แก้โค้ด)
โดยปกติเราแนะนำใช้ปลั๊กอิน แต่ครั้งนี้เรา ไม่แนะนำทั้ง 2 วิธี แต่ยังแสดงวิธีทำให้รู้
โปรดระวัง และสำรองเว็บก่อนทำทุกอย่าง
ขั้นตอน 1: ตรวจสอบว่า XML-RPC เปิดอยู่หรือไม่
แม้ WordPress จะมาพร้อม xmlrpc.php แต่ไม่ได้หมายความว่ามันเปิดอยู่ ตรวจสอบก่อนที่จะปิด
ใช้ WordPress XML-RPC Validation Service ตรวจสอบว่า xmlrpc.php เปิดอยู่หรือไม่
ถ้าทดสอบกับ MalCare จะเจอ Error 403 เพราะเรามีไฟร์วอลล์ป้องกัน
ขั้นตอน 2: ปิด XML-RPC บนเว็บไซต์
ตัวเลือก A: ใช้ปลั๊กอิน
มีปลั๊กอินเยอะมาก เราแนะนำ REST XML-RPC Data Checker
แต่เว็บจะช้าลง เพราะปลั๊กอินต้องโหลดเพื่อบล็อก แฮกเกอร์จะหันไปโจมตี wp-login.php แทน ไม่ได้ประโยชน์ด้านความปลอดภัยเลย หากต้องการป้องกันจริง ติดตั้ง MalCare Advanced Firewall แทน
ติดตั้งปลั๊กอิน → Settings > REST XML-RPC Data Checker → แท็บ XML-RPC
สามารถปิด API, การจัดรูปโพสต์, Pingback, Trackback และเพิ่ม IP ที่เชื่อถือได้ได้
ตัวเลือก B: ไม่ใช้ปลั๊กอิน (แนะนำไม่ให้ทำ)
นี่คือวิธีที่แย่ที่สุด ขอแนะนำข้ามไปส่วนป้องกันการโจมตี XML-RPC แทน
แต่หากต้องการทำแบบแมนวอล สำรองเว็บเต็มรูปแบบก่อน
ปิด XML-RPC ด้วย .htaccess (Apache)
เพิ่มโค้ดใน .htaccess:
# Block WordPress xmlrpc.php requests
<Files xmlrpc.php>
order deny,allow
deny from all
allow from xxx.xxx.xxx.xxx
</Files>
บรรทัดที่ 5 ใส่ IP ของคุณถ้าต้องการอนุญาต IP เฉพาะ ไม่เช่นนั้นลบบรรทัดนี้ทิ้ง
ปิด XML-RPC ด้วย Nginx.config
เพิ่มใน Nginx.config:
location ~* ^/xmlrpc.php$ {
return 403;
}
หรือขอให้โฮสติ้งปิดให้ก็ได้
ปิด XML-RPC ด้วย Filter
เพิ่มโค้ดในปลั๊กอินหรือ functions.php ของธีม (แนะนำเขียนปลั๊กอินแยก):
add_filter('xmlrpc_enabled', '__return_false');
วิธีนี้ใช้ได้กับทุกเซิร์ฟเวอร์ แต่ไม่แนะนำให้แก้โค้ดเอง
วิธีป้องกันการโจมตี XML-RPC (สำคัญที่สุด)
นี่คือส่วนสำคัญที่สุด เราแบ่งเป็นขั้นตอนที่ปฏิบัติได้
ขั้นตอน 1: ตรวจสอบว่าเว็บถูกแฮกแล้วหรือยัง
ส่วนใหญ่เว็บยังไม่ถูกแฮก แต่ต้องยืนยัน ถ้าถูกแฮกจริง ต้องลบมัลแวร์ก่อน ไม่งั้นปิด XML-RPC ไม่มีความหมาย
วิธีง่ายที่สุด: ใช้ MalCare FREE Malware Scanner ตรวจจับมัลแวร์แม้แต่ที่ไม่รู้จักในไม่กี่วินาที
ถ้าเจอคำเตือน ให้กด Auto-clean MalCare จะลบมัลแวร์ใน 60 วินาที
ขั้นตอน 2: ติดตั้ง WordPress Firewall
นี่คือวิธีที่ถูกต้อง ใช้ไฟร์วอลล์ที่บล็อกบอทที่พยายามเชื่อมต่อ xmlrpc.php
การปิดไฟล์ไม่ได้ แฮกเกอร์จะโจมตี wp-login.php ต่อ
ปัญหาคือ ไฟร์วอลล์ทั่วไปทำงานช้าเกินไป ทุกครั้งที่แฮกเกอร์พยายามโจมตี ทั้งเว็บ WordPress จะโหลดพร้อมกัน
因此 เราแนะนำ MalCare Advanced Firewall ที่:
- ขับไล่บอทและแฮกเกอร์ ก่อนที่เว็บจะโหลด
- ไม่ทำเว็บช้าเหมือน Cloudflare
- อัปเดตฐานข้อมูล IP ร้ายตลอดเวลาจากเครือข่าย 250,000+ เว็บไซต์
หากเว็บได้รับการป้องกันโดย MalCare บอทและแฮกเกอร์จะได้แค่ Error 403 เมื่อพยายามเชื่อมต่อ XML-RPC หรือ WP-Login
ทำไมผู้คนจึงแนะนำให้ปิด XML-RPC?
หลายเหตุผล เรามาดูกัน:
1. ปัญหาทรัพยากรเซิร์ฟเวอร์ - ใน Log เจอการเข้าถึง xmlrpc.php มากมาย
2. ข้อผิดพลาดการตั้งค่า Jetpack - เจอ error ระหว่างติดตั้ง Jetpack แล้วค้นหาเจอว่า xmlrpc.php เป็นช่องโหว่
3. คำเตือนจากสแกนเนอร์ความปลอดภัย - เช่น Wordfence แสดง Log ว่าบอทพยายามโจมตีผ่าน XML-RPC
จริงๆ แล้วการปิด XML-RPC เป็นแค่ "ปลายเทป" ไม่ได้แก้รากปัญหา
สิ่งที่ไม่ควรทำ และ ทำไม?
Blacklist IP Addresses
บล็อก IP ด้วยมือไม่ได้ผล บอทจะเปลี่ยน IP มาโจมตีใหม่
ลบไฟล์ XML-RPC
อย่าลบ xmlrpc.php เด็ดขาด จะทำเว็บเสีย และไฟล์จะกลับมาอีกตอนอัปเดต WordPress
ต่อไปควรทำอะไร?
การเพิ่มความปลอดภัย WordPress ไม่ใช่เรื่องครั้งเดียวจบ ติดตั้งไฟร์วอลล์เป็นจุดเริ่มที่ดี แต่เราแนะนำทำ Full WordPress Security Audit หาจุดอื่นๆ ที่ปรับปรุงได้
ถ้าติดตั้ง MalCare แล้ว จะได้คำแนะนำในแดชบอร์ด ให้ทำ Security Scan และปฏิบัติตาม
Hardening เว็บไซต์เป็นความคิดที่ดี ให้ทำตามคำแนะนำในไม่กี่คลิก
อีกอย่างสำคัญคือ ต้องอยู่ในสถานะ "รู้ข่าว" ถ้ามีช่องโหว่ WordPress ใหม่ ต้องรู้และดำเนินการป้องกันก่อนที่จะกระทบเว็บคุณ
คำถามที่พบบ่อย (FAQs)
XML-RPC คืออะไร?
XML-RPC ย่อมาจาก XML Remote Call Procedure เป็นโปรโตคอลที่ระบบบล็อกกิ้งเก่าใช้เชื่อมต่อผ่าน HTTP ด้วยการเข้ารหัส XML กล่าวง่ายคือโปรโตคอลที่ให้ผู้ใช้เชื่อมต่อระยะไกลกับแพลตฟอร์มบล็อกกิ้งอย่าง WordPress
XML-RPC ใช้ทำอะไร?
XML-RPC เป็นวิธีเชื่อมต่อ WordPress จากแอปภายนอก เช่น แอป WordPress มือถือ และส่งการแจ้งเตือนเมื่อมีคนลิงก์มาที่โพสต์ผ่าน Trackback และ Pingback
如何禁用 XML-RPC?
สามารถปิดได้ด้วยปลั๊กอินอย่าง REST XML-RPC Data Checker แต่การปิดไม่หยุดแฮกเกอร์ ควรติดตั้ง MalCare Advanced Firewall แทน
ฉันมี CAPTCHA หรือ 2FA แฮกเกอร์ยังแฮกผ่าน XML-RPC ได้ไหม?
Captcha และ 2FA เป็นความปลอดภัยเพิ่มเติม ไม่ได้ป้องกันการโจมตี XML-RPC โดยตรง ส่วนใหญ่ป้องกันแค่หน้าล็อกอิน WordPress ไม่ใช่สคริปต์ XML-RPC ต้องตรวจสอบกับปลั๊กอินความปลอดภัยว่าบล็อกการล็อกอินผ่าน XML-RPC ได้หรือไม่
สามารถ Blacklist IP ร้ายได้ไหม?
ดูเหมือนโซลูชันที่ชัดเจน แต่จริงๆ แล้วเป็นการเล่น "Whack-a-mole" แฮกเกอร์จะเปลี่ยน IP มาโจมตีใหม่ตลอด ไม่มีที่สิ้นสุด
แค่ไฟร์วอลล์ของ MalCare ที่มี Bot Protection จะบล็อก IP ร้ายจากประเทศหรืออุปกรณ์โดยอัตโนมัติ เรียนรู้จาก 250,000+ เว็บ และจับบอทได้ก่อนที่จะโจมตี โดยไม่ทำเว็บช้า
ไม่สามารถลบไฟล์ XML-RPC ได้ไหม? WordPress ไม่ได้ใช้แล้ว
อย่าทำ! แม้ไฟล์หาย บอทยังพยายามเชื่อมต่อทำให้เซิร์ฟเวอร์ทำงานหนัก การลบไฟล์ Core ของ WordPress อาจทำเว็บเสียหมด และไฟล์จะติดตั้งกลับมาตอนอัปเดต