Cấu hình bảo mật trang web là một phần quan trọng trong việc đảm bảo an toàn cho ứng dụng web của bạn. Nginx là một máy chủ web phổ biến và mạnh mẽ, cung cấp nhiều tính năng bảo mật để bảo vệ trang web của bạn khỏi các mối đe dọa tiềm tàng. Trong bài viết này, chúng ta sẽ tìm hiểu về cách cấu hình Nginx để bảo mật wordpress hoặc Website của bạn.
Một số cách cấu hình để bảo mật trang web Wordpress với Nginx
Nginx là một máy chủ web mã nguồn mở, miễn phí và phổ biến với khả năng xử lý lưu lượng truy cập cao. Nó được biết đến với tính ổn định, hiệu suất cao, tài nguyên ít và cấu hình đơn giản. Tuy nhiên, để đảm bảo bảo mật, cấu hình mặc định của Nginx cần được điều chỉnh để ngăn chặn các cuộc tấn công và vi phạm.
Bước 1: Cài đặt và cấu hình SSL để bảo mật Wordpress

Cài đặt SSL (HTTPS) cho website hay trang Wordpress sẽ giúp bảo mật dữ liệu giữa người dùng và máy chủ. Trang web được cài đặt SSL sẽ tăng mức độ uy tín cho người truy cập. Google cũng công bố rằng thứ hạng của các trang web sẽ được cải thiện khi sử dụng HTTPS.
Để cài đặt SSL là một phương thức cơ bản để bảo mật cho trang web trên máy chủ Nginx. Nếu bạn không có kinh nghiệm, bạn có thể liên hệ với nhà cung cấp hosting
hoặc VPS server
của bạn. Ngoài ra bạn cũng có thể tự hoặc có thể tự cài đặt Free Let’s Encrypt SSL
. Sau đó kiểm tra mức độ bảo mật tên miền của bạn tại SSL Labs
.

Bước 2: Tắt các giao thức SSL/TLS đã lỗi thời
Sau khi bạn cài đặt SSL nhưng trang web của bạn vẫn chưa được bảo mật hoàn toàn. Các phiên bản TLS như TLS 1.0, TLS 1.1 và SSL 3 được coi là các lỗ hổng yếu và lỗi thời mà hacker có thể khai thác và cuối cùng xâm nhập máy chủ web của bạn. Các giao thức này dễ có lỗ hổng như POODLE
, BEAST
và CRIME
.
Trên thực tế, hầu hết các trình duyệt web phổ biến và được sử dụng rộng rãi đã thông báo ngừng hỗ trợ TLS 1.0 và TLS 1.1 như Chrome, Firefox, Safari/Webkit và Microsoft Edge . Để loại bỏ các giao thức SSL/TLS đã lỗi thời trong Nginx, hãy làm như sau:
Đăng nhập vào máy chủ và tìm file nginx.conf
trong cấu hình Nginx của bạn. Ví dụ ItsmeIT đăng nhập qua SSH và sửa file như sau:
sudo nano /etc/nginx/nginx.conf
Để cấu hình bảo mật trang web với Nginx trong giao thức SSL/TLS chỉ cần xóa các giao thức TLSv1 và TLSv1.1 đã cũ và thêm TLSv1.2 & TLSv1.3 ở dòng config “ssl_protocols”.

ssl_protocols TLSv1.2 TLSv1.3 ; # Dropping SSLv3, ref: POODLE
Sau đó lưu lại cấu hình và restart
lại nginx
sudo systemctl restart nginx
Bước 3: Ngăn chặn tiết lộ thông tin server

