成人午夜视频全免费观看高清-秋霞福利视频一区二区三区-国产精品久久久久电影小说-亚洲不卡区三一区三区一区

NGINX安全配置和限制訪問-創(chuàng)新互聯(lián)

說起網(wǎng)絡(luò)***,可能很多人只知道大名鼎鼎的DDOS***,這種***廉價且效果出眾,直接通過第四層網(wǎng)絡(luò)協(xié)議用他的帶寬把你的帶寬頂?shù)簦斐删W(wǎng)路阻塞,防不勝防,就連騰訊這種大鱷公司也被大流量DDOS搞過焦頭爛額。暫時的解決方法只有三種,第一種就是你要夠有錢,買強(qiáng)大的高級防火墻,或者使用的帶寬足夠大,無視這些網(wǎng)絡(luò)流量。第二種是技術(shù)足夠強(qiáng),例如個別有技術(shù)的大牛公司(阿里),用類如DPDK的高效數(shù)據(jù)包處理驅(qū)動,開發(fā)出流量清洗服務(wù),把垃圾網(wǎng)絡(luò)包過濾掉,不過同時也會影響正常的網(wǎng)絡(luò)包,增加延時。第三種就是錢不多的公司多數(shù)使用的方案,換ip(廢話)。不過,現(xiàn)在有很多公司推出自己的流量清洗服務(wù),細(xì)化到按小時收費(fèi),也是相當(dāng)靈活了,按需購買。

創(chuàng)新互聯(lián)服務(wù)項目包括鄂爾多斯網(wǎng)站建設(shè)、鄂爾多斯網(wǎng)站制作、鄂爾多斯網(wǎng)頁制作以及鄂爾多斯網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗(yàn)、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機(jī)構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,鄂爾多斯網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟(jì)效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到鄂爾多斯省份的部分城市,未來相信會繼續(xù)擴(kuò)大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

不過還有一種網(wǎng)絡(luò)***其實(shí)比起DDOS更頻繁出現(xiàn),就是CC(Challenge Collapsar)***,一般來說是利用網(wǎng)站代碼漏洞,不停地發(fā)大量數(shù)據(jù)包請求,造成對方服務(wù)器回應(yīng)這些請求導(dǎo)致資源耗盡,一直到宕機(jī)崩潰。這種***屬于第七層的網(wǎng)絡(luò)協(xié)議,一方面在服務(wù)器層面是正常的請求,所以這種情況想根本解決問題,只能從代碼入手。但是另一方面,也就可以用其他來限制他訪問,例如nginx的配置上也是能稍微防一下。

nginx基本安全配置

先說一些基本安全設(shè)置,由開始發(fā)展到現(xiàn)在,其實(shí)nginx的安全做得比以前已經(jīng)好不少,不過有些還是要強(qiáng)調(diào)一下。

Nginx默認(rèn)是不允許列出整個目錄的,不過,我們?yōu)榱税踩?,最好還是確認(rèn)這個真的關(guān)閉了,不然代碼被拉走了就悲劇了。

http {
autoindex off;
}

nginx默認(rèn)是會在返回的數(shù)據(jù)包中顯示版本號,原本這個并不是大問題,但是被別有用心的人專門***這個版本的話,那就不好了,所以,我們還是隱藏好一點(diǎn)。

http {
server_tokens off;
}

其他限制訪問請求參數(shù)

http {
#設(shè)置客戶端請求頭讀取超時時間,超過這個時間還沒有發(fā)送任何數(shù)據(jù),Nginx將返回“Request time out(408)”錯誤
client_header_timeout 15;
#設(shè)置客戶端請求主體讀取超時時間,超過這個時間還沒有發(fā)送任何數(shù)據(jù),Nginx將返回“Request time out(408)”錯誤
client_body_timeout 15;   
#上傳文件大小限制
client_max_body_size 100m;
#指定響應(yīng)客戶端的超時時間。這個超過僅限于兩個連接活動之間的時間,如果超過這個時間,客戶端沒有任何活動,Nginx將會關(guān)閉連接。
send_timeout    600;
#設(shè)置客戶端連接保持會話的超時時間,超過這個時間,服務(wù)器會關(guān)閉該連接。
keepalive_timeout 60;
}

毫無疑問,nginx是可以做訪問限制的,allow就是允許訪問的ip和ip段,deny就是禁止訪問的ip和ip段,不過這個需要看你網(wǎng)站的需求,現(xiàn)在滿天飛的家用寬帶IP,誰敢說IP一直是那一個。

#設(shè)置網(wǎng)站根目錄的訪問權(quán)限
location / {
    allow 192.168.1.1/24;
    allow 120.76.147.159;
    deny 119.23.19.240;
    deny 192.168.3.1/24;
    deny all;
}

所以,我們再細(xì)化一點(diǎn),限制訪問個別目錄或文件后綴名。

