0 如何管理 SQL Server 登入稽核 V 006 0 2017/09/15
前言 此文件主要描述如何使用 N-Reporter 接收 SQL Server 的 log 首先必須開啟 SQL Server 的 C2 audit mode 功能, 透過 C2 audit mode, 系統將 SQL Server 的 log 送至 Windows 的 eventlog 接著利用 NXLOG 將 eventlog 轉成 syslog, 再發送至 N-Reporter N-Reporter 支援 SQL 2005/2008/2012/2014 Server, 本例為 Windows 2003 環境安裝 SQL 2005 版本的實際範例 文件章節如下 : 1. 如何開啟 SQL Server 的 C2 audit mode...2 2. 如何設定 NXLOG...7 配置 Windows Server 2003...7 配置 Windows Server 2008... 11 配置 Windows Server 2012... 15 3. 將設備加入系統及 Syslog 資料格式及 Facility 的設定... 18 連絡資訊... 19 1
2 1. 如何開啟 SQL Server 的 C2 audit mode 啟動 C2 audit mode 提供兩個方法, 設定的步驟如下 : 注 : 第一個方法必須先在 [ 群組原則編輯器 ] 中啟動 [Windows 防火牆 : 允許遠端系統管理例外 ], 設定也較為繁雜 如果環境有安裝 SQL Server Management Studio 工具, 建議以第二個方法設定 一 以 transact-sql 登入 Server, 開啟 C2 audit mode: 1. 以 transact-sql 方式連上 SQL Server a. 在 命令提示字元 輸入 sqlcmd -S sql-server -U sa -P npartner, 其中 -S 為 SQL Server 的 host name,-u 為 user,-p 為 password 請使用資料庫的管理者登入 本例管理者為 sa, 密碼為 npartner,host name 為 sql-server 2. 切換 master 資料庫 a. 輸入 use master, 按 enter 輸入 go, 按 enter 執行 sql 命令 3. 顯示進階組態選項 預設 show advanced option 為 0, 將其改為 1 a. 輸入 Exec sp_configure show advanced option, 1, 按 enter b. 輸入 go, 按 enter c. 輸入 reconfigure, 按 enter 4. 設定 C2 Audit a. 輸入 Exec sp_configure c2 audit mode, 1, 按 enter b. 輸入 Go, 按 enter c. 輸入 Reconfigure, 按 enter 2
5. 登出 a. 輸入 exit, 按 enter 二 使用 SQL Server Management Studio 登入 SQL Server, 開啟 C2 audit mode: 1. [ 開始 ] [ 所有程式 ] [Microsoft SQL Server] [SQL Server Management Studio] 3
4 2. 本例為伺服器類型下拉 [Database Engine], 輸入伺服器名稱, 驗證下拉 [SQL Server 驗 證 ], 下拉預設使用者 sa, 輸入密碼 "npartner", 滑鼠左點 [ 連接 ], 登入 SQL Server 3. 在 [ 物件總管 ] 視窗中滑鼠右點 SQL Server, 左點 [ 屬性 ] 4
4. 左點 [ 安全性 ], 勾選 [ 啟用 C2 稽核追蹤 ], 左點 [ 確定 ], 完成開啟 C2 audit mode 5
6 三 同時稽核成功的登入與失敗的登入 : 1. 使用 SQL Server Management Studio 登入 SQL Server 2. 在 [ 物件總管 ] 視窗中滑鼠右點 SQL Server, 左點 [ 屬性 ] 3. 左點 [ 安全性 ], 勾選 [ 失敗和成功的登入 ], 左點 [ 確定 ] 四 重新啟動 SQL SERVICE 有兩個方法: a. 命令提示字元 輸入 net stop mssqlserver 停止 SQL 服務, 再輸入 net start mssqlserver 開啟 SQL 服務 b. 使用 SQL Server Management Studio 登入後, 滑鼠右點 SQL Server, 左點重新啟動, 重啟 SQL 服務 如下圖 6
2. 如何設定 NXLOG 配置 Windows Server 2003 1. 下載 NXLOG: 瀏覽 URL http://sourceforge.net/projects/nxlog-ce/files/, 下載最新版 nxlog-ce-x.x.xxxx.msi, 本例下載 nxlog-ce-2.7.1191.msi 2. 安裝 NXLOG: 滑鼠雙點 nxlog-ce-2.7.1191.msi, 左點 [ Install ], 執行安裝 3. 下載 Windows 2003 NXLOG 配置檔 nxlog_win2k3.conf: 瀏覽 URL:http://www.npartnertech.com/download/tech/nxlog_win2k3.conf 編輯 NXLOG 配置檔 "C:\Program Files (x86)\nxlog\conf\nxlog.conf": 註 :32 位元作業系統 NXLOG 安裝在 "C:\Program Files\nxlog\conf\nxlog.conf" 64 位元系統 NXLOG 安裝在 "C:\Program Files (x86)\nxlog\conf\nxlog.conf" 將 nxlog_win2k3.conf 設定貼上並覆蓋 nxlog.conf 設定 ## This is a sample configuration file. See the nxlog reference manual about the ## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html ## Please set the ROOT to the folder your nxlog was installed into, ## otherwise it will not start. #define ROOT C:\Program Files\nxlog define ROOT C:\Program Files (x86)\nxlog 7
8 Moduledir %ROOT%\modules CacheDir %ROOT%\data Pidfile %ROOT%\data\nxlog.pid SpoolDir %ROOT%\data LogFile %ROOT%\data\nxlog.log <Extension syslog> Module xm_syslog </Extension> <Input in_eventlog> # For windows 2003 and earlier use the following: Module im_mseventlog Exec parse_syslog_bsd(); \ if ($EventID == 672 or $EventID == 673 or $EventID == 675 or $EventID == 528 or $EventID == 529 or $EventID == 538 or $EventID == 540 or $EventID == 551 or $EventID == 560 or $EventID == 612 or $EventID == 624 or $EventID == 626 or $EventID == 627 or $EventID == 628 or $EventID == 629 or $EventID == 630 or $EventID == 631 or $EventID == 632 or $EventID == 633 or $EventID == 634 or $EventID == 635 or $EventID == 636 or $EventID == 637 or $EventID == 638 or $EventID == 641 or $EventID == 642 or $EventID == 645 or $EventID == 646 or $EventID == 647) { $SyslogFacilityValue = 13; } \ else if ($SourceName == "Service Control Manager") { $SyslogFacilityValue = 13; } \ else if ($SourceName =~ /^MSSQL*/) { $SyslogFacilityValue = 18; } \ else\ {\ drop();\ } </Input> <Output out_eventlog> Module om_udp Host 192.168.2.64 Port 514 Exec $Message = string($eventid) + ": " + $Message; Exec if ($EventType == 'ERROR' or $EventType == 'AUDIT_FAILURE') { $SyslogSeverityValue = 3; } \ else if ($EventType == 'WARNING') { $SyslogSeverityValue = 4; } \ else if ($EventType == 'INFO' or $EventType == 'AUDIT_SUCCESS') { $SyslogSeverityValue = 5; } Exec to_syslog_bsd(); </Output> <Route eventlog> Path in_eventlog => out_eventlog </Route> 8
綠色部位請選擇 NXLOG 正確的安裝路徑, 本例環境為 64 位元系統選擇 "define ROOT C:\Program Files (x86)\nxlog" 紅色部位輸入 N-Reporter IP, 本例輸入 "192.168.2.64" 設定範例如下 : 4. 啟動 NXLOG: 步驟 a : 利用 [ 命令提示字元 ] 啟動 NXLOG 或步驟 b : [ 服務 ] 啟動 NXLOG a. [ 開始 ] [ 所有程式 ] [ 應用附屬程式 ], 滑鼠右點 [ 命令提示字元 ], 左點 [ 執行身分 ], 以系統管理員身分執行 命令提示字元輸入 : net stop nxlog net start nxlog b. [ 開始 ] [ 所有程式 ] [ 系統管理工具 ] [ 服務 ], 右點服務 [ nxlog ], 左點 [ 啟動 ] 或 [ 重新啟動 ] 9
10 5. 檢查 NXLOG 是否正常啟動 : 檢查 NXLOG 的 log 檔 "C:\Program Files (x86)\nxlog\data\nxlog.log", 沒有顯示 Error 的訊 息, 表示正常啟動 6. MS SQL 設備時語系選擇 : Windows Server 2003 繁體版環境請選擇 [ BIG5 ] 編碼 Windows Server 2003 簡體版環境請選擇 [ GB2312 ] 編碼 Windows Server 2003 英文版環境請選擇 [ UTF8 ] 編碼 註 : 因 NXLOG 沒有 Eventlog to Syslog Utility 將事件編碼轉成 UTF8 編碼的功能, 所以新增設備時請注意語系選擇, 避免出現亂碼 7. 新增 MS SQL 設備時 Facility 請選擇 "(18) local use 2 (local2)" 10
配置 Windows Server 2008 1. 下載 NXLOG: 瀏覽 URL http://sourceforge.net/projects/nxlog-ce/files/, 下載最新版 nxlog-ce-x.x.xxxx.msi, 本例下載 nxlog-ce-2.7.1191.msi 2. 安裝 NXLOG: 滑鼠雙點 nxlog-ce-2.7.1191.msi, 左點 [ Install ], 執行安裝 3. 下載 Windows 2008 NXLOG 配置檔 nxlog_win2k8.conf: 瀏覽 URL:http://www.npartnertech.com/download/tech/nxlog_win2k8.conf 編輯 NXLOG 配置檔 "C:\Program Files (x86)\nxlog\conf\nxlog.conf": 註 :32 位元作業系統 NXLOG 安裝在 "C:\Program Files\nxlog\conf\nxlog.conf" 64 位元系統 NXLOG 安裝在 "C:\Program Files (x86)\nxlog\conf\nxlog.conf" 將 nxlog_win2k8.conf 設定貼上並覆蓋 nxlog.conf 設定 ## This is a sample configuration file. See the nxlog reference manual about the ## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html ## Please set the ROOT to the folder your nxlog was installed into, ## otherwise it will not start. #define ROOT C:\Program Files\nxlog define ROOT C:\Program Files (x86)\nxlog Moduledir %ROOT%\modules CacheDir %ROOT%\data Pidfile %ROOT%\data\nxlog.pid SpoolDir %ROOT%\data LogFile %ROOT%\data\nxlog.log <Extension syslog> Module xm_syslog </Extension> <Input in_eventlog> # For windows 2008/vista/7/8/2012 and latter use the following: Module im_msvistalog Exec parse_syslog_bsd(); \ if ($EventID == 4768 or $EventID == 4769 or $EventID == 4771 or $EventID == 4624 or $EventID == 4625 or $EventID == 4634 or $EventID == 4647 or $EventID == 4648 or $EventID == 4656 or $EventID == 4719 or $EventID == 4720 or $EventID == 4722 or $EventID == 4723 or $EventID == 4724 or $EventID == 4725 or $EventID == 4726 or $EventID == 4727 or $EventID == 4728 or $EventID 11
12 == 4729 or $EventID == 4730 or $EventID == 4731 or $EventID == 4732 or $EventID == 4733 or $EventID == 4734 or $EventID == 4735 or $EventID == 4737 or $EventID == 4738 or $EventID == 4739 or $EventID == 4741 or $EventID == 4742 or $EventID == 4743) { $SyslogFacilityValue = 13; } \ else if ($SourceName == "Service Control Manager") { $SyslogFacilityValue = 13; } \ else if ($SourceName =~ /^MSSQL*/) { $SyslogFacilityValue = 18; } \ else\ {\ drop();\ } </Input> <Output out_eventlog> Module om_udp Host 192.168.2.64 Port 514 Exec $Message = string($sourcename) + ": " + string($eventid) + ": " + $Message; Exec if ($EventType == 'ERROR' or $EventType == 'AUDIT_FAILURE') { $SyslogSeverityValue = 3; } \ else if ($EventType == 'WARNING') { $SyslogSeverityValue = 4; } \ else if ($EventType == 'INFO' or $EventType == 'AUDIT_SUCCESS') { $SyslogSeverityValue = 5; } Exec to_syslog_bsd(); </Output> <Route eventlog> Path in_eventlog => out_eventlog </Route> 綠色部位請選擇 NXLOG 正確的安裝路徑, 本例環境為 64 位元系統選擇 "define ROOT C:\Program Files (x86)\nxlog" 紅色部位輸入 N-Reporter IP, 本例輸入 "192.168.2.64" 12
設定範例如下 : 4. 啟動 NXLOG: 步驟 a : 利用 [ 命令提示字元 ] 啟動 NXLOG 或步驟 b : [ 服務 ] 啟動 NXLOG a. [ 開始 ] [ 所有程式 ] [ 應用附屬程式 ], 滑鼠右點 [ 命令提示字元 ], 左點 [ 以系統管理員身分執行 ] 命令提示字元輸入 : net stop nxlog net start nxlog b. [ 開始 ] [ 所有程式 ] [ 系統管理工具 ] [ 服務 ], 右點服務 [ nxlog ], 左點 [ 啟動 ] 或 [ 重新啟動 ] 13
14 5. 檢查 NXLOG 是否正常啟動 : 檢查 NXLOG 的 log 檔 "C:\Program Files (x86)\nxlog\data\nxlog.log", 沒有顯示 Error 的訊息, 表示正常啟動 6. 新增 MS SQL 設備時 Facility 請選擇 "(18) local use 2 (local2)" 14
配置 Windows Server 2012 1. 下載 NXLOG: 瀏覽 URL http://sourceforge.net/projects/nxlog-ce/files/, 下載最新版 nxlog-ce-x.x.xxxx.msi, 本例下載 nxlog-ce-2.7.1191.msi 2. 安裝 NXLOG: 滑鼠雙點 nxlog-ce-2.7.1191.msi, 左點 [ Install ], 執行安裝 3. 下載 Windows 2012 NXLOG 配置檔 nxlog_win2012.conf: 瀏覽 URL:http://www.npartnertech.com/download/tech/nxlog_win2012.conf 編輯 NXLOG 配置檔 "C:\Program Files (x86)\nxlog\conf\nxlog.conf": 註 :32 位元作業系統 NXLOG 安裝在 "C:\Program Files\nxlog\conf\nxlog.conf" 64 位元系統 NXLOG 安裝在 "C:\Program Files (x86)\nxlog\conf\nxlog.conf" 將 nxlog_win2012.conf 設定貼上並覆蓋 nxlog.conf 設定 ## This is a sample configuration file. See the nxlog reference manual about the ## online at http://nxlog.org/nxlog-docs/en/nxlog-reference-manual.html ## Please set the ROOT to the folder your nxlog was installed into, ## otherwise it will not start. #define ROOT C:\Program Files\nxlog define ROOT C:\Program Files (x86)\nxlog Moduledir %ROOT%\modules CacheDir %ROOT%\data Pidfile %ROOT%\data\nxlog.pid SpoolDir %ROOT%\data LogFile %ROOT%\data\nxlog.log <Extension syslog> Module xm_syslog </Extension> <Input in_eventlog> # For windows 2008/vista/7/8/2012 and latter use the following: Module im_msvistalog Exec parse_syslog_bsd(); \ if ($EventID == 4768 or $EventID == 4769 or $EventID == 4771 or $EventID == 4624 or $EventID == 4625 or $EventID == 4634 or $EventID == 4647 or $EventID == 4648 or $EventID == 4656 or $EventID == 4719 or $EventID == 4720 or $EventID == 4722 or $EventID == 4723 or $EventID == 4724 or $EventID == 4725 or $EventID == 4726 or $EventID == 4727 or $EventID == 4728 or $EventID 15
16 == 4729 or $EventID == 4730 or $EventID == 4731 or $EventID == 4732 or $EventID == 4733 or $EventID == 4734 or $EventID == 4735 or $EventID == 4737 or $EventID == 4738 or $EventID == 4739 or $EventID == 4741 or $EventID == 4742 or $EventID == 4743) { $SyslogFacilityValue = 13; } \ else if ($SourceName == "Service Control Manager") { $SyslogFacilityValue = 13; } \ else if ($SourceName =~ /^MSSQL*/) { $SyslogFacilityValue = 18; } \ else\ {\ drop();\ } </Input> <Output out_eventlog> Module om_udp Host 192.168.2.64 Port 514 Exec $Message = string($sourcename) + ": " + string($eventid) + ": " + $Message; Exec if ($EventType == 'ERROR' or $EventType == 'AUDIT_FAILURE') { $SyslogSeverityValue = 3; } \ else if ($EventType == 'WARNING') { $SyslogSeverityValue = 4; } \ else if ($EventType == 'INFO' or $EventType == 'AUDIT_SUCCESS') { $SyslogSeverityValue = 5; } Exec to_syslog_bsd(); </Output> <Route eventlog> Path in_eventlog => out_eventlog </Route> 綠色部位請選擇 NXLOG 正確的安裝路徑, 本例環境為 64 位元系統選擇 "define ROOT C:\Program Files (x86)\nxlog" 紅色部位輸入 N-Reporter IP, 本例輸入 "192.168.2.64" 16
設定範例如下 : 3. 啟動 NXLOG: 步驟 a : 利用 [ Windows PowerShell ] 啟動 NXLOG 或步驟 b : [ 服務 ] 啟動 NXLOG a. 滑鼠左點 [ 開始 ], 滑鼠右點 [ Windows PowerShell ], 左點 [ 以系統管理員身分執行 ] [ Windows PowerShell ] 輸入 : net stop nxlog net start nxlog b. 滑鼠左點 [ 開始 ] [ 系統管理工具 ] [ 服務 ], 右點服務 [ nxlog ], 左點 [ 啟動 ] 或 [ 重新啟動 ] 17
18 4. 檢查 NXLOG 是否正常啟動 : 檢查 NXLOG 的 log 檔 "C:\Program Files (x86)\nxlog\data\nxlog.log", 沒有顯示 Error 的訊息, 表示正常啟動 5. 新增 MS SQL 設備時 Facility 請選擇 "(18) local use 2 (local2)" 3. 將設備加入系統及 Syslog 資料格式及 Facility 的設定 (1) 登入 N-Reporter / N-Cloud 系統 (2) 滑鼠點選 [ 設備管理 / Syslog 設備 ] (3) 滑鼠點選 [ 未知設備的編輯圖示 ], 在 IP 欄位中應該能看見此台的設備的 IP 請輸入一個方便 記憶的設備名稱, 接著在 [ 資料格式 ] 下拉選單中依設備的類型選擇 [ MS SQL], 在 [ Facility] 下 拉選單中選 [(18)], 勾選 [ 啟動接收 ], 按下 [ 確定 ], 即完成設備的系統新增程序 18
連絡資訊 N-Partner 公司連絡方式 : TEL: +886-4-23752865 FAX: +886-4-23757458 有關技術問題請洽 : Email: support@npartnertech.com Skype:support@npartnertech.com 有關業務相關問題請洽 : Email: sales@npartnertech.com 19