WordPress 是最受歡迎的建站程序,到目前為止,它擁有超過30%的網(wǎng)絡(luò)市場份額,這也導(dǎo)致了 WordPress 經(jīng)常會(huì)成為安全威脅的目標(biāo)。因此,對于我們這些 WordPress 網(wǎng)站所有者來說,最好采取一些措施來加強(qiáng)網(wǎng)站的安全性。
WordPress 可以運(yùn)行在 Apache 或 Nginx 環(huán)境中,在《15個(gè)有用的WordPress .htaccess 代碼片段》中,我們分享了一些Apache下的安全規(guī)則,今天我們將分享一些增強(qiáng)WordPress安全性的Nginx規(guī)則。
1.限制訪問XMLRPC
WordPress中的XMLRPC端點(diǎn)(根目錄下的xmlrpc.php文件)用于允許外部應(yīng)用程序與WordPress數(shù)據(jù)交互。例如,它可以允許添加、創(chuàng)建或刪除文章。但是,XMLRPC也是一種常見的攻擊媒介,攻擊者可以在未經(jīng)授權(quán)的情況下執(zhí)行這些操作。所以最好允許從您信任的授權(quán)IP請求XMLRPC,如下所示:
location ~* /xmlrpc.php$ {
allow 172.0.1.1;
deny all;
}
添加上述內(nèi)容后,應(yīng)該在瀏覽器中訪問 xmlrpc.php 時(shí)會(huì)看到403錯(cuò)誤響應(yīng)代碼。
2.限制請求類型
大多數(shù)情況下,您的網(wǎng)站可能只執(zhí)行兩種類型的請求:
GET– 從你的網(wǎng)站上檢索數(shù)據(jù)POST– 將數(shù)據(jù)提交到你的網(wǎng)站
所以,只允許我們的網(wǎng)站執(zhí)行這兩種請求類型,也是增強(qiáng)安全性的做法。
if ($request_method !~ ^(GET|POST)$ ) {
return 444;
}
3.禁止直接訪問PHP文件
在神不知鬼不覺的情況下,黑客可能會(huì)將PHP文件上傳到你的服務(wù)器中,然后通過訪問該惡意文件執(zhí)行某些操作,即可在你的網(wǎng)站上創(chuàng)建后門。所有我們應(yīng)該禁止直接訪問任何php文件:
location ~* /(?:uploads|files|wp-content|wp-includes|akismet)/.*.php$ {
deny all;
access_log off;
log_not_found off;
}
4.禁止訪問某些敏感文件
和PHP文件相似,以點(diǎn)開頭的文件,比如 .htaccess、.user.ini以及.git可能包含敏感信息。為了更安全,最好禁用對這些文件的直接訪問。
location ~ /\.(svn|git)/* {
deny all;
access_log off;
log_not_found off;
}
location ~ /\.ht {
deny all;
access_log off;
log_not_found off;
}
location ~ /\.user.ini {
deny all;
access_log off;
log_not_found off;
}
5.隱藏Nginx和PHP版本
最好不要對外公開Nginx以及PHP版本,如果特定的Ningx或PHP版本暴露出漏洞,攻擊者又發(fā)現(xiàn)你的服務(wù)器上的存在對應(yīng)的漏洞版本,那可能就很危險(xiǎn)了。以下規(guī)則可以隱藏Nginx和PHP版本:
#隱藏 nginx 版本.
server_tokens off;
#隱藏 PHP 版本
fastcgi_hide_header X-Powered-By;
proxy_hide_header X-Powered-By;
6.安全標(biāo)頭
安全標(biāo)頭( header )通過指示瀏覽器行為提供額外的安全層。例如,X-Frame-Options,可以防止你的網(wǎng)站被嵌入到iframe框架中進(jìn)行加載。而Strict-Transport-Security會(huì)讓瀏覽器采用HTTPS方式加載站點(diǎn)。
add_header X-Frame-Options SAMEORIGIN;
add_header Strict-Transport-Security "max-age=31536000";
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
7.阻止訪問子目錄
如果你的網(wǎng)站在子目錄上運(yùn)行,例如/blog,則最好允許訪問此子目錄。這意味著,其他類似子目錄的訪問結(jié)構(gòu),例如, /82jdkj/?.php 將是攻擊者經(jīng)常試圖訪問的目標(biāo),所以我們就應(yīng)該將 /blog 以外的子目錄限制訪問。
location ~ ^/(?!(blog)/?) {
deny all;
access_log off;
log_not_found off;
}
8.減少垃圾評論
垃圾評論可能不會(huì)破壞你的網(wǎng)站,但它會(huì)使你的數(shù)據(jù)庫中寫入這些垃圾內(nèi)容,從而作為廣告推廣。要減少垃圾評論內(nèi)容,您可以將以下規(guī)則添加到Nginx配置以及像Akismet這樣的垃圾評論防護(hù)插件。
set $comment_flagged 0;
set $comment_request_method 0;
set $comment_request_uri 0;
set $comment_referrer 1;
if ($request_method ~ "POST"){
set $comment_request_method 1;
}
if ($request_uri ~ "/wp-comments-post\.php$"){
set $comment_request_method 1;
}
if ($http_referer !~ "^https?://(([^/]+\.)?site\.com|jetpack\.wordpress\.com/jetpack-comment)(/|$)"){
set $comment_referrer 0;
}
set $comment_flagged "${comment_request_method}${comment_request_uri}${comment_referrer}";
if ($comment_flagged = "111") {
return 403;
}
9.限制請求
WordPress登錄頁面wp-login.php是暴力攻擊的常見端點(diǎn)。攻擊者會(huì)嘗試通過批量提交用戶名和密碼組合進(jìn)行登錄嘗試,可能無法破解你的密碼,但是對服務(wù)器資源占用非常大,可能會(huì)導(dǎo)致網(wǎng)站無法訪問。
為此,我們可以應(yīng)用一個(gè)規(guī)則來限制頁面每秒可以處理的請求數(shù)。這里我們將限制設(shè)置為每秒2個(gè)請求,超過次數(shù)的請求將被阻止。
limit_req_zone $binary_remote_addr zone=WPRATELIMIT:10m rate=2r/s;
location ~ \wp-login.php$ {
limit_req zone=WPRATELIMIT;
}
10.禁用目錄列表
最后一旦也非常重要,你應(yīng)該禁用目錄列表,以便攻擊者無法知道目錄中的內(nèi)容。
autoindex off;
注:原文出自 https://www.hongkiat.com/blog/nginx-rules-for-wordpress-security/ ,倡萌整理翻譯。





代碼加在那個(gè)文件里啊
謝謝
每個(gè)基于 Nginx 環(huán)境的網(wǎng)站都有一個(gè)配置文件的,一般都是添加到對應(yīng)網(wǎng)站的配置文件