Bỏ qua tới nội dung
Theo dõi định kỳTheo dõi site

Bảo mật WordPress ảnh hưởng SEO: xmlrpc bị dò mật khẩu, plugin bỏ hoang, liên kết ẩn bị chèn

Với SEO, bảo mật WordPress không chỉ là chuyện mất dữ liệu: site bị chiếm thường bị dùng để chèn trang spam, liên kết ẩn, chuyển hướng người dùng điện thoại, và có thể nhận cảnh báo từ Google. Ba lỗ bị khai thác nhiều nhất là plugin, giao diện lỗi thời hoặc bỏ hoang, mật khẩu yếu bị dò qua xmlrpc và wp-login, và bản bẻ khoá có sẵn cửa hậu.

Ban biên tập SEO Gốc · · 6 phút đọc

Chủ nhà lắp ổ khoá chốt mới chắc chắn lên cánh cửa gỗ của nhà phố, cận cảnh đôi tay và cánh cửa

WordPress chạy một phần rất lớn website trên thế giới, nên nó là mục tiêu tự động hoá của kẻ tấn công. Phần lớn cuộc tấn công không nhắm riêng site của bạn; đó là bot quét hàng triệu site, thử mật khẩu phổ biến, thử lỗ hổng đã công bố của plugin. Khi vào được, mục tiêu hay gặp nhất không phải phá site mà là dùng uy tín tên miền của bạn để làm SEO cho họ: chèn trang cá cược, liên kết ẩn, chuyển hướng người dùng từ Google. Bài site bị hack chèn spam nói cách phát hiện và dọn; bài này nói cách phòng trên WordPress.

Bảo mật ảnh hưởng SEO thế nào

Sự cốHậu quả với SEO
Chèn trang spam (cá cược, hàng giả)Hàng nghìn trang lạ được lập chỉ mục; tên site gắn với nội dung xấu; có thể bị thao tác thủ công
Chèn liên kết ẩn ra ngoàiSite bị coi là bán liên kết
Chuyển hướng lén người dùng điện thoạiNgười dùng bỏ đi, cảnh báo bảo mật trên kết quả
Mã độc tải về máy người xemCảnh báo “Trang web này có thể gây hại”, trình duyệt chặn truy cập
Bot dò mật khẩu liên tụcMáy chủ quá tải, trang chậm, Googlebot nhận 5xx
Sửa nội dung, thêm noindexTrang rơi khỏi chỉ mục mà chủ site không biết

Một hiểu lầm hay gặp: “site có tường lửa của hosting, có Cloudflare rồi thì yên tâm”. Tường lửa chặn được nhiều kiểu tấn công phổ biến và nên có, nhưng không thay được việc cập nhật. Lỗ hổng trong một plugin cho phép người đã đăng nhập ở quyền thấp leo lên quyền quản trị, chẳng hạn, đi qua tường lửa như một yêu cầu bình thường.

Lỗ thứ nhất: plugin, giao diện lỗi thời và bỏ hoang

Phần lớn sự cố trên WordPress đến từ lỗ hổng trong plugin và giao diện, không phải trong lõi WordPress. Lỗ hổng được công bố công khai, bot quét site dùng phiên bản dính lỗi trong vài ngày.

  • Cập nhật đều: lõi, plugin, giao diện. Bật tự cập nhật cho bản vá nhỏ.
  • Gỡ plugin không dùng, không chỉ tắt. Plugin tắt vẫn nằm trên máy chủ và vẫn có thể bị khai thác ở một số kiểu lỗi.
  • Bỏ plugin bỏ hoang: plugin không được cập nhật hơn một năm, tác giả không còn hoạt động, đã bị gỡ khỏi kho chính thức. Tìm thay thế.
  • Không dùng bản bẻ khoá (nulled) của giao diện, plugin trả phí. Nhiều bản có sẵn mã chèn liên kết hoặc cửa hậu. Tiết kiệm vài chục đô la, mất cả site.

