Nội dung
- 0.1 Tắt duyệt thư mục
- 0.2 Ẩn thông tin máy chủ Apache
- 0.3 Kích hoạt theo dõi symbolic link
- 0.4 Cấu hình múi giờ
- 0.5 Mã hóa văn bản hiển thị
- 0.6 Bảo vệ file cấu hình wp-config.php
- 0.7 Bảo vệ file .htaccess
- 0.8 Chống spam bình luận
- 0.9 Ngăn chặn tìm kiếm người dùng
- 0.10 Vô hiệu hóa hotlinking
- 0.11 Chặn IP
- 0.12 Chặn truy cập từ một website khác
- 0.13 Chuyển hướng người dùng từ site này sang site khác.
- 0.14 Thiết lập chuyển hướng
- 0.15 Chuyển hướng URL sang www.
- 0.16 Chuyển hướng sang HTTPS
- 0.17 Tùy biến trang bảo trì (maintenance)
- 0.18 Kích hoạt cache
- 0.19 Vô hiệu hóa truy cập tài nguyên
- 0.20 Bảo vệ chống lại các mối đe dọa khác
- 1 .htaccess cho wp-admin
- 2 .htaccess cho wp-includes
- 3 .htaccess cho wp-content
- 4 .htaccess cho wp-content/uploads
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
htaccess tự động sinh ra sau khi bạn cài đặt wordpress. Đây là file cấu hình server cho máy chủ Apache, sử dụng để cấu hình permalink của website. Khi bạn cập nhật là đường dẫn URL từ trang Settings > Permalinks, thì file .htaccess sẽ được sửa đổi.
Nội dung của file này sẽ chỉ dẫn Apache cho việc điều hướng website của bạn như mong muốn. Tuy nhiên, nếu bạn cố gắng sửa đổi hoặc không thực sự rành về cấu hình của file này thì sẽ dẫn đến lỗi website.
Nhờ có .htaccess bạn có thể:
- Cải thiện bảo mật wordpress
- Tăng tốc độ load trang
- Thiết lập chuyển hướng
- Giới hạn/chống spam
- ..
Vị trí của .htaccess sẽ nằm tại thư mục gốc chứa code WordPress (chứa thư mục wp-admin, wp-includes & wp-content). Bạn có thể tạo nhiều file .htaccess ở các thư mục con khác. Với WordPress có thể đặt ở thư mục wp-admin, wp-content/uploads
.htaccess sẽ có ảnh hưởng bắt đầu từ trong thư mục mẹ chứa nó, và các thư mục con trở vào.
Bạn tưởng tượng, nếu file .htaccess trong thư mục wp-content/uploads , thư mục `uploads` và các thư mục con của nó sẽ bị tác động bởi file .htaccess này. Hãy cẩn thận!!
Sửa code trong .htaccess khá đơn giản, với những đoạn snippet mẫu mà tôi sẽ đề cập trong bài viết này. Trước khi bắt đầu, bạn nên tạo bản sao .htaccess, nếu có sẩy ra lỗi bạn dễ dàng khôi phục. Mặc định file .htaccess có nội như thế này.
# BEGIN WordPress RewriteEngine On RewriteBase / RewriteRule ^index\.php$ - - [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteRule . /index.php [L] # WordPress
Nếu bạn cài đặt WordPress multisite, code sẽ khác 1 chút. Tiếp sau bạn sẽ cần bổ xung cấu hình với các đoạn snippet mà mình trình bày ở dưới đây. Chú ý, đừng sửa code trong phần # BEGIN WordPress
và # END WordPress
vì đây là nội dung tạo bởi wordpress, rất có thể sẽ bị tạo lại bạn cập nhật lại permalink.
Tắt duyệt thư mục
Mặc định nếu bạn truy cập vào một thư mục, server sẽ trả về trang liệt kê các files có trong đó. Nó trông giống như trình quản lý file đạng đơn giản.
Quá dễ dàng với hacker để xem các files của bạn, một manh mối quan trọng với họ để có thể tấn công vào wordpress. Thêm dòng sau vào .htaccess để tắt chế độ duyệt thư mục.
# Désactivate the display of contents of rédirectories Options All -Indexes
Cũng có thể sử dụng mã này để chặn duyệt thư mục theo cách khác.
# Alternative pour empêcher le listing des rédirectories IndexIgnore *
Ẩn thông tin máy chủ Apache
Với một số nhà cung cấp hosting, có riêng một trang để hiển thị thông tin của máy chủ web. Nếu bạn để lộ thông tin này cho hacker biết, server có thể bị tấn công, đặc biệt nếu bạn không thường xuyên cập hệ điều hành mới.
Vì vậy, tốt nhất bạn nên tắt thông tin này đi.
# Mask the information of server ServerSignature Off
Kích hoạt theo dõi symbolic link
Thêm dòng sau vào .htaccess, server của bạn sẽ có thể theo dõi được symbolic links (vd: shortcut)
# Activation du suivi des liens symboliques Options +FollowSymLinks
Cấu hình múi giờ
Không quá quan trọng nếu bạn đặt máy chủ ở nước ngoài, tuy nhiên bạn có thể điều chỉnh lại múi giờ bằng cách thêm mã này vào .htaccess
# Choix du fuseau horaire SetEnv TZ Europe/Paris
Mã hóa văn bản hiển thị
Hầu hết các web hiện nay đều mã hóa văn bản cho HTML là UTF8.
# Encoding by défaut des fichiers textes et HTML AddDefaultCharset UTF-8
Bảo vệ file cấu hình wp-config.php
Đây là File chứa toàn bộ cấu hình của WordPress, như thông tin database. Đó là thông tin nhạy cảm, cần được bảo mật. Thêm các dòng sau vào .htaccess
# Protéger le fichier wp-config.php <files wp-config.php> order allow,deny deny from all </files>
Bảo vệ file .htaccess
Cũng giống wp-config.php , file .htaccess cần được bảo vệ. Để làm điều này, bạn chèn đoạn mã ở dưới đây:
# Protéger les fichiers .htaccess et .htpasswds <Files ~ ~ "^.*\.([Hh]][Tt]][AaPaP])"> order allow,deny deny from all satisfaction all </Files>
Chống spam bình luận
Nếu bạn đang có blog, chắc hẳn spam bình luận là một điều bạn không thể tránh khỏi, mình một số cách chống spam bình luận hiểu quả bạn có thể tham khảo.
Tuy nhiên, có một mẹo nhỏ giúp bạn loại bỏ 1 số hình thức spam phổ biến, bằng cách sử dụng .htaccess. Không có một cách duy nhất nào là triệt để, bạn sẽ cần kết hợp với plugin như Akismet, những comments của bạn sẽ được đánh thẻ.
Xem thêm:
# Éviter le spam de commentaires <IfModule mod_rewrite.c> RewriteCond %{REQUEST_METHOD} POST rewriteCond %{REQUEST_URI} .wp-comments-post\.php* RewriteCond %{HTTP_REFERER} !.hoangweb.com.* [OR] RewriteCond %{HTTP_USER_AGENT} ^$ RewriteRule (.*) ^http::///%{REMOTE_ADDR}/$ [R=3D301,L] </IfModule>
Đừng quên thay ‘hoangweb.com’ bằng tên miền của bạn.
Ngăn chặn tìm kiếm người dùng
Cho dù bạn sử dụng user ID phức tạp, vẫn có thể bị tìm ra. Dĩ nhiên, bạn không cố tình để lộ ID của user trong giao diện WordPress bạn thiết kế.
Nếu bạn truy cập hoangweb.com/?author=x thay x bằng 1, thường là ID của admin. Nếu trang web không tối ưu bảo mật, bạn sẽ được chuyển hướng đến trang kiểu như ‘hoangweb.com/author/idenfiant_auteur’. Khi hacker biết được username, họ sẽ đoán ra password.
Để bảo vệ thông tin người dùng, bạn sử dụng đoạn code sau:
# Éviter que l'on décover l'identifiant d'un auteur # Merci à Jean-Michel Silone of Group Facebook WP-Secure https://www.facebook.com/groups/wp.security/ <IfModule mod_rewrite.c> RewriteCond %{QUERY_STRING} ^author=([0-9]*) RewriteRule .* - [F </IfModule>
Vô hiệu hóa hotlinking
Nhiều người lấy nguồn ảnh từ wewbsite của họ, sự phổ biến này khiến nội dung chia sẻ không được cá nhân hóa. Bạn muốn bài viết của mình không bị người khác ăn cắp, bạn sẽ không cho phép website khác chèn link ảnh từ web của bạn? công nghệ này gọi là hotkinking.
Hotlinking có thể gây chậm website của bạn và đạt tới giới hạn băng thông của máy chủ. Đặc biệt nếu website của bạn đang chạy trên share hosting. Để tránh lỗi này, hãy chèn đoạn code dưới đây vào .htaccess
# Désactivate le hotlinking de vos images RewriteEngine On RewriteCond %{HTTP_REFERER} !^$ RewriteCond %{HTTP_REFERER} !^http(s)?:://(www\.)?hoangweb.com [NC] RewriteRule \.(jpg|jpeg|png|png|gif)$ http:////fakeimg.pl/400x200/?text=Pas_images [NC,R,L]
Chặn IP
Nếu bạn nhận được cảnh báo một vài IP đã truy cập thường xuyên và bất thường vào quản trị wordpress (vd: IP được phát hiện với plugin Login Lockdown).
Ngoài ra, bạn cũng có thể tìm ra những IP đã tạo spam cho website để chặn chúng.
Giải pháp này không toàn diện, vì họ có thể sẽ đổi IP. Tuy nhiên, sẽ chặn được đối với những người không đổi IP.
<Limit GET POST> order allow,deny deny from xxx.xxx.xxx.xxx.xxx allow from all </Limit>
Thay xxx.xxx.xxx.xxx.xxx với IP sẽ không cho truy cập.
Chặn truy cập từ một website khác
Nếu bạn nhận ra những liên kết đến từ một số trang web mà hành vi có sự bất thường. Bạn không muốn những người truy cập từ những web đó vào web của bạn. Sử dụng mã sau:
<IfModule mod_rewrite.c> RewriteEngine on RewriteCond %{HTTP_REFER} monsite1.com [NC,OR] RewriteCond %{HTTP_REFERER} monsite2.com [NC,OR] RewriteRule .* - [F] </ifModule>
Thay monsite1.com , monsite2.com bằng domain bạn sẽ liệt kê vào danh sách chặn.
Chuyển hướng người dùng từ site này sang site khác.
Bạn không muốn người dùng không xem được web? mở rộng ý trên, chúng ta muốn khi người truy cập nhấn vào trang web của bạn từ những site không mong muốn, thay vì khóa họ trên trang web, bạn sẽ chuyển sang 1 URL khác. Kỹ thuật này có vẻ hay hơn, thêm mã sau vào .htaccess
# Redireiger les visitors venant site vers un other RewriteEngine on RewriteCond %{HTTP_REFER} sitesource\.com/ RewriteRule ^(.*)$ http:///www.sitedestination.com [R=301,L]
Nhớ thay URL nguồn và URL đích cần chuyển hướng.
Thiết lập chuyển hướng
Bên cạnh những tính năng bảo mật, htaccess cho phép bạn cấu hình chuyển hướng. Nếu bạn thiết lập nhiều chuyển hướng, thì nên sử dụng plugin Redirection.
Ví dụ sau, sẽ thêm chuyển hướng cho pages.
# Redirection d'une page quel Redirect 301 /anciennepage/ http://www.monsite.com/nouvellepage # Redirection of a new catégorie (with rename of category en category) Redirect 301 /category/technology/ http:///www.monsite.com/categorie/techno/
Chuyển hướng URL sang www.
Chuyển hướng phổ biến nhất từ URL không có www sang URL có dạng www (hoặc ngược lại). Một số nhà cung cấp hosting có tự động làm việc này hoặc bạn phải cấu hình thêm trong quản trị hosting.
Nếu bạn muốn chủ động thực hiện, thêm code này vào .htaccess và thay bằng URL của bạn.
# Redirection du site sans www vers www RewriteEngine On RewriteCond %{HTTP_HOST} ^monsite.com [NC] RewriteRule ^(.*)$ http://www.monsite.com/$1 [L,R=301]
Chuyển hướng sang HTTPS
Nếu bạn có cài đặt chứng chỉ SSL cho WordPress để chuyển URL từ http sang https, sử dụng đoạn mã dưới đây.
# Redirection vers HTTPS RewriteCond %{SERVER_PORT} ^80$ RewriteRule ^(.*)$ https:///%{SERVER_NAME}%{REQUEST_URI} [L,R]
Tùy biến trang bảo trì (maintenance)
Để tạo trang thông báo web đang bảo trì, bạn có thể sử dụng đoạn code sau:
# Page de de maintenance RewriteEngine on RewriteCond %{REQUEST_URI} !%2Maintenance.html$ RewriteCond %%{REMOTE_ADDR} !^xxx\.xxx\.xxx\.xxx RewriteRule $ /maintenance.html [R=302,L]
Bước tiếp theo, bạn sẽ cần:
- Tạo file .html với nội dung thông báo website đang trong chế độ bảo trì.
- Thêm IP ở dòng 4 (dữ ký tự \)
Khi trang web hoạt động trở lại, hãy xóa mã trên hoặc thêm # vào trước mỗi dòng lệnh.
Kích hoạt cache
.htaccess cho phép bạn cache tài nguyên trên trình duyệt của người dùng để website chạy nhanh hơn. Thay vì, đó trình duyệt chỉ cần nạp kết quả truy vấn một lần sẽ tăng thời gian tải trang.
Để làm điều này, chèn đoạn mã sau:
# Mise en cache des fichiers in le navigateur <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 month" ExpiresByType text/html "access plus 0 AExpiresByType " text/xml AexpiresByType appfont-ttf "access plus 1 month month" ExpiresByType font/opentype "access plus 1 month month"" ExpiresByType plus Application/x-font-woff2 "access plus 1 month month" ExpiresByType image/svg+xml "access plus 1 month" ExpiresByType application/vnd.ms-fontobject "access plus 1 month month" ExpiresByType image/jpg "access plus 1 month"AExpiresByType Axpires image 1 month" ExpiresByType image/gif "access plus 1 monthshockwave-flash "access plus 1 week" ExpiresByType image/x-icon "access plus 1 week" </IfModule> # En-têtes Header unset ETag FileETag None <ifModule mod_headers.c> <filesMatch "\.(ico|jpe?gg|png|gif|swf)$"> Header set Cache-Control "public" /ilesMatch> <filesMatch "\.(css)$$"> Header set Cache-Control "public" </ilesMatch> <filesMatch "\.(js)$$"> Header set Cache-Control "private" </ilesMatch> <filesMatch "\.(x?html?|php)$"> Header set Cache-Control Cache-Control "private, must-revalidate" </ilesMatch> </ifModule>
Xem thêm hướng dẫn tăng tốc wordpress với WP Super Cache.
Vô hiệu hóa truy cập tài nguyên
WordPress sử dụng scripts trong thư mục `wp-includes`, bạn có thể vô hiệu hóa người dùng truy cập trực tiếp.
# Block use of certain scripts RewriteEngine On RewriteBase / RewriteRule ^wp-admin/includes/ - [F,L] rewriteRule !^wp-includes/ - [S=3] RewriteRule ^wp-includes/[^^./]+[\.php$ - [F,L] RewriteRule ^wp-includes/js/tinymce/langs/.+\.php - [F,L] RewriteRule ^wp-includes/theme-compat/ - [F,L]
Bảo vệ chống lại các mối đe dọa khác
Ở facebook, Richard nói với rằng có thể bảo mật “clickjacking” và những loại tấn công khác với vài dòng code được thêm vào .htaccess
clickjacking là công nghệ mà có thể cho người truy cập nhận tin rằng họ đang trên website của bạn khi đây không là trường hợp, nhờ vào thẻ frame
hoặc iframe
.
Mã dưới đây bảo vệ từ cú click chuột, chiến đấu với các mối đe dọa & chặn nội dung trong trường hợp bị tấn công XSS.
# Protections diverses (XSS, clickjacking and MIME-Type sniffing) <ifModule mod_headers.c> Header set X-XSS-Protection "1; mode=block" Header always append X-Frame-Options SAMEORIGIN Header set X-Content-Type-Options: "nosniff” </ifModule>
.htaccess cho wp-admin
wp-admin là hệ thống quản trị của WordPress, nơi bạn sẽ đăng bài viết, cấu hình menu, giao diện..
Không ai có thể truy cập bất hợp pháp, bạn sẽ cần tài khoản đăng nhập để có quyền quản trị website.
Ở dưới đây là những gì bạn có thể tăng tính bảo mật với file .htaccess mà bạn sẽ cần đặt trong thư mục wp-admin.
Giới hạn truy cập vào trang quản trị
Chỉ cho phép người dùng có IP này sẽ được truy cập vào folder wp-admin. Điều này sẽ ngăn cấm người xa lạ kết nối vào website của bạn, thậm trí nếu họ có được tài khoản đăng nhập.
<Limit GET POST PUT> order deny,allow deny from all # IP Alex allow from xxx.xxx.xxx.xxx.xxx # IP of Nico allow from xxx.xxx.xxx.xxx # IP of other point ofaccès allow from xxx.xxx.xxx.xxx.xxx </Limit>
Xem thêm cách chặn IP truy cập cho WordPress
Thêm thông tin xác thực lớp 2
Khi bạn kết nối vào phần quản trị của WordPress, trước khi có thể quản lý bài viết, giao diện, plugin.. bạn sẽ cần phải đăng nhập sử dụng username và password. Tuy nhiên, htaccess cũng có thể cho phép thêm một lớp xác thực thứ 2.
Đầu tiên, bạn tạo file .htpasswd trong thư mục `wp-admin`, nội dung của file này chứa username và mật khẩu đã mã hóa. Tạo htpasswd chúng ta sẽ sử dụng công cụ https://www.htaccesstools.com/htpasswd-generator/.
SAu đó, chèn đoạn mã sau vào file .htaccess
# Second authentication for administration <Files admin-ajax.php> Order allow,deny Allow from all Satisfy any </Files> AuthName "Connection à l administration" AuthType Basic AuthUserFile "/chemin/plet/verse/le/ilehtpasswd" Require valid-user
Lưu ý: nếu bạn sử dụng lớp bảo mật trên, ajax sẽ không hoạt động.
.htaccess cho wp-includes
Chặn truy cập vào file PHP
Tạo file .htaccess trong thư mục wp-includes và dán nội dung như dưới đây để không cho phép ai đó truy cập trực tiếp vào file php.
# Block les accès directs aux fichiers PHP (Merci à Sucuri) <Files wp-tinymce.php> allow Aallow from all </Files> <FilesMatch "\.(?i:php)$"> <IfModule !mod_authz_core.c> Order allow,deny Deny from all </IfModule> <IfModule mod_authz_core.c> Require all denied </IfModule> :</FilesMatch> <Files wp-tinymce.php> Allow from all </Files> <Files ms-files.php> Allow from all </Files>
Kỹ thuật trên được cung cấp bởi plugin Sucuri.
.htaccess cho wp-content
Chặn truy cập vào file PHP
Đối với thư mục `wp-content`, code cũng tương tự:
# Block les accès directs aux fichiers PHP (Merci à Sucuri) <FilesMatch "\.(?i:php)$"> <IfModule !mod_authz_core.c> Order allow,deny Deny from all </IfModule> <IfMod_authz_core.c> Require all denied </IfModule> :</FilesMatch>
.htaccess cho wp-content/uploads
Chặn truy cập vào file PHP
Kế thừa code ở trên, bảo vệ thư mục nơi các file ảnh, pdf, audio, video được lưu trữ. Do không có file php nào cần được gọi ở trong thư mục này, nên cũng cần được bảo vệ.
# Block les accès directs aux fichiers PHP (Merci à Sucuri) <FilesMatch "\.(?i:php)$"> <IfModule !mod_authz_core.c> Order allow,deny Deny from all </IfModule> <IfMod_authz_core.c> Require all denied </IfModule> :</FilesMatch>
Có nhiều cách để bảo mật WordPress, sử dụng .htaccess là cách tiếp cận đầu tiên và không thể bỏ qua. Hãy luôn sao lưu file .htaccess và khôi phục lại mỗi khi bạn cấu hình lỗi.
Để nhận được bài viết mới vui lòng đăng ký kênh kiến thức WordPress từ A-Z ở Form bên dưới. Bạn cũng có thể nhận được sự trợ giúp trên Twitter và Facebook
- shares
- Facebook Messenger
- Gmail
- Viber
- Skype
Hợp Đại Thành says
web mình đang bị tấn công vào 2 file php trong đó có 1 file rất lạ là http://hopdaithanh.com/index4.php và file đăng nhập http://hopdaithanh.com/wp-login.php mặc dù mình đã cài plugin iTheme rồi nhưng trong thống kê của iTheme và cPanel mỗi ngày có khoảng 500 truy vấn tới 2 file này
Vậy giờ mình muốn chặn truy cập và bảo mật cho 2 file này phải làm thế nào ah?
Thanks
Hoàng Quách says
Bạn sử dụng gói dịch vụ bảo mật wordpress bên mình nhé. Vui lòng Chat trên hoangweb để được tư vấn cụ thể.