Một phần trong bài viết hướng dẫn cách bảo mật trang web với Nginx (Nginx Server Security) là tắt hiển thị thông tin server nginx qua HTTP header. Bạn hãy thử check tên miền trên trang web Server Signature Site
, nếu nó là dấu tích xanh thì trang web của bạn đã được bảo mật. Còn nếu nó có biểu tượng X cảnh bảo màu vàng thì bạn có thể làm như bên dưới và kiểm tra lại một lần nữa.
sudo nano /etc/nginx/nginx.conf
Trong cấu hình http { } bạn bỏ comment ở biến server_tokens off; là được. Hoặc nêu không có thì thêm server_tokens off; trong http {} là được. Sau đó restart lại nginx.
server_tokens off;
sudo service nginx restart
Bước 4: Chặn các phương thức HTTP qua API
Một cách cấu hình bảo mật trang web Wordpress với nginx khác là vô hiệu hóa các giao thức HTTP không mong muốn sẽ không được server
Nginx triển khai. Dòng dưới đây sẽ cho phép triển khai các phương thức GET, POST, HEAD
và loại trừ tất cả các phương thức khác bao gồm TRACE
và DELETE
. Để làm điều này hãy tìm đến file cấu hình tên miền của bạn và thêm vào nội dung sau.
location / { # ... limit_except GET HEAD POST { deny all; } }
Bước 5: Ngăn ngừa tràn bộ nhớ Nginx [Full Memory]
Trong quản lý bộ nhớ, cache là vị trí lưu trữ tạm thời chứa dữ liệu khi nó bắt đầu được chuyển từ vị trí bộ nhớ này sang vị trí bộ nhớ khác.
Khi khối lượng dữ liệu vượt quá dung lượng của bộ đệm bộ nhớ, sẽ xảy ra hiện tượng tràn bộ đệm. Nói cách khác, tràn bộ đệm xảy ra khi một chương trình ghi nhiều dữ liệu hơn vào một khối bộ nhớ mà nó có thể chứa hoặc xử lý. Vì vậy bạn cần cấu hình nginx để bảo vệ trang web Wordpress ngăn không để bộ nhớ bị đầy.
Kẻ tấn công có thể khai thác lỗ hổng này để gửi mã độc hại có thể xâm phạm hệ thống. Theo thông lệ tiêu chuẩn, bạn nên thực hiện một vài chỉnh sửa đối với máy chủ Web để giảm thiểu các vấn đề như vậy. Tiếp tục mở file nginx.conf và thêm vào bên trong http {} nội dung sau.
sudo nano /etc/nginx/nginx.conf
##buffer policy client_body_buffer_size 1K; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k; ##end buffer policy
Bước 6: Ngăn chặn các cuộc tấn công XSS
Tấn công XSS (cross-site scripting
) là một cuộc tấn công trong đó tin tặc sử dụng script
vào trang web. Khi khách truy cập vào trang web, script được tải xuống và có thể truy cập các tài nguyên trình duyệt khác nhau như cookie
và mã thông báo phiên.
Một trong những biện pháp ngăn chặn chống lại kiểu tấn công như vậy là thêm dòng bên dưới vào tệp ssl.conf
để bảo mật trang web Wordpress với Nginx.
add_header X-XSS-Protection "1; mode=block";
Bước 7: Ngăn chặn tấn công Avoid Clickjacking
Để tránh các cuộc tấn công clickjacking
và cấu hình bảo mật trang web Wordpress với Nginx, hãy nối X-Frame-Options trong tiêu đề HTTP trong tệp nginx.conf như bên dưới sau đó restart
lại nginx.

sudo nano /etc/nginx/nginx.conf
add_header X-Frame-Options "SAMEORIGIN";
Bước 8: Chặn User Agent độc hại
Bạn có thể chặn bất kỳ tác nhân người dùng http nào bằng các yêu cầu GET/POST có nội dung của bạn hoặc cố gắng khai thác lỗ hổng phần mềm. Để làm điều này tiếp tục mở và sửa file nginx.conf thêm vào nội dung sau.
if ($http_user_agent ~* LWP::Simple|BBBike|wget) { return 403; }
Bước 9: Ngăn chặn Image hotlinking
Hotlinking là một phương pháp mà người dùng liên kết hình ảnh với trang web của bạn thay vì trực tiếp tải hình ảnh lên trang web của họ. Khi điều này xảy ra, hình ảnh của bạn xuất hiện trên trang web của họ và mặt trái của điều này là bạn sẽ phải trả thêm băng thông máy chủ Nginx.
Để làm điều nãy hãy mở file cấu hình tên miền của bạn và thêm vào nội dung bến dưới, sau đó restart
lại Nginx. (Thay itsmeit.co bằng tên miền của bạn)
# Stop deep linking or hot linking location /images/ { valid_referers none blocked www.itsmeit.co itsmeit.co; if ($invalid_referer) { return 403; } }
Bạn cũng có thể chỉ định các phần mở rộng hình ảnh như được hiển thị để cấu hình bảo mật trang Wordpress với Nginx:
valid_referers blocked itsmeit.co www.itsmeit.co; if ($invalid_referer) { rewrite ^/images/uploads.*\.(gif|jpg|jpeg|png)$ http://www.itsmeit.co/banned.jpg last }
Bước 10: Ngăn ngừa, giảm thiểu DDoS Website
Bạn có thể hạn chế số lượng kết nối mà một địa chỉ IP người dùng có thể mở đến một giới hạn phù hợp với việc sử dụng thực tế. Ví dụ, bạn có thể cho phép mỗi địa chỉ IP của khách hàng ứng dụng mở tối đa 10 kết nối đến khu vực hoặc cửa hàng trên trang web của bạn.

limit_conn_zone $binary_remote_addr zone=addr:10m; server { # ... location /store/ { limit_conn addr 10; # ... } }
Tham khảo thêm: Cấu hình phòng chống ddos website hoặc plugin bảo mật WordPress
Trên đây là tổng hợp một 1 số hướng dẫn cách cấu hình bảo mật trang web với Nginx của mình và bảo mật nó khỏi các kỹ thuật khai thác phổ biến. Điều này sẽ giúp ích rất nhiều trong việc bảo vệ các tệp trang web của bạn và cả những người truy cập vào trang web Wordpress của bạn.
– Advertising –