Lỗ thứ hai: mật khẩu và đăng nhập

Bot thử mật khẩu qua hai cửa: trang đăng nhập /wp-login.php và giao diện /xmlrpc.php. Cửa thứ hai nguy hiểm hơn vì một lệnh system.multicall có thể thử hàng trăm mật khẩu trong một yêu cầu. Đọc nhật ký truy cập của site WordPress trên hosting dùng chung, không hiếm thấy lượt gọi xmlrpc chiếm một phần rất lớn lưu lượng, phần lớn từ các dải IP máy chủ đám mây. Mỗi lượt tốn CPU gần như dựng cả trang, nên ngoài rủi ro bảo mật còn làm site chậm cho chính khách và Googlebot.

  1. Mật khẩu dài, riêng cho mọi tài khoản quản trị; không dùng tên đăng nhập “admin”.
  2. Xác thực hai bước cho quản trị viên.
  3. Chặn xmlrpc.php nếu không dùng ứng dụng WordPress trên điện thoại, Jetpack hay công cụ đăng bài từ xa. Chặn ở máy chủ là nhẹ nhất:
    # Apache (.htaccess)
    <Files xmlrpc.php>
      Require all denied
    </Files>
    
    # nginx
    location = /xmlrpc.php { deny all; }
    Lưu ý: chặn xong thì ứng dụng di động và Jetpack không đăng bài được; hỏi người dùng site trước.
  4. Giới hạn số lần đăng nhập sai, có thể kèm thử thách chống bot ở trang đăng nhập.
  5. Ít tài khoản quản trị: cộng tác viên viết bài chỉ cần quyền tác giả hoặc biên tập. Xoá tài khoản của người đã nghỉ.
Bảo vệ ở cổng khu dân cư lúc chập tối từ chối mấy người giao hàng không có thẻ ra vào

Lỗ thứ ba: máy chủ và tệp

  • Thư mục tải lên không chạy PHP: tệp PHP lạ trong /wp-content/uploads/ là dấu hiệu bị xâm nhập kinh điển. Cấu hình máy chủ chặn thực thi PHP ở đó.
  • Không để tệp sao lưu trong thư mục web: tệp .zip, .sql, wp-config.php.bak tải về được qua địa chỉ là lộ toàn bộ mã và mật khẩu cơ sở dữ liệu. Sao lưu ra ngoài thư mục web.
  • Tắt sửa tệp trong trang quản trị: define('DISALLOW_FILE_EDIT', true); trong wp-config.php, để kẻ chiếm được tài khoản quản trị không sửa thẳng mã giao diện.
  • Phân quyền tệp đúng, PHP phiên bản còn được hỗ trợ.
  • Sao lưu tự động lưu ngoài máy chủ, kiểm khôi phục được.

Theo dõi để phát hiện sớm

  • Search Console: mục Vấn đề bảo mật và Thao tác thủ công; báo cáo Hiệu suất có câu tìm lạ (tên hàng hiệu, cá cược).
  • Tìm site:tenmien.vn kèm từ khoá spam định kỳ.
  • Theo dõi thay đổi từ bên ngoài: title, canonical, chuyển hướng, số liên kết ra ngoài của trang chủ thay đổi bất thường là dấu hiệu. Chấm điểm SEO cho ảnh chụp từng lần; Siêu SEO chấm lại định kỳ và báo khi có thay đổi lạ.
  • Danh sách người dùng trong WordPress và trong Search Console: tài khoản lạ là dấu hiệu.

Khi site do bên ngoài dựng và không ai trông

