• About
  • Advertise
  • Privacy & Policy
  • Contact
Friday, May 9, 2025
VPS Việt Nam
  • Trang chủ
  • Mini PC
    • All
    • Banana Pi
    • Raspberry Pi
    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Expand File System trên Banana Pi chạy Raspbian

    Expand File System trên Banana Pi chạy Raspbian

    Cấu hình Module Wifi BPIRT8822CS SDIO trên Banana Pi M5

    Cấu hình Module Wifi BPIRT8822CS SDIO trên Banana Pi M5

    Thiết lập IP tĩnh cho hệ điều hành Raspberry Pi OS

    Kiểm tra tốc độ Internet (Speed Test) trên Raspberry Pi

    Kiểm tra tốc độ Internet (Speed Test) trên Raspberry Pi

    Cài đặt IP tĩnh cho Ubuntu trên Raspberry Pi

    Cài đặt IP tĩnh cho Ubuntu trên Raspberry Pi

    Kích hoạt hiển thị HDMI màn Full HD Banana Pi M2 Berry

    Kích hoạt hiển thị HDMI màn Full HD Banana Pi M2 Berry

    Thay đổi Ubuntu Repository trên Raspberry Pi

    Thay đổi Ubuntu Repository trên Raspberry Pi

    Tạo nhiều DDNS Domain trên Synology

    Trending Tags

    • raspberry pi
    • Banana Pi
    • Raspberry Pi
  • Quản trị máy chủ
    • All
    • Email Server
    • Linux Server
    Xử lý lỗi Proxmox không thể backup Unprivileged Container

    Xử lý lỗi Proxmox không thể backup Unprivileged Container

    WordPress Lockdown – Ngăn chặn sửa nội dung file trong WordPress

    WordPress Lockdown – Ngăn chặn sửa nội dung file trong WordPress

    Tìm và xóa các file có đuôi .PHP trong một folder Linux

    Tìm và xóa các file có đuôi .PHP trong một folder Linux

    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Cấu hình rewrite NGINX cho WHMCS để sử dụng Friendly URL

    Cấu hình rewrite NGINX cho WHMCS để sử dụng Friendly URL

    Tiêu diệt con virus đào coin kdevtmpfsi

    Mở rộng LVM Disk trên Linux Ubuntu

    Mở rộng LVM Disk trên Linux Ubuntu

    Thiết lập Ubuntu Server luôn hoạt động khi đóng màn hình laptop

    Thiết lập Ubuntu Server luôn hoạt động khi đóng màn hình laptop

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    • Email Server
    • Linux Server
  • Web Control Panel
    • All
    • aaPanel
    • CloudPanel
    • CyberPanel
    • Direct Admin
    • HestiaCP
    • Webmin
    Fix lỗi “Access Denied: You do not have permission to view this page” trên HestiaCP

    Fix lỗi “Access Denied: You do not have permission to view this page” trên HestiaCP

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    [Step by Step] – Hướng dẫn cài đặt Webmin Control Panel trên Raspberry Pi

    [Step by Step] – Hướng dẫn cài đặt Webmin Control Panel trên Raspberry Pi

    Tắt tính năng tự động cài SSL trên DirectAdmin

    Tắt tính năng tự động cài SSL trên DirectAdmin

    CloudPanel – Web Hosting Control Panel miễn phí trên Raspberry Pi

    CloudPanel – Web Hosting Control Panel miễn phí trên Raspberry Pi

    Xóa queue backup user trong HestiaCP

    Xóa queue backup user trong HestiaCP

    Tạo nhiều DDNS Domain trên Synology

    • aaPanel
    • CloudPanel
    • cPanel
    • CyberPanel
    • Direct Admin
    • HestiaCP
    • Webmin
  • Synology
    Cấu hình Camera Xiaomi nhận ổ NAS Synology để lưu dữ liệu

    Cấu hình Camera Xiaomi nhận ổ NAS Synology để lưu dữ liệu

    Thêm Cloudflare vào dịch vụ Dynamic DNS (DDNS) của Synology NAS

    Thêm Cloudflare vào dịch vụ Dynamic DNS (DDNS) của Synology NAS

    Tạo nhiều DDNS Domain trên Synology

  • Bảo mật
  • Coding
