Cách thiết lập quyền truy cập file an toàn trên WordPress

Quyền truy cập file quan trọng đối với bảo mật WordPress?

Nhiều vụ tấn công bảo mật không bắt đầu từ brute-force hay malware injection, mà thường xuất phát từ những yếu tố cơ bản bị bỏ qua như quyền truy cập file không an toàn. Nếu các file trên site của bạn có quyền truy cập quá rộng rãi, kẻ tấn công có thể khai thác để phá hoại nội dung hoặc khóa bạn khỏi chính website của mình.

Hướng dẫn này sẽ giúp bạn thiết lập quyền truy cập WordPress phù hợp và bảo mật site ở tầng server, nơi hầu hết các cuộc tấn công bắt đầu.

Việc thiết lập quyền truy cập đúng không chỉ là chạy một vài lệnh đơn giản, mà cần hiểu rõ ai nên truy cập gì, server xử lý file như thế nào, và cách phát hiện điểm yếu trước khi kẻ khác khai thác.

Hiểu về quyền truy cập file WordPress

Quyền truy cập file là các thiết lập kiểm soát truy cập xác định cách thức file và thư mục có thể được sử dụng. Chúng dựa trên ba loại quyền:

  • Read (4): Cho phép xem nội dung file
  • Write (2): Cho phép chỉnh sửa file
  • Execute (1): Cho phép chạy script hoặc chương trình

Mỗi quyền được gán một giá trị số. Các giá trị này được cộng lại để xác định quyền truy cập cho các loại người dùng khác nhau:

  • 7 (4+2+1): Read, Write và Execute
  • 6 (4+2): Read và Write
  • 5 (4+1): Read và Execute
  • 4: Chỉ Read
  • 0: Không có quyền truy cập

Quyền được áp dụng cho ba loại người dùng:

  • Owner: Người dùng tạo ra hoặc sở hữu file
  • Group: Nhóm người dùng chia sẻ quyền truy cập file
  • Others (Public): Tất cả những người khác có quyền truy cập hệ thống

Một quyền thông thường như 644 được phân tích như sau:

  • 6 cho Owner (Read + Write)
  • 4 cho Group (Chỉ Read)
  • 4 cho Others (Chỉ Read)

Quyền sở hữu file (File Ownership)

Quyền sở hữu file xác định người dùng nào có quyền kiểm soát file hoặc thư mục. Trong môi trường WordPress, các file và folder nên thuộc sở hữu của tài khoản người dùng thay vì tài khoản web server để ngăn chặn những thay đổi trái phép từ các tiến trình web.

Nguyên tắc quan trọng:

  • File phải thuộc sở hữu của tài khoản người dùng
  • Web server chỉ được cấp quyền đọc
  • Folder nên cho phép quyền đọc và thực thi cho web server
  • Quyền ghi phải được hạn chế trừ khi cần thiết cho các chức năng như upload file hoặc caching

Quyền truy cập file WordPress mặc định

WordPress gán các quyền truy cập cụ thể theo mặc định để duy trì sự cân bằng giữa chức năng và bảo mật:

File/Thư mục Quyền Mục đích
.htaccess 644 Ngăn chặn can thiệp bằng cách chỉ cho phép owner chỉnh sửa
WP files 644 Owner có thể ghi, những người khác chỉ có thể đọc
Directories 755 Cho phép WordPress đọc và thực thi, nhưng không chỉnh sửa
wp-config.php 600 hoặc 640 Chặn truy cập trái phép đến cấu hình và thông tin đăng nhập nhạy cảm

Rủi ro bảo mật từ quyền truy cập file sai cấu hình

Khi quyền truy cập file bị cấu hình sai, chúng tạo ra các lỗ hổng bảo mật nghiêm trọng:

Các rủi ro phổ biến

1. Quyền truy cập quá rộng rãi

  • Quyền 777 cấp quyền truy cập đầy đủ cho mọi người, bao gồm kẻ tấn công
  • Mở cửa cho malware injection, defacement và backdoor

2. Quyền sở hữu file không chính xác

  • Khi file WordPress không thuộc sở hữu của đúng người dùng
  • Gây ra lỗi quyền truy cập và thay đổi file trái phép

