การแก้ไขเว็บ Magento กรณีโดน Hack และการลง Security Patch

ใน Magento version ที่เก่ากว่า 1.9.2.0 จะมีช่องโหว่ให้ Hacker สามารถเข้ามาและลักลอบใส่ข้อมูล Paypal เพื่อรับเงินผ่านเว็บไซต์เราได้ หรือบางครั้งอาจโดนฝัง Malware จนโดน Google ทำการ Report จนเข้าใช้งานไม่ได้ วันนี้ผมจะมาแนะนำวิธีการตรวจสอบแก้ไข และการลง Security Patch ครับ

การตรวจสอบว่าเว็บไซต์โดน Hack หรือไม่

ในกรณีที่ยังไม่พบความผิดปรกติใดๆ ในการใช้งานเว็บ แต่อยากตรวจสอบว่าเว็บไซต์ยังปลอดภัยดีหรือไม่ ให้ทำการตรวจสอบดังนี้ครับ

  1. Login เข้าสู่ระบบหลังร้าน แล้วไปที่ System > Permission > User แล้วสำรวจดูว่ามี User แปลกปลอมที่เราไม่คุ้นเคยหรือไม่ ถ้ามีให้ลบออกให้หมด
  2. ไปที่ System > Configuration > Design
    • ไปที่ HTML Head > Miscellaneous Scripts
      ไม่ควรมีการใส่ Script ใดๆ ในนี้ ถ้ามี ให้ลบออกให้หมด
      Miscellaneous Scripts
    • ไปที่ Footer > Miscellaneous HTML ไม่ควรมีการใส่ Code ใดๆ เช่นกัน ถ้ามีให้ลบออก
  3. ตรวจสอบข้อมูล Paypal ว่ามีคนแอบในบัญชี Paypal อื่น ที่ไม่ใช่ของเราหรือไม่ โดยไปที่ System > Configuration > Payment Method > PayPal Payment Solutions หากเจอการใส่บัญชี Paypal ของผู้อื่น ให้ทำการลบออก
  4. ตรวจสอบไฟล์แปลกปลอม โดยการ FTP เข้าไปดูไฟล์ใน host ไฟล์แปลกปลอมที่เข้ามา ส่วนมากจะตามด้วยตัวเลข เช่น admin35226.php
    ซึ่งไฟล์ของ Magento นั้น จะไม่มีไฟล์ที่มีตัวเลขกำกับ หากเจอไฟล์ลักษณะดังกล่าว ให้ลบทิ้งได้เลย หรือหากต้องการตรวจสอบไฟล์โดยละเอียด ให้เปรียบเทียบไฟล์เว็บของเรา กับไฟล์ติดตั้ง Magento แบบ Original ซึ่งสามารถโหลดได้ที่นี้ครับ https://www.magentocommerce.com/download ให้โหลด Magento ให้ตรงกับเวอร์ชั่นที่เราใช้อยู่ การตรวจสอบว่า Magento ที่เราใช้อยู่เป็นเวอร์ชั่นอะไรนั้น ให้ดูตรง Footer ของระบบหลังร้าน ดังภาพ

การป้องกัน และเพิ่มความปลอดภัยให้เว็บไซต์ Magento