No Result
View All Result
  • Trang chủ
  • Mini PC
    • All
    • Banana Pi
    • Raspberry Pi
    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Expand File System trên Banana Pi chạy Raspbian

    Expand File System trên Banana Pi chạy Raspbian

    Cấu hình Module Wifi BPIRT8822CS SDIO trên Banana Pi M5

    Cấu hình Module Wifi BPIRT8822CS SDIO trên Banana Pi M5

    Thiết lập IP tĩnh cho hệ điều hành Raspberry Pi OS

    Kiểm tra tốc độ Internet (Speed Test) trên Raspberry Pi

    Kiểm tra tốc độ Internet (Speed Test) trên Raspberry Pi

    Cài đặt IP tĩnh cho Ubuntu trên Raspberry Pi

    Cài đặt IP tĩnh cho Ubuntu trên Raspberry Pi

    Kích hoạt hiển thị HDMI màn Full HD Banana Pi M2 Berry

    Kích hoạt hiển thị HDMI màn Full HD Banana Pi M2 Berry

    Thay đổi Ubuntu Repository trên Raspberry Pi

    Thay đổi Ubuntu Repository trên Raspberry Pi

    Tạo nhiều DDNS Domain trên Synology

    Trending Tags

    • raspberry pi
    • Banana Pi
    • Raspberry Pi
  • Quản trị máy chủ
    • All
    • Email Server
    • Linux Server
    Xử lý lỗi Proxmox không thể backup Unprivileged Container

    Xử lý lỗi Proxmox không thể backup Unprivileged Container

    WordPress Lockdown – Ngăn chặn sửa nội dung file trong WordPress

    WordPress Lockdown – Ngăn chặn sửa nội dung file trong WordPress

    Tìm và xóa các file có đuôi .PHP trong một folder Linux

    Tìm và xóa các file có đuôi .PHP trong một folder Linux

    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Tìm Repository nhanh nhất cho Ubuntu trên Raspberry Pi

    Cấu hình rewrite NGINX cho WHMCS để sử dụng Friendly URL

    Cấu hình rewrite NGINX cho WHMCS để sử dụng Friendly URL

    Tiêu diệt con virus đào coin kdevtmpfsi

    Mở rộng LVM Disk trên Linux Ubuntu

    Mở rộng LVM Disk trên Linux Ubuntu

    Thiết lập Ubuntu Server luôn hoạt động khi đóng màn hình laptop

    Thiết lập Ubuntu Server luôn hoạt động khi đóng màn hình laptop

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    • Email Server
    • Linux Server
  • Web Control Panel
    • All
    • aaPanel
    • CloudPanel
    • CyberPanel
    • Direct Admin
    • HestiaCP
    • Webmin
    Fix lỗi “Access Denied: You do not have permission to view this page” trên HestiaCP

    Fix lỗi “Access Denied: You do not have permission to view this page” trên HestiaCP

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    Khôi phục mật khẩu Webadmin của OpenLiteSpeed Console

    [Step by Step] – Hướng dẫn cài đặt Webmin Control Panel trên Raspberry Pi

    [Step by Step] – Hướng dẫn cài đặt Webmin Control Panel trên Raspberry Pi

    Tắt tính năng tự động cài SSL trên DirectAdmin

    Tắt tính năng tự động cài SSL trên DirectAdmin

    CloudPanel – Web Hosting Control Panel miễn phí trên Raspberry Pi

    CloudPanel – Web Hosting Control Panel miễn phí trên Raspberry Pi

    Xóa queue backup user trong HestiaCP

    Xóa queue backup user trong HestiaCP

    Tạo nhiều DDNS Domain trên Synology

    • aaPanel
    • CloudPanel
    • cPanel
    • CyberPanel
    • Direct Admin
    • HestiaCP
    • Webmin
  • Synology
    Cấu hình Camera Xiaomi nhận ổ NAS Synology để lưu dữ liệu

    Cấu hình Camera Xiaomi nhận ổ NAS Synology để lưu dữ liệu

    Thêm Cloudflare vào dịch vụ Dynamic DNS (DDNS) của Synology NAS

    Thêm Cloudflare vào dịch vụ Dynamic DNS (DDNS) của Synology NAS

    Tạo nhiều DDNS Domain trên Synology

  • Bảo mật
  • Coding
No Result
View All Result
VPS Việt Nam
No Result
View All Result

Chia sẻ một số kinh nghiệm bảo mật website WordPress

Chia sẻ một số kinh nghiệm bảo mật website Wordpress

by VPS Việt Nam
21/10/2024
Home Bảo mật

Thi thoảng mình nhận được một số câu hỏi từ anh em, bạn bè về việc bảo mật website WordPress hoặc thậm chí là người quen của mình bị hack website WordPress và họ nhờ mình xử lý. Web thì đa dạng từ tin tức cho đến bán hàng, giới thiệu doanh nghiệp ….

Các hình thức hack website thì cũng vô vàn, từ việc bị chèn post (bài viết) để lấy backlink cho đến việc bị redirect sang website khác hoặc bị thay đổi nội dung trên web …

Thông thường, sau khi xử lý sự cố thì mình cũng chia sẻ với các bạn ấy một số kinh nghiệm để bảo mật website WordPress. Nhân tiện đây tổng hợp và chia sẻ lại với các bạn độc giả của vpsvietnam.com

Website WordPress có an toàn không?