3. File cấu hình không được bảo vệ

  • Nếu file như wp-config.php không được bảo mật
  • Kẻ tấn công có thể truy cập thông tin đăng nhập database và secret key

Tác động

  • Nhiễm malware
  • Bị penalize SEO
  • Mất quyền kiểm soát admin
  • Trên shared server, site bị tấn công có thể được sử dụng để tấn công những site khác
  • Mất lòng tin của visitor khi browser hoặc search engine đánh dấu site là nguy hiểm

Cách bảo mật quyền truy cập file WordPress

Để bảo mật quyền truy cập file, bạn cần truy cập vào file system của server. Có hai cách chính để quản lý file WordPress:

Phương pháp 1: SFTP (Secure File Transfer Protocol)

SFTP cho phép bạn truy cập và quản lý file site thông qua giao diện đồ họa, phù hợp cho người mới bắt đầu.

Các SFTP client phổ biến

  • FileZilla (Windows, macOS, Linux)
  • Cyberduck (macOS, Windows)
  • WinSCP (chỉ Windows)
  • Transmit (macOS)

Thông tin kết nối cần thiết

  • Hostname (ví dụ: ftp.yoursite.com)
  • Port (thường là 22 cho SFTP)
  • Username
  • Password hoặc SSH key

Phương pháp 2: SSH (Secure Shell Access)

SSH cung cấp quyền truy cập terminal trực tiếp đến server, cho phép kiểm soát đầy đủ thông qua các công cụ command-line.

Cách kết nối SSH:

  1. Mở terminal (macOS/Linux) hoặc sử dụng SSH client như PuTTY (Windows)
  2. Chạy lệnh: ssh your-username@your-server-ip
  3. Nhập password hoặc cung cấp SSH key khi được yêu cầu

So sánh các thao tác quản lý file

Thao tác SFTP SSH
Xem quyền file Right-click > Properties ls -l
Thay đổi quyền file Right-click > File permissions chmod 644 filename.php
Thay đổi quyền thư mục Right-click > File permissions chmod 755 foldername
Thay đổi ownership Không khả dụng chown user:group filename
Thay đổi quyền đệ quy Không khả dụng find . -type f -exec chmod 644 {} \;

Bảo mật các file WordPress quan trọng

Sử dụng .htaccess để chặn truy cập trái phép:

Chặn truy cập wp-config.php

<Files "wp-config.php">
    Order Allow,Deny
    Deny from all
</Files>

Vô hiệu hóa thực thi PHP trong wp-content/uploads

<Directory "/wp-content/uploads/">
    <FilesMatch "\.(php|php5|phtml)$">
        Order Allow,Deny
        Deny from all
    </FilesMatch>
</Directory>

Ngăn chặn thực thi trong wp-includes

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /
    RewriteRule ^wp-includes/.*\.php$ - [F,L]
</IfModule>

Lệnh SSH hữu ích để thiết lập quyền truy cập

Thiết lập quyền cơ bản

# Thiết lập quyền cho tất cả file và thư mục
find /path/to/wordpress/ -type d -exec chmod 755 {} \;
find /path/to/wordpress/ -type f -exec chmod 644 {} \;

# Thiết lập quyền đặc biệt cho wp-config.php
chmod 600 wp-config.php

# Thiết lập quyền cho .htaccess
chmod 644 .htaccess

Thay đổi ownership

# Thay đổi ownership cho toàn bộ thư mục WordPress
chown -R www-data:www-data /path/to/wordpress/

# Hoặc sử dụng user cụ thể
chown -R username:username /path/to/wordpress/

Kiểm tra quyền hiện tại

# Xem quyền và ownership
ls -la

# Xem quyền của file cụ thể
stat filename.php

Xử lý sự cố lỗi phổ biến

Lỗi 403 Forbidden

Nguyên nhân: Quyền truy cập quá hạn chế hoặc .htaccess sai cấu hình

Cách khắc phục:

# Thiết lập lại quyền cơ bản
find . -type d -exec chmod 755 {} \;
find . -type f -exec chmod 644 {} \;

# Backup và tạo lại .htaccess
mv .htaccess .htaccess_backup

Lỗi 500 Internal Server Error

Nguyên nhân: Quyền không chính xác trên .htaccess hoặc wp-config.php

