?

中國科學技術大學Nginx 在校園網站集中服務的應用

2019-04-18 09:34張煥杰陳蕾夏玉良
中國教育網絡 2019年3期
關鍵詞:代理服務器IP地址日志

文/張煥杰 陳蕾 夏玉良

無論是單純發布信息的網頁或是WWW頁面訪問的應用,呈現給最終用戶的形式都是Web網站。用戶通過校園網或Internet網絡訪問這些網站時,希望能提供IPv6/IPv4多協議支持,提供多家運營商線路入口的就近訪問,提供HTTPS安全傳輸支持。網站運維方為了安全的考慮,希望將訪問流量引導經過Web應用防火墻(WAF)設備過濾處理,提供對網站靈活可控的邊界防護手段,具備日志記錄功能以滿足法規要求。

Nginx是一個異步框架的Web服務器,也可用作反向代理、負載均衡和HTTP緩存服務器。中國人章亦春把LuaJIT VM(Lua語言是巴西教授發明的簡單腳本語言)嵌入 Nginx中,實現高性能服務端解決方案OpenResty。

Nginx使用高效率的操作系統內核epoll接口處理TCP并發連接,因此可以輕松支持幾十萬甚至更多并發連接。

Nginx運行在Unix類操作系統或Windows操作系統,本文以最常見的Linux操作系統為運行環境。

Nginx反向代理服務器

如圖1所示,設立一臺Nginx服務器,將網站的域名解析到該Nginx服務器。用戶訪問網站時,Nginx服務器首先接收來自用戶的訪問請求,并將請求轉發到源網站,獲取到應答后再轉發給用戶。這樣工作的Nginx服務器被稱為反向代理服務器。設立Nginx反向代理服務器,集中處理用戶對網站訪問服務,在不修改源服務器的情況下,以幾乎零成本滿足引言中描述的最終用戶和網站運維方的多種需求。

圖1 Nginx反向代理工作示意

多入口與IPv6/IPv4協議支持

Nginx反向代理服務器上設置多個運營商網絡IP地址,并使用DNS的視圖功能,將不同運營商的用戶對域名的查詢請求解析到恰當的IP,這樣用戶的訪問就可以就近進行。Nginx服務器要把從某個運營商入口進來的請求對應的應答數據包,還要從該出口返回,確保用戶訪問服務器的任何IP都能正常進行。

Linux操作系統支持策略路由的設置。管理員使用ip rule命令讓不同IP發出的數據包查找不同的路由表,從而實現源地址策略路由。Nginx反向代理服務器中給出了設置策略路由的配置命令。設置完成后,使用https://www.17ce.com/可從國內外若干網絡對網站的訪問可達性、傳輸延遲和速度進行測試。

Linux操作系統與Nginx軟件提供完整的IPv6協議功能,簡單設置,不需要修改源站的設置,即可對外提供IPv6/IPv4協議服務,是將現有網站升級支持IPv6協議最簡單和便捷的方式。

HTTPS協議支持

超文本傳輸安全協議HTTPS提供對網站服務器的身份認證,保護交換數據的隱私與完整性。為了避免中間人的流量嗅探或流量劫持,越來越多的Web站點開始使用HTTPS協議。HTTP/2是一種二進制協議,帶來推送、數據流復用和幀控制等功能,目前主要用于減少HTTPS協議握手時延遲對訪問體驗的負面影響,已經被主流的瀏覽器支持。

只要具有公認的CA機構發出的服務器證書,Nginx就可以方便地對外提供HTTPS協議訪問。為了簡化管理,我們僅僅在用戶和Nginx反向代理服務器間啟用HTTPS協議,在Nginx反向代理服務器與源服務器間仍使用HTTP協議。

Nginx反向代理服務器轉發請求時,向源服務器發送Host、X-REAL-IP和X-Forwarded-Proto三個HTTP頭,內容分別是請求的主機名、客戶端IP地址、客戶訪問時的協議(HTTP/HTTPS),以方便源服務器使用。

啟用HTTPS協議后,建議使用https://www.ssllabs.com評估HTTPS協議的安全性,必要時調整部分參數,禁用不安全的加密算法,以達到更高的安全性。

提供HTTPS服務后,可以將用戶的HTTP訪問重定向到HTTPS訪問,并設置HSTS頭,強制將來一直使用HTTPS訪問,徹底杜絕中間人的流量嗅探或流量劫持。

WAF設備引流

只要讓Nginx反向代理服務器訪問源服務器的HTTP流量經過Web應用防火墻(WAF)設備,就完成了引流工作。WAF設備上看到請求均是由Nginx服務器發起,因此需要調整WAF設置,讓WAF設備從HTTP請求的X-REAL-IP頭獲取客戶端IP信息。

為減少攻擊者對Nginx的影響,可以收集并分析WAF日志,獲取到攻擊者的IP地址,直接使用Nginx服務器上的包過濾防火墻將這些IP地址封禁,徹底切斷攻擊者的通信。