Thực ra là có và không. Website nào cũng vậy, nó phụ thuộc vào người code và người quản trị khá nhiều. Bản thân WordPress không có tội, những lỗ hổng ở website phần lớn do ông code không cẩn thận hoặc do sử dụng các plugin/theme trôi nổi trên mạng đã bị chèn backdoor/shell. Một góc khác đến từ người quản trị như không đặt các mật khẩu phức tạp hoặc không thường xuyên cập nhật các bản update mới của Wordpres hay theme/plugin.

Kinh nghiệm bảo mật website WordPress

1. Đặt mật khẩu phức tạp

Mình thấy, 99.999% website WP bị chèn các bài post linh tinh là do admin đặt mật khẩu quá đơn giản. Một số lưu ý với trường hợp này

Không nên đặt user với tên phổ biến như admin, administrator … Hãy đặt theo tên cá nhân hoặc nickname riêng của bạn. Ví dụ: haodeptrai

Không đặt mật khẩu đơn giản kiểu 123456a@ … Hãy sử dụng mật khẩu phức tạp với chữ cái thường, chữ viết HOA, số và ký tự đặc biệt. Hoặc làm như mình đây, mật khẩu random, mình không thể nhớ nổi vì nó không có quy tắc gì cả ^_^

2. Khóa update plugin và theme

Đây là việc cần làm tiếp theo, đơn giản là mở wp-config.php lên và thêm vào 2 dòng này

define('DISALLOW_FILE_EDIT', true);
define('DISALLOW_FILE_MODS', true);

Sau khi thêm lệnh này, bạn sẽ không cài plugin hoặc sửa theme được. Khi nào muốn cài mới plugin hoặc sửa file thì bạn phải tắt nó đi bằng cách thêm // ở đầu. Dĩ nhiên với cách này, bạn vẫn có thể thêm/sửa file/plugin qua FTP được bình thường, chỉ không sửa trực tiếp trên web được thôi.

3. Tắt XML-RPC

XML-RPC là sử dụng giao thức WebService (soap) dùng XML để mã hóa và trao đổi dữ liệu (Remote Procedure Call XML) và có thể hỗ trợ các API của các CMS như WordPress API, Blogger API, Movable API, Pingback API, MetaWeblog API. Vì WordPress không phải là hệ thống đóng hoàn toàn nên tính năng này được tạo ra để khi WordPress cần giao tiếp với các hệ thống bên ngoài. Ví dụ, khi người dùng muốn chỉnh sửa hoặc đăng tải một bài viết lên WordPress không bằng máy tính mà thông qua điện thoại. Khi đó, XML-RPC sẽ kích hoạt trạng thái liên kết giữa máy tính và điện thoại, cho phép người dùng thực hiện các chỉnh sửa.

Tuy nhiên hiện tại XML-RPC là không cần thiết, các hacker có thể lợi dụng giao thức này để chèn nội dung vào website hoặc thậm chí lấy quyền admin. Để đảm bảo an toàn bạn nên tắt nó đi.

Có nhiều cách để tắt XML-RPC trên WordPress như dùng Plugin hoặc tắt từ web server. Mình hay chọn cách thứ 2, tắt từ web server. Hướng dẫn dưới đây cho NGINX và Apache

Tắt XML-RPC trên Nginx

Bạn thêm đoạn code sau vào file config của domain

location = /xmlrpc.php {
deny all;
access_log off;
log_not_found off;
}

Tắt XML-RPC trên Apache

Với Apache, bạn thêm đoạn code sau vào .htaccess của domain

# DISABLE XML RPC
<Files xmlrpc.php>
Order Deny,Allow
Deny from all
</Files>
#END

4. Đổi link đăng nhập admin

Mình thì không hay làm cái này lắm, nhưng thấy anh em bạn bè cũng hay làm. Đơn giản là dùng plugin WPS Hide Login thôi. Cài xong bạn sửa nó đi là được, cũng là 1 cách để mấy anh tò mò đỡ đi dò dẫm link đăng nhập

5. Tắt thông báo update Plugin

Cái này nó không liên quan lắm đến bảo mật website wordpress, nhưng đôi khi mình khá khó chịu với cái thông báo này nên cần thì có thể tắt nó đi. Như thường lệ, thêm đoạn code sau vào function.php của theme.

// Disable Update Notifications
function hide_update_notice_to_all_but_admin_users()
{
    if (!current_user_can('update_core')) {
        remove_action( 'admin_notices', 'update_nag', 3 );
    }
}
add_action( 'admin_head', 'hide_update_notice_to_all_but_admin_users', 1 );
function remove_core_updates(){
    global $wp_version;return(object) array('last_checked'=> time(),'version_checked'=> $wp_version,);
}
add_filter('pre_site_transient_update_core','remove_core_updates');
add_filter('pre_site_transient_update_plugins','remove_core_updates');
add_filter('pre_site_transient_update_themes','remove_core_updates');