Cách khắc phục:

chmod 644 .htaccess
chmod 600 wp-config.php

Lỗi “Permission Denied”

Nguyên nhân: File thiếu quyền đọc/ghi cần thiết cho web server

Cách khắc phục:

# Kiểm tra ownership hiện tại
ls -la

# Thay đổi ownership nếu cần
chown -R www-data:www-data /path/to/wordpress

Tăng cường bảo mật với Security Headers

Thêm các HTTP security header để tăng cường bảo vệ:

# Thêm vào .htaccess
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "strict-origin-when-cross-origin"

Plugin bảo mật hỗ trợ quản lý quyền truy cập

Một số plugin WordPress hữu ích:

  • Wordfence Security: Phát hiện lỗi cấu hình quyền và cảnh báo admin
  • iThemes Security: Quét và sửa quyền truy cập file không chính xác
  • Solid Security: Thực hiện các chính sách bảo mật mạnh mẽ
  • Sucuri Security: Giám sát file và phát hiện thay đổi bất thường

Script PHP tự động kiểm tra quyền file

Bạn có thể tạo script PHP để kiểm tra quyền file:

<?php
function checkFilePermissions($path) {
    $files = [
        'wp-config.php' => '600',
        '.htaccess' => '644',
        'index.php' => '644'
    ];
    
    foreach ($files as $file => $expectedPerm) {
        $fullPath = $path . '/' . $file;
        if (file_exists($fullPath)) {
            $currentPerm = substr(sprintf('%o', fileperms($fullPath)), -3);
            if ($currentPerm !== $expectedPerm) {
                echo "WARNING: {$file} has permission {$currentPerm}, should be {$expectedPerm}\n";
            } else {
                echo "OK: {$file} has correct permission {$currentPerm}\n";
            }
        }
    }
}

// Sử dụng
checkFilePermissions('/path/to/wordpress');
?>

Checklist bảo mật file WordPress

  • [ ] File thường: 644
  • [ ] Thư mục: 755
  • [ ] wp-config.php: 600
  • [ ] .htaccess: 644
  • [ ] Ownership thuộc về user account, không phải web server
  • [ ] Vô hiệu hóa PHP execution trong wp-content/uploads
  • [ ] Chặn truy cập trực tiếp wp-config.php
  • [ ] Backup định kỳ trước khi thay đổi quyền
  • [ ] Sử dụng security plugin để giám sát
  • [ ] Kiểm tra log định kỳ để phát hiện truy cập bất thường

Tối ưu hóa bảo mật cho môi trường khác nhau

Shared Hosting

  • Sử dụng 644 cho file và 755 cho thư mục
  • Không thể thay đổi ownership thường xuyên
  • Dựa vào .htaccess rules để bảo vệ

VPS/Dedicated Server

  • Có thể tùy chỉnh ownership đầy đủ
  • Cấu hình web server rules trực tiếp
  • Sử dụng firewall và fail2ban

Managed WordPress Hosting

  • Quyền thường được tự động quản lý
  • Tập trung vào content và functionality
  • Provider xử lý bảo mật tầng server

Kết luận

Thiết lập quyền truy cập file WordPress đúng cách là nền tảng quan trọng của bảo mật web. Bằng cách tuân thủ các nguyên tắc “least privilege”, giám sát thường xuyên và sử dụng các công cụ hỗ trợ, bạn có thể giảm đáng kể rủi ro bảo mật cho website WordPress của mình.

Hãy nhớ rằng bảo mật là một quá trình liên tục, không phải một việc làm một lần. Kiểm tra và cập nhật quyền truy cập file định kỳ để đảm bảo website luôn được bảo vệ tối ưu.


Lưu ý: Luôn tạo backup đầy đủ trước khi thực hiện bất kỳ thay đổi nào về quyền truy cập file. Nếu không chắc chắn, hãy tham khảo ý kiến từ chuyên gia hoặc nhà cung cấp hosting bạn đang sử dụng.

5/5 - (7 votes)

vutruso

Vũ Trụ Số chuyên cung cấp hosting cho WordPress, dịch vụ thiết kế website, quản trị website cho doanh nghiệp, các dịch vụ bảo mật website WordPress, tăng tốc website WordPress