等保2.0測評之Nginx 中介軟體
前期調研
nginx是一款自由的、開源的、高效能的HTTP伺服器和反向代理伺服器,一般主要功能會有兩種,一種作為一個HTTP伺服器進行網站的釋出處理,另外一種nginx可以作為反向代理進行負載均衡的實現。所以這裡填主要功能的時候就要分清。
檢視Nginx版本:
如果系統有配置nginx命令的環境變數,直接 nginx -v 即可檢視版本資訊
若無,我們去nginx主目錄下執行cmd,輸入nginx -v檢視版本
一、身份鑑別
由於該中介軟體並沒有類似於Tomcat一樣的管理控制檯,所以個人認為以下條款均判不適用。
a)應對登入的使用者進行身份標識和鑑別,身份標識具有唯一性,身份鑑別資訊具有複雜度要求並定期更換
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,身份鑑別由作業系統層面實現。
b)應具有登入失敗處理功能,應配置並啟用結束會話、限制非法登入次數和當登入連線超時自動退出等相關措施
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,身份鑑別由作業系統層面實現。
c)當進行遠端管理時,應採取必要措施防止鑑別資訊在網路傳輸過程中被竊聽
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,身份鑑別由作業系統層面實現。
d)應採用口令、密碼技術、生物技術等兩種或兩種以上組合的鑑別技術對使用者進行身份鑑別,且其中一種鑑別技術至少應使用密碼技術來實現
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,身份鑑別由作業系統層面實現。
二、訪問控制
同理判不適用。
a) 應對登入的使用者分配賬戶和許可權
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,訪問控制由作業系統層面實現。
b)應重新命名或刪除預設賬戶,修改預設賬戶的預設口令
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,訪問控制由作業系統層面實現。
c)應及時刪除或停用多餘的、過期的賬戶,避免共享賬戶的存在
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,訪問控制由作業系統層面實現。
d)應授予管理使用者所需的最小許可權,實現管理使用者的許可權分離
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,訪問控制由作業系統層面實現。
e)應由授權主體配置訪問控制策略,訪問控制策略規定主體對客體的訪問規則
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,訪問控制由作業系統層面實現。
f)訪問控制的粒度應達到主體為使用者級或程序級,客體為檔案、資料庫表級
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,訪問控制由作業系統層面實現。
g)應對重要主體和客體設定安全標記,並控制主體對有安全標記資訊資源的訪問
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,訪問控制由作業系統層面實現。
三、安全審計
a)應啟用安全審計功能,審計覆蓋到每個使用者,對重要的使用者行為和重要安全事件進行審計
針對於各類的中介軟體來說,日誌一般會分為兩種,一種是 error.log 錯誤日誌,另一種是 access.log 網頁訪問日誌。都開啟的情況下,我們就可以判符合(前提日誌級別配置正確)。
先來看一下 errlog_log:
error_log:設定伺服器執行的相關日誌
設定格式
error_log 路徑 級別
預設值:error_log logs/error.log error;
配置段:main,http,server,location
關閉error_log:error_log off
日誌的級別:
debug:除錯級別,記錄的資訊最多;
info:普通級別;
notice:可能需要注意的資訊;
warn:警告訊息;
error:錯誤訊息;
crit:嚴重錯誤訊息;
access_log:
訪問日誌主要記錄客戶端訪問Nginx的每一個請求,格式可以自定義。通過訪問日誌,你可以得到使用者地域來源、跳轉來源、使用終端、某個URL訪問量等相關資訊。
access_log:用來配置訪問日誌的輸出格式和輸出的路徑;
語法: access_log path [format [buffer=size [flush=time]]];
預設值: access_log logs/access.log combined;
後續版本好像有變更,預設為 main;
配置段: http, server, location, if in location, limit_except
關閉access_log:access_log off
path:指定日誌的存放位置
format:指定日誌的格式。預設使用預定義的combined
buffer:用來指定日誌寫入時的快取大小。預設是64k
gzip:日誌寫入前先進行壓縮。壓縮率可指定,從1到9數值越大壓縮比越高,同時壓縮的速度也越慢。預設是1。
flush:設定快取的有效時間。如果超過flush指定的時間,快取中的內容將被清空。
if:條件判斷。如果指定的條件計算為0或空字元,那麼當前作用域下的所有的請求日誌都會被關閉。
所以我們這裡先在 Nginx 主目錄下找到conf資料夾
其中會有一個叫 nginx.conf 的檔案
檢視對應error_log和access_log配置情況,預設情況下都是為註釋狀態
若為註釋狀態,nginx 會有一個預設值,如下:
error_log logs/error.log error;
access_log logs/access.log main;
b)審計記錄應包括事件的日期和時間、使用者、事件型別、事件是否成功及其他與審計相關的資訊
日誌檔案在nginx主目錄下的log目錄中
預設情況下都是滿足條款要求的,比如檢視一下 access.log 日誌
另外考慮的點就是日誌記錄的時間是否準確,中介軟體時間一般跟隨作業系統時鐘,如果作業系統時間正確,那麼基本也不會有問題。
或者我們可以去配置檔案中,配置我們自己想要的日誌記錄內容。
對應引數:log_format
log_format:用來設定日誌格式
nginx的log_format有很多可選的引數用於標示伺服器的活動狀態,預設為:
‘$remote_addr – $remote_user [$time_local] “$request” ‘ ‘$status $body_bytes_sent “$http_referer” ‘ ‘”$http_user_agent” “$http_x_forwarded_for”‘;
如果要記錄更詳細的資訊需要自己修改log_format,具體可設定的引數格式及說明如下:
這條日誌是之前實驗訪問應用留下的,我們可以分析一下。
192.168.21.176 - - [28/Sep/2020:14:34:48 +0800] "GET /favicon.ico HTTP/1.1" 404 555 "-" "Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.108 Safari/537.36"
引數 |
說明 |
示例 |
$remote_addr |
客戶端地址 |
192.168.21.176 |
$remote_user |
客戶端使用者名稱稱 |
-- |
$time_local |
訪問時間和時間 |
[28/Sep/2020:14:34:48 +0800] |
$request |
請求的URI和HTTP協議 |
"GET /favicon.ico HTTP/1.1" |
$http_host |
請求地址,即瀏覽器中你輸入的地址(域名或IP) |
192.168.0.23 |
$status |
HTTP請求狀態 |
404 |
$upstream_status |
upstream狀態 |
|
$body_bytes_sent |
伺服器傳送客戶端的相應body位元組數 |
555 |
$http_referer |
url跳轉來源 |
- https://www.google.com/ |
$http_user_agent |
使用者終端瀏覽器等資訊 |
"Mozilla/5.0 (Windows NT……" |
$http_x_forwarded_for |
當前端有代理伺服器時,設定web節點記錄客戶端地址的配置,此引數生效的前提是代理伺服器也要進行相關的x_forwarded_for設定 |
|
$ssl_protocol |
SSL協議版本 |
TLSv1 |
$ssl_cipher |
交換資料中的演算法 |
Rc4-SHA |
$upstream_addr |
後臺upstream的地址,即真正提供服務的主機地址 |
10.36.10.80:80 |
$request_time |
整個請求的總時間 |
0.165 |
$upstream_response_time |
請求過程中,upstream響應時間 |
0.002 |
所以如果想要記錄更詳細,可以自己進行配置。
c)應對審計記錄進行保護,定期備份,避免受到未預期的刪除、修改或覆蓋等
1. 確認本機的日誌檔案許可權
確認是否僅管理員組具有日誌的管理許可權,其他組沒有修改許可權
如users組無權管理修改
Linux系統下同理,對應的日誌檔案不高於644
2. 是否對日誌檔案進行定期備份
這個好像預設自帶的方式沒有找到,那麼就去詢問一下運維人員,是否有備份措施對中介軟體日誌進行備份。
一般有的現場看到好像是通過FTP同步,會將日誌檔案同步一份到備份伺服器上。
3. 日誌留存時間
檢視日誌留存時間是否達到6個月以上,滿足法律法規要求。
d)應對審計程序進行保護,防止未經授權的中斷
審計程序與中介軟體主程序關聯,無法單獨中斷審計程序,只要開啟即符合。
四、入侵防範
a)應遵循最小安裝的原則,僅安裝需要的元件和應用程式
該測評點在作業系統層面核查,中介軟體不適用該條款。
b)應關閉不需要的系統服務、預設共享和高危埠
該測評點在作業系統層面核查,中介軟體不適用該條款。
c)應通過設定終端接入方式或網路地址範圍對通過網路進行管理的管理終端進行限制
通過登入到伺服器本地對Nginx 軟體進行管理,該項不適用。
d)應提供資料有效性檢驗功能,保證通過人機介面輸入或通過通訊介面輸入的內容符合系統設定要求
該中介軟體無獨立的管理控制檯,無對應的人機或通訊介面輸入功能,該項不適用。
e)應能發現可能存在的已知漏洞,並在經過充分測試評估後,及時修補漏洞
1.通過漏洞掃描、滲透測試等方式核查中介軟體系統是否存在高風險漏洞;
2.核查是否及時修補漏洞。
詢問客戶,檢視漏洞掃描報告,如果無漏洞可判符合
不存在高危漏洞,判部分符合
f)應能夠檢測到對重要節點進行入侵的行為,並在發生嚴重入侵事件時提供報警
該測評點在作業系統層面核查,中介軟體不適用該條款。
五、可信驗證
a)可基於可信根對計算裝置的系統載入程式、系統程式、重要配置引數和應用程式等進行可信驗證,並在應用程式的關鍵執行環節進行動態可信驗證,在檢測到其可信性受到破壞後進行報警,並將驗證結果形成審計記錄送至安全管理中心
該測評點在裝置層面核查,中介軟體不適用該條款。
六、資料完整性
資料完整性對於中介軟體來說,一般涉及鑑別資料、重要審計資料、重要配置資料這三類
a)應採用校驗技術或密碼技術保證重要資料在傳輸過程中的完整性,包括但不限於鑑別資料、重要業務資料、重要審計資料、重要配置資料、重要視訊資料和重要個人資訊等
1. 鑑別資料、重要配置資料
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,故鑑別資料、重要配置資料等無單獨傳輸過程。
2. 審計資料
確認審計資料是否有傳輸,如果審計資料有備份的話就需要考慮這點。
b)應採用校驗技術或密碼技術保證重要資料在儲存過程中的完整性,包括但不限於鑑別資料、重要業務資料、重要審計資料、重要配置資料、重要視訊資料和重要個人資訊等
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,未涉及鑑別資料的儲存。
重要配置資料、重要審計資料需要詢問管理人員,是否有對配置檔案,日誌檔案等做定期的雜湊完整性校驗等。
七、資料保密性
資料保密性來說對於中介軟體這裡僅涉及鑑別資料,Nginx 不涉及鑑別資料,所以均不適用。
a)應採用密碼技術保證重要資料在傳輸過程中的保密性,包括但不限於鑑別資料、重要業務資料和重要個人資訊等
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,故鑑別資料無單獨傳輸過程。
b)應採用密碼技術保證重要資料在儲存過程中的保密性,包括但不限於鑑別資料、重要業務資料和重要個人資訊等
無獨立的登入管理介面,通過登入到作業系統本地管理該中介軟體,未涉及鑑別資料的儲存。