配置WEB安全
創(chuàng)新互聯(lián)建站成立于2013年,先為宜都等服務(wù)建站,宜都等地企業(yè),進行企業(yè)商務(wù)咨詢服務(wù)。為宜都企業(yè)網(wǎng)站制作PC+手機+微官網(wǎng)三網(wǎng)同步一站式服務(wù)解決您的所有建站問題。
WEB安全是系統(tǒng)提供的最常見的服務(wù)之一,WEB安全服務(wù)器主要存在的漏洞包括:
物理路徑泄露
CGI源代碼泄露
目錄遍歷
執(zhí)行任意命令
緩沖區(qū)溢出
拒絕服務(wù)
跨站乳酸執(zhí)行
Windows平臺上使用的WEB服務(wù)器軟件是IIS,無論哪種操作系統(tǒng)平臺,只要對外提供WEB服務(wù),就會面臨著來自外部的攻擊可能,所以需要對WEB服務(wù)器進行有效的安全防護。
針對WEB服務(wù)器采取的一些有效措施包括:
a. 打補丁
針對IIS存在的系統(tǒng)漏洞,應(yīng)該定期下載安全補丁,及時發(fā)現(xiàn)和堵上漏洞。
b. 只開放WEB服務(wù)端口
如果不需要其它的服務(wù),在安裝服務(wù)的時候選擇只安裝WEB服務(wù),并使用80端口,禁用其他的不必要的服務(wù),例如FTP和SMTP服務(wù)
c. WEB服務(wù)器應(yīng)該放在一個專門的區(qū)域中,利用防火墻保護WEB服務(wù)器。
這個專門的區(qū)域使WEB服務(wù)器與外網(wǎng)相對隔%C
為了更好的指導(dǎo)部署與測試藝術(shù)升系統(tǒng)nginx網(wǎng)站服務(wù)器高性能同時下安全穩(wěn)定運行,需要對nginx服務(wù)進行調(diào)優(yōu)與加固;
本次進行Nginx服務(wù)調(diào)優(yōu)加固主要從以下幾個部分:
本文檔僅供內(nèi)部使用,禁止外傳,幫助研發(fā)人員,運維人員對系統(tǒng)長期穩(wěn)定的運行提供技術(shù)文檔參考。
Nginx是一個高性能的HTTP和反向代理服務(wù)器,也是一個IMAP/POP3/SMTP服務(wù)器。Nginx作為負載均衡服務(wù)器, Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M行服務(wù),也可以支持作為 HTTP代理服務(wù)器對外進行服務(wù)。
Nginx版本選擇:
項目結(jié)構(gòu):
Nginx文檔幫助:
Nginx首頁地址目錄: /usr/share/nginx/html
Nginx配置文件:
localtion 請求匹配的url實是一個正則表達式:
Nginx 匹配判斷表達式:
例如,匹配末尾為如下后綴的靜態(tài)并判斷是否存在該文件, 如不存在則404。
查看可用模塊編譯參數(shù):
http_gzip模塊
開啟gzip壓縮輸出(常常是大于1kb的靜態(tài)文件),減少網(wǎng)絡(luò)傳輸;
http_fastcgi_module模塊
nginx可以用來請求路由到FastCGI服務(wù)器運行應(yīng)用程序由各種框架和PHP編程語言等??梢蚤_啟FastCGI的緩存功能以及將靜態(tài)資源進行剝離,從而提高性能。
keepalive模塊
長連接對性能有很大的影響,通過減少CPU和網(wǎng)絡(luò)開銷需要開啟或關(guān)閉連接;
http_ssl_module模塊
Nginx開啟支持Https協(xié)議的SSL模塊
Linux內(nèi)核參數(shù)部分默認值不適合高并發(fā),Linux內(nèi)核調(diào)優(yōu),主要涉及到網(wǎng)絡(luò)和文件系統(tǒng)、內(nèi)存等的優(yōu)化,
下面是我常用的內(nèi)核調(diào)優(yōu)配置:
文件描述符
文件描述符是操作系統(tǒng)資源,用于表示連接、打開的文件,以及其他信息。NGINX 每個連接可以使用兩個文件描述符。
例如如果NGINX充當(dāng)代理時,通常一個文件描述符表示客戶端連接,另一個連接到代理服務(wù)器,如果開啟了HTTP 保持連接,這個比例會更低(譯注:為什么更低呢)。
對于有大量連接服務(wù)的系統(tǒng),下面的設(shè)置可能需要調(diào)整一下:
精簡模塊:Nginx由于不斷添加新的功能,附帶的模塊也越來越多,建議一般常用的服務(wù)器軟件使用源碼編譯安裝管理;
(1) 減小Nginx編譯后的文件大小
(2) 指定GCC編譯參數(shù)
修改GCC編譯參數(shù)提高編譯優(yōu)化級別穩(wěn)妥起見采用 -O2 這也是大多數(shù)軟件編譯推薦的優(yōu)化級別。
GCC編譯參數(shù)優(yōu)化 [可選項] 總共提供了5級編譯優(yōu)化級別:
常用編譯參數(shù):
緩存和壓縮與限制可以提高性能
NGINX的一些額外功能可用于提高Web應(yīng)用的性能,調(diào)優(yōu)的時候web應(yīng)用不需要關(guān)掉但值得一提,因為它們的影響可能很重要。
簡單示例:
1) 永久重定向
例如,配置 http 向 https 跳轉(zhuǎn) (永久)
nginx配置文件指令優(yōu)化一覽表
描述:Nginx因為安全配置不合適導(dǎo)致的安全問題,Nginx的默認配置中存在一些安全問題,例如版本號信息泄露、未配置使用SSL協(xié)議等。
對Nginx進行安全配置可以有效的防范一些常見安全問題,按照基線標準做好安全配置能夠減少安全事件的發(fā)生,保證采用Nginx服務(wù)器系統(tǒng)應(yīng)用安全運行;
Nginx安全配置項:
溫馨提示: 在修改相應(yīng)的源代碼文件后需重新編譯。
設(shè)置成功后驗證:
應(yīng)配置非root低權(quán)限用戶來運行nginx服務(wù),設(shè)置如下建立Nginx用戶組和用戶,采用user指令指運行用戶
加固方法:
我們應(yīng)該為提供的站點配置Secure Sockets Layer Protocol (SSL協(xié)議),配置其是為了數(shù)據(jù)傳輸?shù)陌踩?,SSL依靠證書來驗證服務(wù)器的身份,并為瀏覽器和服務(wù)器之間的通信加密。
不應(yīng)使用不安全SSLv2、SSLv3協(xié)議即以下和存在脆弱性的加密套件(ciphers), 我們應(yīng)該使用較新的TLS協(xié)議也應(yīng)該優(yōu)于舊的,并使用安全的加密套件。
HTTP Referrer Spam是垃圾信息發(fā)送者用來提高他們正在嘗試推廣的網(wǎng)站的互聯(lián)網(wǎng)搜索引擎排名一種技術(shù),如果他們的垃圾信息鏈接顯示在訪問日志中,并且這些日志被搜索引擎掃描,則會對網(wǎng)站排名產(chǎn)生不利影響
加固方法:
當(dāng)惡意攻擊者采用掃描器進行掃描時候利用use-agent判斷是否是常用的工具掃描以及特定的版本,是則返回錯誤或者重定向;
Nginx支持webdav,雖然默認情況下不會編譯。如果使用webdav,則應(yīng)該在Nginx策略中禁用此規(guī)則。
加固方法: dav_methods 應(yīng)設(shè)置為off
當(dāng)訪問一個特制的URL時,如"../nginx.status",stub_status模塊提供一個簡短的Nginx服務(wù)器狀態(tài)摘要,大多數(shù)情況下不應(yīng)啟用此模塊。
加固方法:nginx.conf文件中stub_status不應(yīng)設(shè)置為:on
如果在瀏覽器中出現(xiàn)Nginx自動生成的錯誤消息,默認情況下會包含Nginx的版本號,這些信息可以被攻擊者用來幫助他們發(fā)現(xiàn)服務(wù)器的潛在漏洞
加固方法: 關(guān)閉"Server"響應(yīng)頭中輸出的Nginx版本號將server_tokens應(yīng)設(shè)置為:off
client_body_timeout設(shè)置請求體(request body)的讀超時時間。僅當(dāng)在一次readstep中,沒有得到請求體,就會設(shè)為超時。超時后Nginx返回HTTP狀態(tài)碼408(Request timed out)。
加固方法:nginx.conf文件中client_body_timeout應(yīng)設(shè)置為:10
client_header_timeout設(shè)置等待client發(fā)送一個請求頭的超時時間(例如:GET / HTTP/1.1)。僅當(dāng)在一次read中沒有收到請求頭,才會設(shè)為超時。超時后Nginx返回HTTP狀態(tài)碼408(Request timed out)。
加固方法:nginx.conf文件中client_header_timeout應(yīng)設(shè)置為:10
keepalive_timeout設(shè)置與client的keep-alive連接超時時間。服務(wù)器將會在這個時間后關(guān)閉連接。
加固方法:nginx.conf文件中keepalive_timeout應(yīng)設(shè)置為:55
send_timeout設(shè)置客戶端的響應(yīng)超時時間。這個設(shè)置不會用于整個轉(zhuǎn)發(fā)器,而是在兩次客戶端讀取操作之間。如果在這段時間內(nèi),客戶端沒有讀取任何數(shù)據(jù),Nginx就會關(guān)閉連接。
加固方法:nginx.conf文件中send_timeout應(yīng)設(shè)置為:10
GET和POST是Internet上最常用的方法。Web服務(wù)器方法在RFC 2616中定義禁用不需要實現(xiàn)的可用方法。
加固方法:
limit_zone 配置項限制來自客戶端的同時連接數(shù)。通過此模塊可以從一個地址限制分配會話的同時連接數(shù)量或特殊情況。
加固方法:nginx.conf文件中l(wèi)imit_zone應(yīng)設(shè)置為:slimits $binary_remote_addr 5m
該配置項控制一個會話同時連接的最大數(shù)量,即限制來自單個IP地址的連接數(shù)量。
加固方法:nginx.conf 文件中 limit_conn 應(yīng)設(shè)置為: slimits 5
加固方法:
加固方法:
解決辦法:
描述后端獲取Proxy后的真實Client的IP獲取需要安裝--with-http_realip_module,然后后端程序采用JAVA(request.getAttribute("X-Real-IP"))進行獲取;
描述: 如果要使用geoip地區(qū)選擇,我們需要再nginx編譯時加入 --with-http_geoip_module 編譯參數(shù)。
描述: 為了防止外部站點引用我們的靜態(tài)資源,我們需要設(shè)置那些域名可以訪問我們的靜態(tài)資源。
描述: 下面收集了Web服務(wù)中常規(guī)的安全響應(yīng)頭, 它可以保證不受到某些攻擊,建議在指定的 server{} 代碼塊進行配置。
描述: 為了防止某些未備案的域名或者惡意鏡像站域名綁定到我們服務(wù)器上, 導(dǎo)致服務(wù)器被警告關(guān)停,將會對業(yè)務(wù)或者SEO排名以及企業(yè)形象造成影響,我們可以通過如下方式進行防范。
執(zhí)行結(jié)果:
描述: 有時你的網(wǎng)站可能只需要被某一IP或者IP段的地址請求訪問,那么非白名單中的地址訪問將被阻止訪問, 我們可以如下配置;
常用nginx配置文件解釋:
(1) 阿里巴巴提供的Concat或者Google的PageSpeed模塊實現(xiàn)這個合并文件的功能。
(2) PHP-FPM的優(yōu)化
如果您高負載網(wǎng)站使用PHP-FPM管理FastCGI對于PHP-FPM的優(yōu)化非常重要
(3) 配置Resin on Linux或者Windows為我們可以打開 resin-3.1.9/bin/httpd.sh 在不影響其他代碼的地方加入:-Dhttps.protocols=TLSv1.2, 例如
原文地址:
1.禁用ROOT權(quán)限登錄。(重要)
2.安全組收縮不使用的端口,建議除443/80以及ssh登錄等必要端口外全部關(guān)閉。
3.防火墻收縮不使用的端口,建議除443/80以及ssh登錄端口外全部關(guān)閉。
4.更改ssh默認端口22
5.除登錄USER,禁止其他用戶su到root進程,并且ssh開啟秘鑰及密碼雙層驗證登錄。(重要)
6.限制除登錄USER外的其他用戶登錄。
7.安裝DenyHosts,防止ddos攻擊。
8.禁止系統(tǒng)響應(yīng)任何從外部/內(nèi)部來的ping請求。
9.保持每天自動檢測更新。
10.禁止除root之外的用戶進程安裝軟件及服務(wù),如有需要則root安裝,chown給到用戶。
11.定時給服務(wù)器做快照。
12.更改下列文件權(quán)限:
13.限制普通用戶使用特殊命令,比如wget,curl等命令更改使用權(quán)限,一般的挖礦程序主要使用這幾種命令操作。
1.nginx進程運行在最小權(quán)限的子用戶中,禁止使用root用戶啟動nginx。(重要)
2.配置nginx.conf,防范常見漏洞:
1.禁止root權(quán)限啟動apache服務(wù)!禁止root權(quán)限啟動apache服務(wù)!禁止root權(quán)限啟動apache服務(wù)!重要的事情說三遍!因為這個問題被搞了兩次。
2.改掉默認端口。
3.清空webapps下除自己服務(wù)外的其他文件,刪除用戶管理文件,防止給木馬留下后門。
4.限制apache啟動進程su到root進程以及ssh登錄,限制啟動進程訪問除/home/xx自身目錄外的其他文件。
5.限制apache啟動進程操作刪除以及編輯文件,一般a+x即可。
1.關(guān)閉外網(wǎng)連接,與java/php服務(wù)使用內(nèi)網(wǎng)連接。
2.在滿足java/php服務(wù)的基礎(chǔ)上,新建最小權(quán)限USER給到服務(wù)使用,禁止USER權(quán)限訪問其他項目的庫。
3.root密碼不要與普通USER相同。
4.建議使用云庫,云庫具備實時備份,動態(tài)擴容,數(shù)據(jù)回退等功能,減少操作風(fēng)險。
1.關(guān)閉外網(wǎng)連接,只允許內(nèi)網(wǎng)交互,基本這個做了之后就已經(jīng)穩(wěn)了。
2.禁止root權(quán)限啟動,運行在普通用戶進程里。
3.更改默認端口。
4.添加登錄密碼。
以上是自己做的防范手段,不成熟見解,有一些方案待驗證,不定時更新,歡迎大佬補充!