#在訪問uploads、p_w_picpaths目錄時,訪問php|php5|jsp后綴的文件會返回403代碼,也就是不給執(zhí)行代碼了
location ~ ^/(uploads|p_w_picpaths)/.*\.(php|php5|jsp)$ {
    allow 192.168.1.1/24;
    return 403;
}
#禁止訪問所有目錄下的sql|log|txt|jar|war|sh|py后綴的文件,這些是什么文件就不詳細(xì)說了。
location ~.*\.(sql|log|txt|jar|war|sh|py) {
    deny all;
}
#有時候,有些訪問記錄不想保存到日志里面,例如靜態(tài)圖片
location ~ .*\.(js|jpg|JPG|jpeg|JPEG|css|bmp|gif|GIF|png)$ {
    access_log off;
}
#如果想用戶體驗(yàn)好一點(diǎn),可以建立一個報錯頁面,然后讓這個頁面跳轉(zhuǎn)到其他頁面
error_page 403 http://www.example.com/errorfile/404.html;

再高級一點(diǎn),判斷特定條件,然后拒絕服務(wù)

#判斷當(dāng)http_user_agent返回的結(jié)果中包含UNAVAILABLE關(guān)鍵字,則返回403錯誤。
location / {
    if ($http_user_agent ~ UNAVAILABLE) {
    return 403;
    }
}

再次強(qiáng)調(diào),這些要跟網(wǎng)站實(shí)際情況相結(jié)合,要不然影響范圍被擴(kuò)大,造成一些莫名其妙的事,那可不是好事,不過一般403都是自己控制,比較好判斷,所以最好別直接deny all。

nginx高級安全配置

訪問權(quán)限控制:

想更精準(zhǔn)控制訪問權(quán)限,其實(shí)還有auth_basic指令,用戶必須輸入有效的用戶名和密碼才能訪問站點(diǎn)。而用戶名和密碼應(yīng)該列在 auth_basic_user_file指令設(shè)置的文件中。

server {
    ...
    auth_basic "closed website";
    auth_basic_user_file conf/htpasswd;
}

auth_basic的off參數(shù)可以取消驗(yàn)證,比如對于一些公共資源,則可以取消驗(yàn)證。

server {
    ...
    auth_basic "closed website";
    auth_basic_user_file conf/htpasswd;
    location /public/ {
        auth_basic off;
    }
}

我們還需使用satisfy指令來組合來使用IP訪問和Http驗(yàn)證。 其默認(rèn)設(shè)置為all,即IP訪問和HTTP驗(yàn)證同時通過時才允許用戶訪問,若設(shè)置為any,即IP訪問和HTTP驗(yàn)證其一通過就允許用戶訪問

location / {
    satisfy any;
    allow 192.168.1.0/24;
    deny  all;
    auth_basic           "closed site";
    auth_basic_user_file conf/htpasswd;
}

這樣弄好像變得有點(diǎn)復(fù)雜,所以還是得看需求。

---------------------------------------------------------------------------------

連接權(quán)限控制:

實(shí)際上nginx的大連接數(shù)是worker_processes乘以worker_connections的總數(shù)。

也就是說,下面的這個配置,就是4X65535,一般來說,我們會強(qiáng)調(diào)worker_processes設(shè)置成和核數(shù)相等,worker_connections并沒有要求。但是同時這個設(shè)置其實(shí)給了***者空間,***者是可以同時發(fā)起這么多個連接,把你服務(wù)器搞跨。所以,我們應(yīng)該更合理的配置這兩個參數(shù)。

user  www;
worker_processes  4;
error_log  /data/logs/nginx_error.log  crit;
pid        /usr/local/nginx/nginx.pid;
events {
        use epoll;
        worker_connections 65535;
}

不過,也不是完全沒有辦法限制,在nginx0.7開始,出了兩個新的模塊:

HttpLimitReqModul:    限制單個 IP 每秒請求數(shù)

HttpLimitZoneModule:    限制單個 IP 的連接數(shù)

這兩個模塊,要先在http層定義,然后在 location, server, http上下文中作限制,他們用的是限制單ip訪問的漏桶算法,也就是說超過定義的限制會報503錯誤,這樣爆發(fā)的cc***就全部被限制住了。當(dāng)然,有些時候可能是某個公司同一個ip有幾十人一起訪問網(wǎng)站,這是有可能被誤傷的,做好503報錯回調(diào)是很有必要的。

先看HttpLimitReqModul:

http {
    limit_req_zone $binary_remote_addr zone=test_req:10m rate=20r/s;
     …
     server {
         …
         location /download/ {
            limit_req zone=test_req burst=5 nodelay;
         }
     }
}

上面http層的就是定義,這是一個名為test_req的limit_req_zone空間,用來存儲session數(shù)據(jù),大小是10M內(nèi)存,1M大約可以存16000個ip回話,看你訪問量有多少就設(shè)多少。以$binary_remote_addr 為key,這個定義是客戶端IP,可以改成$server_name等其他,限制平均每秒的請求為20個,寫成20r/m就是每分鐘了,也是看你訪問量。