สำหรับวิธีการป้องกันเว็บไซต์โดน Hack และเพิ่มความปลอดภัยนั้น ให้ใช้หลายวิธีร่วมกันดังนี้

  1. ตั้ง Permission ของ Folder ต่างๆ ของ Magento ให้เป็น 775 และไฟล์ให้เป็น 644

    สำหรับการตั้งค่า Permission อย่างรวดเร็วนั้น สามารถใช้ไฟล์ magento-cleanup.php
    ซึ่งโหลดได้จากที่นี่ เมื่อ Download ได้ไฟล์ดังกล่าวแล้ว ให้อัพโหลดไปไว้ที่ public_html แล้วเรียก http://yourdomain.com/magento-cleanup.php

  2. ใส่ไฟล์ .htaccess ใน folder var และ media

    สำหรับ Folder media และ var นั้น จำเป็นต้องกำหนด permission เป็น 777 เพื่อให้สามารถอัพโหลดไฟล์ได้ ดังนั้นต้องป้องกันไม่ให้มีการเขียน Script ลงไปได้ ผมได้เขียนไฟล์ .htaccess เพื่อป้องกัน folder ดังกล่าวไว้ให้แล้ว สามารถ Download ได้ที่นี่ครับ เมื่อ Download แล้วให้อัพโหลดไปไว้ที่ folder var และ media

  3. เปลี่ยน URL เข้าระบบหลังร้าน

    หากเป็น Magento version เก่าๆ หน่อย ส่วนมากจะถูกตั้ง url เข้าระบบหลังร้านเป็น http://yourdomain.com/admin ซึ่งทำให้ Hacker สามารถเข้าสู่ระบบหลังร้านได้ง่ายขึ้น หรือเกิดการยิงไฟล์เข้ามาฝังที่เว็บของเราได้ การเปลี่ยน URL เข้าระบบหลังร้าน ให้ไปแก้ไขไฟล์ local.xml ซึ่งไฟล์ดังกล่าวอยู่ที่ app/etc/ ให้เปิดไฟล์ขึ้นมาด้วย Text Editor

    แล้วแก้บรรทัดที่ 57 จาก admin เป็นคำใหม่ที่ต้องการ เช่น myshop_office ต่อไปก็จะเข้าระบบหลังร้านได้ที่ http://yourdomain.com/myshop_office ซึ่งจะช่วยลดความเสี่ยงในการโดน hack ลงได้มาก
    backend-url

  4. Update Magento Patch อย่างสม่ำเสมอ

    Magento นั้นจะมีการออกไฟล์อัพเดท หรือไฟล์แก้ปัญหาความปลอดภัยออกมาเสมอ ซึ่งหากพบช่องโหว่ของระบบหรือมีการแจ้งไปยังทีมงาน Magento มักจะมีไฟล์ Patch ออกมาภายใน 1-2 วันการอัพเดท Patch นั้นเป็นการเอาไฟล์ใหม่ไปทับไฟล์ระบบเดิมที่เราใช้อยู่ ดังนั้นก่อนอัพเดท Patch จำไว้ 2 สิ่งนี้เสมอ *สำคัญมากครับ

    1. ไฟล์อัพเดทที่โหลดมาต้องเป็นไฟล์สำหรับ Magento version ที่เราใช้อยู่เท่านั้น อย่าเอาไฟล์คนละ version มาอัพใส่เด็ดขาด เพราะเว็บจะพังแบบไม่สามารถเอากลับคืนได้ครับ
    2. ให้ BackUp ไฟล์เว็บเดิมของเราไว้ก่อน โดยการดาวน์โหลดลงไว้ที่เครื่องเรา (โดยยกเว้น folder ver) หรือ backup ผ่านเครื่องมือของ Host

ขั้นตอนในการอัพเดท Patch มีดังนี้

  1. เข้าระบบหลังร้าน เพื่อเช็ค Version ของ Magento ที่เราใช้อยู่
    Magento version
  2. เข้าเว็บ https://www.magereport.com กรอก URL ของเว็บเราลงไป ระบบจะเช็คว่าเว็บเรายังขาด Security Patch ตัวไหนบ้าง
    – ขึ้นสีเขียวคือ Patch ที่มีอยู่แล้ว ปลอดภัยดี
    – ขึ้นสีแดง คือ Patch ที่ยังไม่ได้ลง ต้องทำการลง
    – ส่วนสีเทา ตรวจสอบแล้วไม่แน่ใจว่าลงแล้วหรือยัง แต่เท่าที่ผมลงมาหลายเว็บ สีเทาคือมีไฟล์ความปลอดภัยดังกล่าวอยู่กับ version ที่ใช้อยู่แล้ว ไม่ต้องลงเพิ่มครับก็จดเอาไว้ว่า Patch หมายเลขไหนที่เรายังไม่ได้ลง
    patch-1
  3. Downlaod ไฟล์ Patch ตัวที่เว็บเราขาดได้จากที่นี่ครับ https://magecomp.com/blog/how-to-install-magento-security-patches/
    เลือกหมายเลข Patch ที่เราขาดให้เลือก Install without SSH ครับ เพื่อ Download ไฟล์ Patch มาอัพโหลดผ่าน FTP เอง
    **สำคัญ** อย่าเลือกให้ตรงกับ version ที่ทางเราใช้อยู่ด้วยนะครับ

    2016-10-21_21-35-14

    เมื่อได้ไฟล์มาแล้ว ก็แตกไฟล์และอัพโหลดผ่าน FTP ได้เลยครับ

    Patch หมายเลขอื่นๆ ที่ยังไม่ได้ลง ก็ใช้วิธีการเดียวกันนี้ครับ