Rất nhiều site doanh nghiệp, trường học, phòng khám ở Việt Nam được một bên thiết kế web dựng xong, bàn giao, rồi không ai cập nhật suốt nhiều năm. Đây là nhóm site bị chiếm nhiều nhất. Nếu site của bạn thuộc nhóm này:

  • Hỏi xem ai còn giữ quyền quản trị, quyền hosting, quyền tên miền; đổi mật khẩu, chuyển quyền chủ sở hữu về doanh nghiệp.
  • Kiểm phiên bản WordPress, PHP, danh sách plugin; cập nhật hoặc nhờ người cập nhật, sau khi sao lưu.
  • Xoá tài khoản quản trị của người đã không còn làm.
  • Nếu không có ai chăm lâu dài, cân nhắc gói hosting WordPress có quản lý (cập nhật, sao lưu, tường lửa) hoặc hợp đồng bảo trì nhỏ hằng tháng; rẻ hơn nhiều so với chi phí dọn site bị hack và hồi thứ hạng.

Ví dụ: trường mầm non và trang cá cược

Ví dụ minh hoạ: site một trường mầm non tư thục dựng năm 2019, giao diện mua sẵn bản bẻ khoá, 22 plugin, ba năm không cập nhật. Phụ huynh báo bấm vào kết quả tìm tên trường trên điện thoại thì ra trang cá cược. Kiểm: tệp giao diện có đoạn mã chuyển hướng người dùng điện thoại đến từ Google; thư mục tải lên có vài chục tệp PHP lạ; tìm site: ra hàng trăm trang “nhà cái” nằm dưới tên miền của trường; nhật ký truy cập cho thấy xmlrpc bị dò mật khẩu liên tục từ trước đó nhiều tháng.

Dọn theo quy trình ở bài site bị hack, rồi phòng: đổi sang giao diện chính chủ, gỡ còn 9 plugin cần thiết, cập nhật tất cả, chặn xmlrpc, bật xác thực hai bước, chặn chạy PHP trong thư mục tải lên, sao lưu tự động ra ngoài, đặt lịch theo dõi từ bên ngoài. Cái giá của lần sự cố (dọn, mất lượt tìm tên trường trong mùa tuyển sinh, mất lòng tin phụ huynh) lớn hơn nhiều lần chi phí bảo trì của cả ba năm trước đó.

Checklist

  1. Cập nhật lõi, plugin, giao diện đều đặn; gỡ hẳn plugin không dùng, thay plugin bỏ hoang bằng lựa chọn còn được duy trì.
  2. Không dùng bản bẻ khoá của giao diện, plugin trả phí.
  3. Mật khẩu mạnh, riêng cho từng người, không dùng tên “admin”, bật xác thực hai bước.
  4. Chặn xmlrpc nếu không dùng; giới hạn đăng nhập sai.
  5. Thư mục tải lên không chạy PHP; không để tệp sao lưu trong thư mục web.
  6. DISALLOW_FILE_EDIT; quyền tệp đúng; PHP còn hỗ trợ.
  7. Sao lưu ngoài máy chủ, thử khôi phục ít nhất một lần để chắc bản sao lưu dùng được.
  8. Theo dõi Search Console, tìm site:, theo dõi thay đổi từ bên ngoài.

Hỏi đáp

Site WordPress nhỏ có bị tấn công không?

Có. Phần lớn cuộc tấn công là bot tự động quét mọi site, không phân biệt lớn nhỏ. Site nhỏ, ít được chăm thường dễ bị chiếm hơn và bị dùng để chèn trang spam.

Có nên chặn xmlrpc.php không?

Nên, nếu không dùng ứng dụng WordPress trên điện thoại, Jetpack hay công cụ đăng bài từ xa. xmlrpc là cửa dò mật khẩu phổ biến và tốn tài nguyên máy chủ.

Tắt plugin có đủ an toàn không?

Không hẳn. Plugin tắt vẫn nằm trên máy chủ. Gỡ hẳn plugin không dùng là an toàn hơn.

Bị hack ảnh hưởng thứ hạng bao lâu?

Tuỳ mức độ và tốc độ dọn. Nếu dọn sạch, trang spam trả 404 hoặc 410, gửi yêu cầu xem xét lại khi có cảnh báo, thứ hạng thường hồi sau khi Google thu thập lại. Phát hiện càng sớm càng ít thiệt hại.

Đọc tiếp