前期調研
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)應采用密碼技術保證重要數據在存儲過程中的保密性,包括但不限於鑒別數據、重要業務數據和重要個人信息等
無獨立的登錄管理界面,通過登錄到操作系統本地管理該中間件,未涉及鑒別數據的存儲。