Sau khi thêm vào, bạn sẽ không thấy cái thông báo update như dưới đây nữa

6. Tắt thông báo của admin

Cái này cũng không liên quan đến bảo mật, chỉ là nhìn ngứa mắt thôi

Đoạn code dưới đây sẽ ẩn các thông báo này đi. Bạn cũng thêm vào function.php nhé

//Disable Admin Notices
function pr_disable_admin_notices() {
   global $wp_filter;
   if ( is_user_admin() ) {
       if ( isset( $wp_filter['user_admin_notices'] ) ) {
           unset( $wp_filter['user_admin_notices'] );
       }
   } elseif ( isset( $wp_filter['admin_notices'] ) ) {
       unset( $wp_filter['admin_notices'] );
   }
   if ( isset( $wp_filter['all_admin_notices'] ) ) {
       unset( $wp_filter['all_admin_notices'] );
   }
}
add_action( 'admin_print_scripts', 'pr_disable_admin_notices' );

add_action( 'admin_menu', 'remove_menus', 999 );

7. Ẩn bớt các menu không cần thiết

Tiếp tục là 1 mục không liên quan đến bảo mật mà chỉ là tinh chỉnh wp-admin nhìn cho gọn gàng

// Xoa menu
 add_action( 'admin_menu', 'remove_menus', 999 );

function remove_menus() {
    global $menu;
    global $submenu;

    // echo '<pre>';
    // print_r($menu);
    // print_r($submenu);
    // echo '</pre>';

    // If you're not the site creator
    // Hide some menus
    unset($menu[25]); // Removes 'Comments'.
    unset($menu[65]); // Removes 'Plugins'.
    // unset($menu[75]); // Removes 'Tools'.

    unset($submenu['index.php'][10]); // Removes 'Updates'.

    unset($submenu['themes.php'][11]); // Removes 'Editor'.

    //WPML
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][0]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][1]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][3]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][4]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][5]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][7]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][8]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][9]);
    unset($submenu['sitepress-multilingual-cms/menu/languages.php'][10]);

    remove_menu_page( 'edit.php?post_type=acf-field-group' );    // ACF
}

Đoạn code trên ở trong function.php sẽ ẩn bớt các menu như Plugins, Comments, Tools hoặc menu liên quan WPML, ACF Field

8. Tìm một số ký tự trong các file PHP

Lệnh này được áp dụng khi bạn cần tìm một chuỗi ký tự, từ khóa nào đó trong các file .PHP nằm bên trong thư mục của wordpress. Thông thường, kẻ tấn công sẽ chèn các đoạn mã độc hại vào các file .php hoặc thậm chí là up các file .php lên thư mục code của wordpress. Chúng ta cần tìm xem có đoạn mã nào lạ hay không.

Ngoài ra, các đoạn mã này thường được mã hóa, nên chúng ta có thể dựa vào đó để tìm theo một số keyword như eval() assert() base64() gzdeflate() str_rot13()

Lệnh tìm kiếm sẽ là

grep -r --include=*.php "search string" /path/to/dir

9. Hiển thị các file mới được chỉnh sửa gần đây.

Nếu xác định được khoảng thời gian bị tấn công. Bạn có thể tìm kiếm trong khoảng thời gian đó để biết xem file nào đã bị chỉnh sửa qua lệnh sau

find ./ -type f -mtime -15

 

VPS Việt Nam

Xuất thân là người làm kỹ thuật. Tôi hay sử dụng blog để ghi lại những lần xử lý sự cố của mình. Rồi dùng nó để chia sẻ đến với mọi người. Mong là sẽ giúp được các bạn.

Next Post
Chặn truy cập các file PHP trong folder uploads của WordPress

Chặn truy cập các file PHP trong folder uploads của Wordpress

VPS Việt Nam

Chia Sẻ - Kinh Nghiệm - Kết Nối

Categories

  • aaPanel
  • Banana Pi
  • Bảo mật
  • CloudPanel
  • Coding
  • CyberPanel
  • Direct Admin
  • Email Server
  • HestiaCP
  • Linux Server
  • Mini PC
  • Quản trị máy chủ
  • Raspberry Pi
  • Synology
  • Web Control Panel
  • Webmin

© 2022 VPS Việt Nam - Tài trợ máy chủ bởi VietIDC và Raspberry Pi Việt Nam.

No Result
View All Result
  • Mini PC
  • Raspberry Pi
  • Banana Pi
  • Synology
  • Quản trị máy chủ
  • Web Control Panel
    • cPanel
    • aaPanel
    • CyberPanel
  • Direct Admin
  • Webmin
  • CloudPanel

© 2022 VPS Việt Nam - Tài trợ máy chủ bởi VietIDC và Raspberry Pi Việt Nam.