邊界防護

校園內網站數量龐大,不同的網站在不同的時期有不同的邊界防護需求。如在重要時期網絡保障階段,需要將可能存在潛在漏洞的信息化應用網站限制在校內,并將部分必須校外訪問的網站增加一個認證階段,避免這些網站直接暴露到校外的潛在安全風險。

使用反向代理對外服務的網站,源服務器不需要對外暴露,能讓反向代理服務器訪問即可,源服務器更加安全。

設置Nginx中的Acl訪問控制策略,僅允許自己校內的IPv4/IPv6地址訪問,即可將網站限制在校內訪問。

使用lua對反向代理做權限控制給出的方案,在Nginx反向代理服務器上運行一段lua腳本程序,不需對源網站做任何修改,能對校外訪問網站增加一次認證階段,實現靈活的邊界防護策略,并可隨時在Nginx代理服務器上切換。權限控制部分是運行在Nginx內的lua程序,開發簡單、執行效率高、對性能影響小。權限控制部分通過檢查校外用戶請求中的nginx_auth_uid、nginx_auth_expire和nginx_auth_hash三個參數,結合與認證部分共享的密鑰,判斷訪問者是否已通過認證,允許通過認證的用戶訪問。如果是未通過認證的用戶,重定向到獨立的認證部分。認證部分對接學校的統一身份認證系統,平時使用簡單的用戶名和密碼認證,在重要時期網絡保障階段,可增加更加安全的雙因子認證。通過認證后會設置對應的nginx_auth_uid、nginx_auth_expire和nginx_auth_hash三個cookie,后續的訪問會被權限控制部分允許。

日志記錄

Nginx反向代理可以集中記錄Web網站的訪問日志,不依賴源站點即可滿足法規對日志的記錄要求。

依據這些集中記錄的日志,可以統計網站的IPv4/IPv6/HTTPS/HTTP/2訪問情況,還可以分析異常掃描和攻擊,找出潛在的威脅。

性能優化

默認安裝的操作系統不能充分發揮Nginx的性能。step-by-step install Nginx反向代理服務器給出對操作系統的優化建議。

conntrack優化:對于Nginx服務器,因為有大量的短連接,最好不啟用conntrack連接跟蹤功能。如果因設置需要啟用連接跟蹤功能,需要在加載nf_conntrack內核模塊時增加一個較大的hashsize參數,該參數*8即是內核可以記錄的最多連接數,建議hashsize設置為50000。啟用連接跟蹤功能時,還應調整連接跟蹤的超時時間,讓異常狀態的連接及早超時刪除,減少需要跟蹤的連接數量。

單進程和系統打開的最多文件數,建議增加到655360。

應用案例

中國科學技術大學從2011年開始使用Nginx反向代理服務器。目前Nginx反向代理服務運行在一個2G內存/4個CPU的虛擬機中,集中對650個網站提供IPv4/IPv6、HTTPS服務。該虛擬機有中國教育和科研計算機網、中國科技網、中國電信、中國聯通和中國移動五個IPv4入口,并有CNGI-CERNET2 IPv6入口。DNS服務器上設置若干DNS view,將用戶的解析分配到對應的IP地址,引導用戶的就近訪問。

中國科學技術大學使用Let’s Encrypt免費提供的自動簽發服務器證書。由于Let’s Encrypt有每7天50個證書簽發速率限制,對于其中563個形如*.ustc.edu.cn域名,在DNS服務器上使用DNS驗證方式申請*.ustc.edu.cn證書,利用git傳遞到Nginx反向代理服務器上;而其他87個獨立域名,則在Nginx反向代理服務器上使用HTTP驗證方式分批申請證書。有了這些證書,Nginx中增加https配置,即可對外提供HTTPS及HTTP/2服務。Let’s Encrypt簽發的證書有效期為90天,服務器上每天凌晨運行一個腳本,申請更新60天前簽發的證書,更新成功后重啟Nginx進程以使用新證書,實現證書的自動更新。

對Nginx反向代理服務器上的日志文件統計可以掌握用戶的訪問情況。

圖2 學校主頁訪問統計

圖2是學校主頁http://www.ustc.edu.cn的訪問統計,約80%使用HTTPS方式,約60%使用HTTP/2協議,約10%使用IPv6協議。網站的訪問統計對比可以說明高校用戶在IPv6協議使用率和新版本瀏覽器(更好支持HTTPS及HTTP/2)普及率方面比普通網民要高。

猜你喜歡
代理服務器IP地址日志
一名老黨員的工作日志
扶貧日志
鐵路遠動系統幾種組網方式IP地址的申請和設置
地鐵信號系統中代理服務器的設計與實現
雅皮的心情日志
雅皮的心情日志
公安網絡中IP地址智能管理的研究與思考
防火墻技術與校園網絡安全的研究
《IP地址及其管理》教學設計
一種容侵系統的設計
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合