一、操作系統
Ubuntu系統默認只能以普通權限賬戶登錄,無法直接登錄root賬戶,所以很多要用到管理員權限的命令加sudo。
1、查看文件權限
查看該文件的權限 ls -la /var/log/audit/audit.log 查看如下文件的權限是否滿足 ls -l /etc/passwd ls -l /etc/hosts ls -l /etc/login.defs ls -l /etc/hosts.allow ls -l /etc/shadow ls -l /etc/hosts.deny ls -l /etc/group ls -l /etc/services 文件中日志信息所在文件的訪問權限 ls -l /var/log/messages ls -l /var/log/secure ls -l /var/log/audit/audit.log
2、查看系統版本
cat /etc/issue
cat /proc/version
uname -a
lsb_release -a
3、服務相關
service --status-all 查看本機的所有服務運行狀態(這條命令可以看到服務器是否安裝殺毒軟件) service --status-all | more service --status-all | less service --status-all | grep running 只查看正在運行的服務 chkconfig --list 查看開機自啟服務
sysv-rc-conf 配置服務級別的命令: 一般的linux有7個級別,ubuntu有8個級別(多了一個S級別) 0代表關機(halt) 1級別是單用戶模式(single) 2級別是多用戶級別,這個是默認級別 3,4,5未定義,可以提供給用戶定義其他多用戶級別 6代表重啟(restart) S級別系統內部定義的單用戶恢復模式。 可以用init 6代表重啟,切換運行級別。
4、審計相關
rpm -ql auditd 檢查是否安裝了 audit 插件 sudo apt-get install auditd 安裝 audit 插件 service auditd status 查看audit 服務的運行狀態 auditctl -s 查詢狀態 auditctl -l 查看規則 auditctl -D 刪除所有規則 ausearch -i -k key_name 查看審計日志#key_name為標識符
5、審計規則語法
臨時測試語法格式:auditctl -w PATH -p PERMISSION -k KEY_NAME,直接執行命令。 永久生效語法格式: -w PATH -p PERMISSION -k KEY_NAME,需要配置到/etc/audit/audit.rules 或者 /etc/audit/rules.d/audit.rules 文件中。 PATH:審計指定路徑。 PERMISSION:審計權限范圍,r為讀,w為寫,x為執行,a代表文件或目錄的屬性發生變化。 KEY_NAME:標識符。
6、配置臨時審計規則
臨時添加審計規則並測試,臨時添加的審計規則,重啟服務后會自動消失,這里用於測試。 1.添加臨時測試審計命令: auditctl -w /root -p rwxa -k root_test_change # 審計目錄為:root,審計權限為:rwxa,標識符為:root_test_change
2.模擬產生審計日志命令: ll /root; touch /root/test;
3.查看審計日志命令: ausearch -i -k root_test_change
7、配置永久審計規則
編輯以下任意1個文件,實現審計規則,/etc/audit/audit.rules 或者 /etc/audit/rules.d/audit.rules。 這里對5個目錄操作實現審計行為: -w /etc/passwd -p rwxa -k passwd_change,系統用戶賬戶信息。 -w /etc/shadow -p rwxa -k shadow_change,系統用戶密碼信息。 -w /etc/group -p rwxa -k group_change,系統用戶組信息。 -w /var/log/ -p rwxa -k log_change,系統日志信息。 -w /usr/local/mysql -p rwxa -k mysql_change,MySQL數據庫信息。
通過命令,service auditd restart 重啟服務后,auditctl -s 和 auditctl -l 查看服務狀態和審計規則。
查詢 /etc/auditd.conf 主配置文件如下:
log_file = /var/log/audit/audit.log,默認的日志存儲目錄文件。
二、mysql數據庫
系統等保要求,MySQL 數據庫必須開啟密碼策略(復雜度)設置和安裝審計插件。
數據庫的密碼復雜度設置從內部即可開啟和設置,但是審計插件必須額外進行下載和安裝。
1、MySQL 數據庫密碼策略(復雜度)設置
登錄數據庫,輸入以下命令,檢查當前密碼策略情況 show variables like 'validate_password%'; 通過以下命令,可以修改策略值(例) set global validate_password_policy=0;
關於MySQL密碼策略相關參數說明: 1)、validate_password_length 固定密碼的總長度; 2)、validate_password_dictionary_file 指定密碼驗證的文件路徑; 3)、validate_password_mixed_case_count 整個密碼中至少要包含大/小寫字母的總個數; 4)、validate_password_number_count 整個密碼中至少要包含阿拉伯數字的個數; 5)、validate_password_policy 指定密碼的強度驗證等級,默認為 MEDIUM; 關於 validate_password_policy 的取值: 0/LOW:只驗證長度; 1/MEDIUM:驗證長度、數字、大小寫、特殊字符; 2/STRONG:驗證長度、數字、大小寫、特殊字符、字典文件; 6)、validate_password_special_char_count 整個密碼中至少要包含特殊字符的個數; 如果顯示命令無效,則說明策略尚未開啟,按照以下步驟操作,編輯配置文件 vim /etc/my.cnf,添加以下命令。 plugin-load=validate_password.so 重啟服務,登錄數據庫,執行以下命令進行插件安裝。 INSTALL PLUGIN validate_password SONAME 'validate_password.so'; 再次重啟服務,輸入以下命令,檢查當前密碼策略情況。 show variables like 'validate_password%';
2、審計插件
審計插件下載地址:https://bintray.com/mcafee/mysql-audit-plugin/release/1.1.6-784#files
下載文件:audit-plugin-mysql-5.7-1.1.6-784-linux-x86_64.zip
目錄說明:lib -> libaudit_plugin.so、utils -> offset-extract.sh,用到這兩個文件。
1. 查詢數據庫插件統一存放目錄位置,將 libaudit_plugin.so 上傳到目錄下。 show global variables like 'plugin_dir'; 2.來到 plugin 目錄下對 so 文件授權。 chmod +x libaudit_plugin.so chown mysql:mysql libaudit_plugin.so 3. 創建審計日志目錄,並授權 mysql 用戶操作權限,授權操作不執行會導致日志無法生成。 mkdir /usr/local/mysql/3306/audit_log/ chown mysql.mysql /usr/local/mysql/3306/audit_log/ 4. 將 offset-extract.sh 腳本上傳到服務器上,並授權。 chmod +x offset-extract.sh 5. 執行腳本運算,獲取運算值。 ./offset-extract.sh /usr/local/mysql/bin/mysqld //offsets for: /usr/local/mysql/bin/mysqld (5.7.26) {"5.7.26","454f8eee117882061d2a4ed575328a01", 7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080, 13472, 148, 672}, 6. 在 MySQL 配置文件中,配置以下命令。 plugin-load=AUDIT=libaudit_plugin.so audit_offsets=7824, 7872, 3632, 4792, 456, 360, 0, 32, 64, 160, 536, 7988, 4360, 3648, 3656, 3660, 6072, 2072, 8, 7056, 7096, 7080, 13472, 148, 672 # 運算值,通過第五步得出 audit_json_file=ON audit_json_log_file=/usr/local/mysql/3306/audit_log/mysql-audit.json # 日志目錄 audit_record_cmds=insert,delete,update,create,drop,revoke,alter,grant,set # 針對這些語句來審計 7. 重啟數據庫服務,service mysql.server restart,輸入以下命令查詢插件安裝情況。 show plugins; 8. 查看插件版本。 show global status like 'AUDIT_version'; 9.查看日志文件是否開啟。 show global variables like 'audit_json_file'; *參數說明: 1. audit_json_file #是否開啟audit功能 2. audit_json_log_file #記錄文件的路徑和名稱信息 3. audit_record_cmds #audit記錄的命令,默認為記錄所有命令可以設置為任意dml、dcl、ddl的組合 如:audit_record_cmds=select,insert,delete,update 還可以在線設置set global audit_record_cmds=NULL(表示記錄所有命令) 4.audit_record_objs #audit記錄操作的對象,默認為記錄所有對象,可以用SET GLOBAL audit_record_objs=NULL設置為默認。也可以指定為下面的格式: audit_record_objs=,test.*,mysql.*,information_schema.*。 8. 查看審計日志 cat /usr/local/mysql/3306/audit_log/mysql-audit.json
3、測試
進入到 MySQL 命令行,執行語句 CREATE TABLE `t1` ( `id` int(10) NOT NULL AUTO_INCREMENT, `age` tinyint(4) NOT NULL DEFAULT '0', `name` varchar(30) NOT NULL DEFAULT '', PRIMARY KEY (`id`) )DEFAULT CHARSET=utf8; INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('1', '1'); INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('3', '3'); INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('4', '4'); INSERT INTO `test`.`t1` (`age`, `name`) VALUES ('5', '5'); update t1 set name='6' where age='5'; delete from t1 where age='1'; select * from t1; 查看日志即可。 cat /usr/local/mysql/3306/audit_log/mysql-audit.json