แนวทางการป้องกัน WordPress จากการโดนแฮค

WordPress and Digital marketing

อบรม wordpress โดนแฮ็ค

สงวนลิขสิทธิ์

การโจมตีเว็บไซต์ WordPress อย่างต่อเนื่องยังเป็นความเสี่ยงของผู้ที่เป็นเจ้าของหรือผู้ดูแลระบบ การป้องกัน WordPress จากการโดนแฮคเป็นสิ่งที่ผู้ดูแลระบบจะต้องให้ความสำคัญอย่างต่อเนื่อง มาตรการเล็กๆน้อยๆแม้จะไม่ได้ช่วยให้ปลอดภัยจากการถูกแฮคได้ 100% แต่ก็ช่วยลดความเสี่ยงจากการถูกแฮคจาก robot ได้มาก

ลดความเสี่ยงจากการถูกแฮครหัสผ่าน

วิธีพื้นฐานที่ robot ใช้ในการเจาะเข้าเว็บไซต์ทั่วไปคือการเดาชื่อบัญชีและรหัสผ่านหรือที่เรียกกันว่า brute force attack ซึ่งเป็นการเดาสุ่มโดยโปรแกรม ซึ่งสามารถเดาได้ถี่มากในช่วงเวลาสั้นๆ ยิ่งถ้าเป็นชื่อบัญชีพื้นๆอย่างเช่น admin root home และรหัสผ่านสั้นๆไม่กี่ตัวอักษรก็จะถูกเดาได้อย่างง่ายมาก ดังนั้นสิ่งพื้นฐานที่ผู้ดูและเว็บไซต์จะต้องให้ความสำคัญคือนอกจากรหัสผ่านจะเป็นความลับแล้ว ชื่อบัญชีก็ต้องเป็นความลับด้วย และเรื่องต่อมาก็คือจะต้องลดความถี่จากการพยายามเจาะเข้ามา สำหรับ WordPress มี plugin อยู่สองตัวที่ช่วยทำหน้านี้คือ  lockdown และ limit lock in attempt ตัวแรกไม่มีการอัพเดทมาเกินสองปีแล้ว แต่ก็ยังใช้ได้ดี

ป้องกันด้วย .htaccess

สำหรับผู้ที่ใช้โฮสท์ในระบบ linux และใช้ apache เป็น web server จะมีกลไลที่ช่วยป้องกันการเจาะเข้าในระดับไดเรคทอรี่และระดับไฟล์ ซึ่งใช้ได้กับเว็บไซต์ทุกประเภท ไม่จำเป็นต้องเป็นเว็บไซต์ที่สร้างด้วย CMS หรือ WordPress

.htaccess เป็นไฟล์ที่จะใช้บอกเงื่อนไขว่าเราต้องการควบคุมการเข้าถึงเว็บไซต์ของเราอย่างไร ซึ่งหากเราลง WordPress ครั้งแรกและเปิดใช้ permalinks ไว้ ไฟล์นี้จะถูกสร้างขึ้นให้โดยอัตโนมัติที่ตำแหน่ง public_html ซึ่งเราเปิดดูก็จะเป็นดังนี้

# BEGIN WordPress
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteBase /
RewriteRule ^index\.php$ – [L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /index.php [L]
</IfModule>
# END WordPress

ซึ่งข้อมูลข้างบนเราไม่ต้องไปแตะเพราะเกี่ยวกับการทำ permalinks เราเพียงแต่เขียนต่อท้ายเข้าไป

ป้องกัน wp-config.php

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

<Files wp-config.php>
order allow,deny
deny from all
</Files>

ซึ่งจะเป็นการป้องกันไม่ให้มีการแก้ไขข้อมูลในไฟล์นี้รวมทั้งตัวเราเองด้วย ซึึ่งหากเรามีเหตุผลบางอย่างที่ต้องการเปลี่ยนแปลง wp-config.php  เช่นเราต้องการเปลี่ยนรหัสผ่านของฐานข้อมูล ก็ต้องมาปลดล็อกตรงนี้ก่อน

ป้องกันการ login จาก IP อื่น

ปกติเมื่อเราจะเข้าใช้ WordPress ก็จะเข้าผ่านทาง mysite.com/wp-admin ซึ่งคนอื่นที่จะเจาะเข้ามาก็ใช้ช่องทางนี้เช่นกัน ซึ่งอาจจะทำโดยโปรแกรมก็ได้ ถ้าองค์กรของคุณใช้ IP แบบ fix คุณสามารถเจาะจงว่า IP ของคุณเท่านั้นที่สามารถเข้าทางช่องนี้ได้ โดยสร้างไฟล์ .htaccess อีกไฟล์ไว้ภายใต้ public_html/wp-admin

order deny allow
allow from 203.100.20.5
deny from all

โดย 203.100.20.5 คือ  fix IP ของเรา แต่ถ้าเราใช้ IP แบบ dynamic ก็ให้มาแก้ไขหมายเลขนี้ก่อนล็อกอิน (ซึ่งไม่สะดวก) เพราะฉะนั้นใช้วิธีนี้ก็ต่อเมื่อคุณใช้ fix IP จะดีกว่า

ป้องกันจาก IP ไม่พึงประสงค์

เมื่อเราใช้ plugin อย่างเช่น limit login attempt เราจะสังเกตเห็น IP บางตัวที่พยายามเจาะเข้ามาอย่างถีี่ๆ ซึ่งเราอาจเอาไปตรวจสอบกับ iplocation.net เพื่อหาที่มา หากพบว่าที่มาเป็นที่น่าสงสัย เราก็อาจบล็อก IP นั้นไปเลยก็ได้ โดยพิมพ์คำสั่งต่อไปนี้เข้าไปใน .htaccess

<Limit GET POST>
order allow deny
deny from 203.100.21.1
deny from 203.102.181.20
allow from all
</Limit>

หมายความว่าเครื่องที่มี IP หมายเลข 203.100.21.1 และ 203.102.181.20 จะไม่สามารถดูเว็บไซต์ของเราได้ รวมทั้งความพยายามที่จะล็อกอินเข้ามา

อย่าใช้ plugin ที่ไม่มีแหล่งที่มา

Plugin เป็นช่องโหว่ที่สำคัญสำหรับ WordPress รวมทั้ง CMS ทุกตัว เพราะเป็นช่องทางที่จะรันโค้ดไม่พึงประสงค์ (malicious code) ได้อย่างดีที่สุด แหล่งที่น่าเชื่อถือที่สุดก็คือจาก wordpress.org เอง หรือจากบริษัทผลิต plugin ที่มีชื่อเสียงและทำมานาน (ซึ่งไม่ฟรี)

แม้ว่าแหล่งที่มาของ plugin จะเป็นที่น่าเชื่อถือ แต่ plugin ที่เขียนมาไม่ดีก็จะเป็นช่องโหว่ให้มีการเจาะเข้ามาได้ ซึ่งเรื่องนี้ก็ต้องอาศัยการติดตามข่าวสารจาก plugin ที่เราใช้อยู่เสมอ และควรอัพเดทเมื่อมีการแจ้งเติน ควรเลือกใช้ plugin ที่มีประวัติใช้งานมานานหลายปีและมีการอัพเดทอยู่อย่างสม่ำเสมอ ปกติ plugin ที่ไม่มีการอัพเดทเป็นเวลา 2 ปี WordPress จะแจ้งเตือนไม่ให้ใช้