下面location層就是應(yīng)用這個限制了,對應(yīng)上面的定義,對訪問download文件夾的請求,限制每個ip每秒不超過20個請求,漏桶數(shù)burst為5,brust的意思就是,如果第1,2,3,4秒請求為19個,第5秒的請求為25個是被允許的。但是如果你第1秒就25個請求,第2秒超過20的請求返回503錯誤。nodelay,如果不設(shè)置該選項,第1秒25個請求時,5個請求放到第2秒執(zhí)行,設(shè)置nodelay,25個請求將在第1秒執(zhí)行。

就這個限制定義而言,把每個IP限制了請求數(shù),對于海量的cc請求***,效果明顯,例如限制到1r/s每秒一次請求,那就更明顯了,不過也正如開頭所說,對于大公司多人統(tǒng)一IP同時訪問,難免出現(xiàn)誤傷,所以還是得多考慮。

然后再看HttpLimitZoneModule:

http {
  limit_conn_zone test_zone $binary_remote_addr 10m;
   server {
    location /download/ {
      limit_conn test_zone 10;
      limit_rate 500k;
    }
  }
}

和上面的類似,上面http層就是總定義,這是一個名為test_zone的limit_conn_zone空間,大小也是10M,key還是客戶端IP地址,不過這個沒有限制次數(shù),改下面定義去了。

下面location層就是真正定義了,因?yàn)閗ey定義是客戶端ip,所以limit_conn就是一個IP限制了10個連接,如果是$server_name,那就是一個域名10個連接。然后下面limit_rate就是限制一個連接的帶寬,如果一個ip兩個連接,就是500x2k,這里是10,那就是最多可以有5000K速度給到這個ip了。

-----------------------------------------------------------------------

嫌棄503用戶體驗(yàn)不好,也可以加個返回頁面:
error_page  503  /errpage/503.html;
503頁面的源代碼:

<html>
<head>
<title>頁面即將載入….</title>
<meta http-equiv=content-type c>
<META NAME=”ROBOTS” C>
</head>
<body bgcolor=”#FFFFFF”>
<table cellpadding=”0″ cellspacing=”0″ border=”0″ width=”700″ align=”center” height=”85%”>
  <tr align=”center” valign=”middle”>
    <td>
    <table cellpadding=”10″ cellspacing=”0″ border=”0″ width=”80%” align=”center” style=”font-family:
Verdana, Tahoma; color: #666666; font-size: 11px”>
    <tr>
      <td valign=”middle” align=”center” bgcolor=”#EBEBEB”>
        <br /><b style=”font-size: 16px”>頁面即將載入</b>
        <br /><br />你刷新頁面的速度過快。請少安毋躁,頁面即將載入…
        <br /><br />[<a href="JavaScript:window.location.reload();"><font color=#666666>立即重新載入</font></a>]
        <br /><br />
      </td>
    </tr>
    </table>
    </td>
  </tr>
</table>
</body>
</html>
<SCRIPT language=javascript>
function update()
{
  window.location.reload();
}
setTimeout(“update()”,2000);
</script>

-----------------------------------------------------------------------

上述的配置,是全網(wǎng)通用得,有時候難免有誤傷,那怎么辦呢,可以設(shè)置白名單制度。

#geo指令定義了一個白名單$whiteiplist變量,默認(rèn)值為1,
#如果客戶端ip在上面的范圍內(nèi),$whiteiplist的值為0。
geo $whiteiplist  {
    default 1;
    10.11.15.161 0;
    127.0.0.1/32 0;
    }
#使用map指令映射上面geo匹配的客戶端的ip為空串,如果不是就顯示本身真實(shí)的ip,
#這樣匹配的ip就不能存到limit_req_zone內(nèi)存session中,所以不會被限制訪問    
map $whiteiplist  $limit {
    1 $binary_remote_addr;
    0 "";
    }
#然后再制定這個$limit變量來設(shè)置規(guī)則,白名單制度就建立起來了
limit_req_zone $limit zone=one:10m rate=10r/s;
limit_conn_zone $limit zone=addr:10m;

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章標(biāo)題:NGINX安全配置和限制訪問-創(chuàng)新互聯(lián)
本文來源:http://jinyejixie.com/article0/dcgdoo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供Google、關(guān)鍵詞優(yōu)化搜索引擎優(yōu)化、企業(yè)建站、標(biāo)簽優(yōu)化、全網(wǎng)營銷推廣

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司
中卫市| 萨迦县| 咸阳市| 麻江县| 万全县| 夏津县| 博湖县| 专栏| 武隆县| 桦甸市| 松原市| 松原市| 改则县| 电白县| 虎林市| 溧阳市| 嘉黎县| 穆棱市| 瓮安县| 澄江县| 板桥市| 塔河县| 永新县| 噶尔县| 宝清县| 鹰潭市| 冕宁县| 南溪县| 三穗县| 广丰县| 滕州市| 富川| 黄骅市| 定西市| 郑州市| 信丰县| 莫力| 广安市| 中方县| 杂多县| 电白县|