优化Nginx服务的安全配置
目錄
1.屏蔽版本號(hào)信息
2. 限制并發(fā)量
3.拒絕非法的請(qǐng)求
4. 防止buffer溢出
1.屏蔽版本號(hào)信息
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf … … http{server_tokens off;???????????#在http下面手動(dòng)添加這么一行(屏蔽版本信息)… … } [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload[root@proxy ~]# curl -I http://192.168.4.5 #查看服務(wù)器響應(yīng)的頭部信息(加I只看頭部信息)2. 限制并發(fā)量
DDOS攻擊者會(huì)發(fā)送大量的并發(fā)連接,占用服務(wù)器資源(包括連接數(shù)、帶寬等),這樣會(huì)導(dǎo)致正常用戶處于等待或無(wú)法訪問(wèn)服務(wù)器的狀態(tài)
Nginx提供了一個(gè)ngx_http_limit_req_module模塊,可以有效降低DDOS攻擊的風(fēng)險(xiǎn),操作方法如下:(拒絕服務(wù)攻擊)
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf … … http{ … … limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;#開(kāi)啟限制,誰(shuí)訪問(wèn)就記住,每秒只能發(fā)一個(gè)請(qǐng)求)server { listen 80;server_name localhost;limit_req zone=one burst=5;} }[root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 客戶端使用ab測(cè)試軟件測(cè)試效果: [root@client ~]# ab -c 100 -n 100 http://192.168.4.5/#limit_req_zone語(yǔ)法格式如下:
#limit_req_zone key zone=name:size rate=rate;
#上面案例中是將客戶端IP信息存儲(chǔ)名稱為one的共享內(nèi)存,內(nèi)存空間為10M
#1M可以存儲(chǔ)8千個(gè)IP信息,10M可以存儲(chǔ)8萬(wàn)個(gè)主機(jī)連接的狀態(tài),容量可以根據(jù)需要任意調(diào)整
#每秒中僅接受1個(gè)請(qǐng)求,多余的放入漏斗
#漏斗超過(guò)5個(gè)則報(bào)錯(cuò)
3.拒絕非法的請(qǐng)求
網(wǎng)站使用的是HTTP協(xié)議,該協(xié)議中定義了很多方法,可以讓用戶連接服務(wù)器,獲得需要的資源。但實(shí)際應(yīng)用中一般僅需要get和post
????????具體HTTP請(qǐng)求方法的含義
?未修改服務(wù)器配置前,客戶端使用不同請(qǐng)求方法測(cè)試
root@client ~]# curl -i -X GET http://192.168.4.5????????????#正常 [root@client ~]# curl -i -X HEAD http://192.168.4.5????????????#正常#curl命令選項(xiàng)說(shuō)明:
????????#-I只顯示頭部
????????#-i選項(xiàng):訪問(wèn)服務(wù)器頁(yè)面時(shí),顯示HTTP的頭部信息于下在內(nèi)容
????????#-X選項(xiàng):指定請(qǐng)求服務(wù)器的方法
通過(guò)如下設(shè)置可以讓Nginx拒絕非法的請(qǐng)求方法
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf http{server {listen 80; #這里,!符號(hào)表示對(duì)正則取反,~符號(hào)是正則匹配符號(hào) #如果用戶使用非GET或POST方法訪問(wèn)網(wǎng)站,則retrun返回錯(cuò)誤信息if ($request_method !~ ^(GET|POST)$ ) {return 444;}????} } [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload 修改服務(wù)器配置后,客戶端使用不同請(qǐng)求方法測(cè)試: [root@client ~]# curl -i -X GET http://192.168.4.5????????????#正常 [root@client ~]# curl -i -X HEAD http://192.168.4.5????????????#報(bào)錯(cuò)4. 防止buffer溢出
當(dāng)客戶端連接服務(wù)器時(shí),服務(wù)器會(huì)啟用各種緩存,用來(lái)存放連接的狀態(tài)信息。 如果攻擊者發(fā)送大量的連接請(qǐng)求,而服務(wù)器不對(duì)緩存做限制的話,內(nèi)存數(shù)據(jù)就有可能溢出(空間不足)
[root@proxy ~]# vim /usr/local/nginx/conf/nginx.conf http{ client_body_buffer_size 1k; client_header_buffer_size 1k; client_max_body_size 1k; large_client_header_buffers 2 1k;… … } [root@proxy ~]# /usr/local/nginx/sbin/nginx -s reload總結(jié)
以上是生活随笔為你收集整理的优化Nginx服务的安全配置的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: nmap,tcpdump
- 下一篇: Linux基本防护措施