1、服務(wù)器所處運(yùn)行環(huán)境不佳
創(chuàng)新互聯(lián)建站長(zhǎng)期為近千家客戶提供的網(wǎng)站建設(shè)服務(wù),團(tuán)隊(duì)從業(yè)經(jīng)驗(yàn)10年,關(guān)注不同地域、不同群體,并針對(duì)不同對(duì)象提供差異化的產(chǎn)品和服務(wù);打造開放共贏平臺(tái),與合作伙伴共同營(yíng)造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為凌海企業(yè)提供專業(yè)的網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站制作,凌海網(wǎng)站改版等技術(shù)服務(wù)。擁有十多年豐富建站經(jīng)驗(yàn)和眾多成功案例,為您定制開發(fā)。
對(duì)于計(jì)算機(jī)網(wǎng)絡(luò)服務(wù)器來說,運(yùn)行的環(huán)境是非常重要的。其中所指的環(huán)境主要包括運(yùn)行溫度和空氣濕度兩個(gè)方面。網(wǎng)絡(luò)服務(wù)器與電力的關(guān)系是非常緊密的,電力是保證其正常運(yùn)行的能源支撐基礎(chǔ),電力設(shè)備對(duì)于運(yùn)行環(huán)境的溫度和濕度要求通常來說是比較嚴(yán)格的,在溫度較高的情況下,網(wǎng)絡(luò)服務(wù)器與其電源的整體溫度也會(huì)不斷升高,如果超出溫度耐受臨界值,設(shè)備會(huì)受到不同程度的損壞,嚴(yán)重者甚至?xí)l(fā)火災(zāi)。如果環(huán)境中的濕度過高,網(wǎng)絡(luò)服務(wù)器中會(huì)集結(jié)大量水汽,很容易引發(fā)漏電事故,嚴(yán)重威脅使用人員的人身安全。
2、缺乏正確的網(wǎng)絡(luò)服務(wù)器安全維護(hù)意識(shí)
系統(tǒng)在運(yùn)行期間,部分計(jì)算機(jī)用戶由于缺乏基本的網(wǎng)絡(luò)服務(wù)器安全維護(hù)意識(shí),對(duì)于網(wǎng)絡(luò)服務(wù)器的安全維護(hù)不能給予充分重視。計(jì)算機(jī)在長(zhǎng)期使用的過程中,缺少有效的安全維護(hù)措施,最終導(dǎo)致網(wǎng)絡(luò)服務(wù)器出現(xiàn)一系列運(yùn)行故障。與此同時(shí),某些用戶由于沒有選擇正確的防火墻軟件,系統(tǒng)不斷出現(xiàn)各種漏洞,用戶個(gè)人信息極易遭到泄露。
3、服務(wù)器系統(tǒng)漏洞過多
計(jì)算機(jī)網(wǎng)絡(luò)本身具有開放自由的特性,這種屬性既存在技術(shù)性優(yōu)勢(shì),在某種程度上也會(huì)對(duì)計(jì)算機(jī)系統(tǒng)的安全造成威脅。一旦系統(tǒng)中出現(xiàn)很難修復(fù)的程序漏洞,某些不法人員很可能借助漏洞對(duì)緩沖區(qū)進(jìn)行信息查找,然后攻擊計(jì)算機(jī)系統(tǒng),這樣一來,不但用戶信息面臨泄露的風(fēng)險(xiǎn),計(jì)算機(jī)運(yùn)行系統(tǒng)也會(huì)遭到損壞。
如需了解更多,請(qǐng)?jiān)L問蛙云官網(wǎng)wayuncn
專業(yè)領(lǐng)域十余載,傾情奉獻(xiàn)
一次溝通,終生陪伴
為了更好的指導(dǎo)部署與測(cè)試藝術(shù)升系統(tǒng)nginx網(wǎng)站服務(wù)器高性能同時(shí)下安全穩(wěn)定運(yùn)行,需要對(duì)nginx服務(wù)進(jìn)行調(diào)優(yōu)與加固;
本次進(jìn)行Nginx服務(wù)調(diào)優(yōu)加固主要從以下幾個(gè)部分:
本文檔僅供內(nèi)部使用,禁止外傳,幫助研發(fā)人員,運(yùn)維人員對(duì)系統(tǒng)長(zhǎng)期穩(wěn)定的運(yùn)行提供技術(shù)文檔參考。
Nginx是一個(gè)高性能的HTTP和反向代理服務(wù)器,也是一個(gè)IMAP/POP3/SMTP服務(wù)器。Nginx作為負(fù)載均衡服務(wù)器, Nginx 既可以在內(nèi)部直接支持 Rails 和 PHP 程序?qū)ν膺M(jìn)行服務(wù),也可以支持作為 HTTP代理服務(wù)器對(duì)外進(jìn)行服務(wù)。
Nginx版本選擇:
項(xiàng)目結(jié)構(gòu):
Nginx文檔幫助:
Nginx首頁地址目錄: /usr/share/nginx/html
Nginx配置文件:
localtion 請(qǐng)求匹配的url實(shí)是一個(gè)正則表達(dá)式:
Nginx 匹配判斷表達(dá)式:
例如,匹配末尾為如下后綴的靜態(tài)并判斷是否存在該文件, 如不存在則404。
查看可用模塊編譯參數(shù):
http_gzip模塊
開啟gzip壓縮輸出(常常是大于1kb的靜態(tài)文件),減少網(wǎng)絡(luò)傳輸;
http_fastcgi_module模塊
nginx可以用來請(qǐng)求路由到FastCGI服務(wù)器運(yùn)行應(yīng)用程序由各種框架和PHP編程語言等??梢蚤_啟FastCGI的緩存功能以及將靜態(tài)資源進(jìn)行剝離,從而提高性能。
keepalive模塊
長(zhǎng)連接對(duì)性能有很大的影響,通過減少CPU和網(wǎng)絡(luò)開銷需要開啟或關(guān)閉連接;
http_ssl_module模塊
Nginx開啟支持Https協(xié)議的SSL模塊
Linux內(nèi)核參數(shù)部分默認(rèn)值不適合高并發(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 每個(gè)連接可以使用兩個(gè)文件描述符。
例如如果NGINX充當(dāng)代理時(shí),通常一個(gè)文件描述符表示客戶端連接,另一個(gè)連接到代理服務(wù)器,如果開啟了HTTP 保持連接,這個(gè)比例會(huì)更低(譯注:為什么更低呢)。
對(duì)于有大量連接服務(wù)的系統(tǒng),下面的設(shè)置可能需要調(diào)整一下:
精簡(jiǎn)模塊:Nginx由于不斷添加新的功能,附帶的模塊也越來越多,建議一般常用的服務(wù)器軟件使用源碼編譯安裝管理;
(1) 減小Nginx編譯后的文件大小
(2) 指定GCC編譯參數(shù)
修改GCC編譯參數(shù)提高編譯優(yōu)化級(jí)別穩(wěn)妥起見采用 -O2 這也是大多數(shù)軟件編譯推薦的優(yōu)化級(jí)別。
GCC編譯參數(shù)優(yōu)化 [可選項(xiàng)] 總共提供了5級(jí)編譯優(yōu)化級(jí)別:
常用編譯參數(shù):
緩存和壓縮與限制可以提高性能
NGINX的一些額外功能可用于提高Web應(yīng)用的性能,調(diào)優(yōu)的時(shí)候web應(yīng)用不需要關(guān)掉但值得一提,因?yàn)樗鼈兊挠绊懣赡芎苤匾?/p>
簡(jiǎn)單示例:
1) 永久重定向
例如,配置 http 向 https 跳轉(zhuǎn) (永久)
nginx配置文件指令優(yōu)化一覽表
描述:Nginx因?yàn)榘踩渲貌缓线m導(dǎo)致的安全問題,Nginx的默認(rèn)配置中存在一些安全問題,例如版本號(hào)信息泄露、未配置使用SSL協(xié)議等。
對(duì)Nginx進(jìn)行安全配置可以有效的防范一些常見安全問題,按照基線標(biāo)準(zhǔn)做好安全配置能夠減少安全事件的發(fā)生,保證采用Nginx服務(wù)器系統(tǒng)應(yīng)用安全運(yùn)行;
Nginx安全配置項(xiàng):
溫馨提示: 在修改相應(yīng)的源代碼文件后需重新編譯。
設(shè)置成功后驗(yàn)證:
應(yīng)配置非root低權(quán)限用戶來運(yùn)行nginx服務(wù),設(shè)置如下建立Nginx用戶組和用戶,采用user指令指運(yùn)行用戶
加固方法:
我們應(yīng)該為提供的站點(diǎn)配置Secure Sockets Layer Protocol (SSL協(xié)議),配置其是為了數(shù)據(jù)傳輸?shù)陌踩琒SL依靠證書來驗(yàn)證服務(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ù),如果他們的垃圾信息鏈接顯示在訪問日志中,并且這些日志被搜索引擎掃描,則會(huì)對(duì)網(wǎng)站排名產(chǎn)生不利影響
加固方法:
當(dāng)惡意攻擊者采用掃描器進(jìn)行掃描時(shí)候利用use-agent判斷是否是常用的工具掃描以及特定的版本,是則返回錯(cuò)誤或者重定向;
Nginx支持webdav,雖然默認(rèn)情況下不會(huì)編譯。如果使用webdav,則應(yīng)該在Nginx策略中禁用此規(guī)則。
加固方法: dav_methods 應(yīng)設(shè)置為off
當(dāng)訪問一個(gè)特制的URL時(shí),如"../nginx.status",stub_status模塊提供一個(gè)簡(jiǎn)短的Nginx服務(wù)器狀態(tài)摘要,大多數(shù)情況下不應(yīng)啟用此模塊。
加固方法:nginx.conf文件中stub_status不應(yīng)設(shè)置為:on
如果在瀏覽器中出現(xiàn)Nginx自動(dòng)生成的錯(cuò)誤消息,默認(rèn)情況下會(huì)包含Nginx的版本號(hào),這些信息可以被攻擊者用來幫助他們發(fā)現(xiàn)服務(wù)器的潛在漏洞
加固方法: 關(guān)閉"Server"響應(yīng)頭中輸出的Nginx版本號(hào)將server_tokens應(yīng)設(shè)置為:off
client_body_timeout設(shè)置請(qǐng)求體(request body)的讀超時(shí)時(shí)間。僅當(dāng)在一次readstep中,沒有得到請(qǐng)求體,就會(huì)設(shè)為超時(shí)。超時(shí)后Nginx返回HTTP狀態(tài)碼408(Request timed out)。
加固方法:nginx.conf文件中client_body_timeout應(yīng)設(shè)置為:10
client_header_timeout設(shè)置等待client發(fā)送一個(gè)請(qǐng)求頭的超時(shí)時(shí)間(例如:GET / HTTP/1.1)。僅當(dāng)在一次read中沒有收到請(qǐng)求頭,才會(huì)設(shè)為超時(shí)。超時(shí)后Nginx返回HTTP狀態(tài)碼408(Request timed out)。
加固方法:nginx.conf文件中client_header_timeout應(yīng)設(shè)置為:10
keepalive_timeout設(shè)置與client的keep-alive連接超時(shí)時(shí)間。服務(wù)器將會(huì)在這個(gè)時(shí)間后關(guān)閉連接。
加固方法:nginx.conf文件中keepalive_timeout應(yīng)設(shè)置為:55
send_timeout設(shè)置客戶端的響應(yīng)超時(shí)時(shí)間。這個(gè)設(shè)置不會(huì)用于整個(gè)轉(zhuǎn)發(fā)器,而是在兩次客戶端讀取操作之間。如果在這段時(shí)間內(nèi),客戶端沒有讀取任何數(shù)據(jù),Nginx就會(huì)關(guān)閉連接。
加固方法:nginx.conf文件中send_timeout應(yīng)設(shè)置為:10
GET和POST是Internet上最常用的方法。Web服務(wù)器方法在RFC 2616中定義禁用不需要實(shí)現(xiàn)的可用方法。
加固方法:
limit_zone 配置項(xiàng)限制來自客戶端的同時(shí)連接數(shù)。通過此模塊可以從一個(gè)地址限制分配會(huì)話的同時(shí)連接數(shù)量或特殊情況。
加固方法:nginx.conf文件中l(wèi)imit_zone應(yīng)設(shè)置為:slimits $binary_remote_addr 5m
該配置項(xiàng)控制一個(gè)會(huì)話同時(shí)連接的最大數(shù)量,即限制來自單個(gè)IP地址的連接數(shù)量。
加固方法:nginx.conf 文件中 limit_conn 應(yīng)設(shè)置為: slimits 5
加固方法:
加固方法:
解決辦法:
描述后端獲取Proxy后的真實(shí)Client的IP獲取需要安裝--with-http_realip_module,然后后端程序采用JAVA(request.getAttribute("X-Real-IP"))進(jìn)行獲取;
描述: 如果要使用geoip地區(qū)選擇,我們需要再nginx編譯時(shí)加入 --with-http_geoip_module 編譯參數(shù)。
描述: 為了防止外部站點(diǎn)引用我們的靜態(tài)資源,我們需要設(shè)置那些域名可以訪問我們的靜態(tài)資源。
描述: 下面收集了Web服務(wù)中常規(guī)的安全響應(yīng)頭, 它可以保證不受到某些攻擊,建議在指定的 server{} 代碼塊進(jìn)行配置。
描述: 為了防止某些未備案的域名或者惡意鏡像站域名綁定到我們服務(wù)器上, 導(dǎo)致服務(wù)器被警告關(guān)停,將會(huì)對(duì)業(yè)務(wù)或者SEO排名以及企業(yè)形象造成影響,我們可以通過如下方式進(jìn)行防范。
執(zhí)行結(jié)果:
描述: 有時(shí)你的網(wǎng)站可能只需要被某一IP或者IP段的地址請(qǐng)求訪問,那么非白名單中的地址訪問將被阻止訪問, 我們可以如下配置;
常用nginx配置文件解釋:
(1) 阿里巴巴提供的Concat或者Google的PageSpeed模塊實(shí)現(xiàn)這個(gè)合并文件的功能。
(2) PHP-FPM的優(yōu)化
如果您高負(fù)載網(wǎng)站使用PHP-FPM管理FastCGI對(duì)于PHP-FPM的優(yōu)化非常重要
(3) 配置Resin on Linux或者Windows為我們可以打開 resin-3.1.9/bin/httpd.sh 在不影響其他代碼的地方加入:-Dhttps.protocols=TLSv1.2, 例如
原文地址:
首先,硬件上面要有投入,規(guī)模比較大的局域網(wǎng),防火墻、三層交換機(jī)、上網(wǎng)行為管理都不能少。
其次,要有行政手段,建立企業(yè)內(nèi)部上網(wǎng)規(guī)范。
再次,還要有技術(shù)手段來進(jìn)行保障,最佳方案是:
1. 內(nèi)網(wǎng)權(quán)限管理用AD域。這樣可以用組策略來做很多限制,避免隨意安裝軟件導(dǎo)致局域網(wǎng)安全隱患。
2. 外網(wǎng)權(quán)限用防火墻、上網(wǎng)行為管理。工作時(shí)段進(jìn)行上網(wǎng)限制,否則只要有1-2個(gè)人進(jìn)行P2P下載、看網(wǎng)絡(luò)視頻,外網(wǎng)就基本上癱瘓了。
3. 沒有上網(wǎng)行為管理硬件的話,也可以部署上網(wǎng)行為管理軟件(比如“超級(jí)嗅探狗”、WFilter等)??梢酝ㄟ^旁路方式監(jiān)控流量占用、上網(wǎng)行為、禁止下載等,并且和域控結(jié)合。
在局域網(wǎng)中的Linux服務(wù)器集群,為了保障運(yùn)維安全,只能從堡壘機(jī)登錄到各個(gè)Linux服務(wù)器。那么需要對(duì)Linux服務(wù)器集群進(jìn)行安全加固,限制訪問權(quán)限。在堡壘機(jī)上可以部署腳本來記錄用戶操作的審計(jì)日志(詳情參考筆者的文章),那么整個(gè)局域網(wǎng)的Linux服務(wù)器集群的安全性就可以大大提高。
堡壘機(jī)作用明顯,其提供運(yùn)維統(tǒng)一入口和安全審計(jì)功能,切斷直接訪問和事后審計(jì)定責(zé),解決“運(yùn)維混亂”變得“運(yùn)維有序” 。
下面是三種方法總結(jié)。分別從服務(wù)端,系統(tǒng)端、防火墻端來完成只允許堡壘機(jī)SSH登錄的功能。
1、/etc/ssh/sshd_config
修改添加AllowUsers到ssh配置文件/etc/ssh/sshd_config? :
AllowUsers myuser@20.132.4.*
然后重啟?sshd服務(wù):systemctl restart sshd
2、hosts.allow與hosts.deny
修改/etc/hosts.deny中添加設(shè)置 sshd : ALL ,拒絕所有的訪問;
修改/etc/hosts.allow,添加設(shè)置sshd : 20.132.4.* ,單獨(dú)開啟某個(gè)IP地址 。
這兩個(gè)文件優(yōu)先級(jí)為先檢查hosts.deny,再檢查hosts.allow。
更加詳細(xì)信息參考筆者的文章-Linux中hosts.allow與hosts.deny? 。
3、iptables防火墻
tcp協(xié)議中,禁止所有的ip訪問本機(jī)的22端口。
iptables -I INPUT -p tcp--dport 22 -j DROP
只允許20.132.4.*?訪問本機(jī)的22端口
iptables? -I? INPUT? -s? 20.132.4.*? ?-ptcp? --dport? 22? -j? ?ACCEPT
另外/etc/pam.d/sshd也可以提供訪問控制功能,調(diào)用的pam_access.so模塊是根據(jù)主機(jī)名、IP地址和用戶實(shí)現(xiàn)全面的訪問控制,pam_access.so模塊的具體工作行為根據(jù)配置文件/etc/security/access.conf來決定。但是囿于資料過少,待以后遇到再解決把。