審計工具lynis介紹

1.介紹 html

       lynis 是一款開源的unix-based平臺的審計工具。能夠幫助審計員掃描unix系統以及可用的軟件。程序主要探測,系統上安裝的程序包,配置上的錯誤,以及安全問題和系統信息。 mysql

官方地址http://www.rootkit.nl/projects/lynis.html linux

程序徹底用shell 腳本編寫,下載以後就可直接運行,須要root權限,並讀寫目錄/var/log/ and /tmp。 執行./lynis –c 可開始掃描任務。程序會運行多個子腳原本進行不一樣類型的審計檢測,最後把結果輸出到report文件中。 sql

2.使用說明 shell

       經過 –profile 能夠指定掃描使用的配置,默認使用的是程序目錄下的default.prf文件,用戶能夠複製此文件後本身編輯本身的任務配置文件。 數據庫

       其中能夠配置任務相關的參數例如:ssl證書的搜尋目錄       ssl:certificates:/etc/ssl /var/www: 。 略過某個檢查項, ubuntu

config:test_skip_always:AAAA-1234 BBBB-5678 CCCC-9012: 。 安全

       lynis經過循環運行include目錄下的各個腳原本執行不一樣類型的掃描任務,把初步結果輸出到屏幕上,每運行一個腳本都須要人工干預是否繼續。 ssh

       程序會把每一項的檢查結果實時輸出到屏幕,給出ok或warning的提示。更加詳細的信息能夠參照日誌文件。 函數

3.代碼學習

1.主函數初始化工做

主程序運行後,會初始化一些 經常使用的變量

而後 會判斷掃描腳本目錄include和用戶自定義插件目錄plugin是否存在.

調用include下的consts,和functions腳本進行經常使用變量的設置和函數聲明。

調用trap 命令 攔截INT信號,maid函數作程序結束的清除工做。

使用umask 保證生成的文件的權限的安全。

 

. ${INCLUDEDIR}/parameters

調用include 下面的parameters腳本進行命令行參數的讀取。

shift命令: 移動參數位置,丟棄第一個參數。

同時還用到了:

case $變量 in

比配字符)

語句;

;;

*)

;;

調用function腳本里的checkupdate函數進行版本檢測

使用了dig命令查詢dns服務,將最新的版本號放在dns服務的描述裏面。

調用 id –u 保證程序以userid爲0的超級用戶權限運行。

在/var/run 目錄下面建立pid文件, 而且以前判斷文件是否存在保證程序實例的惟一。

 

2.檢測系統的功能腳本

1. 系統類型檢測

調用uname 獲取系統類型名。若是是linux 則調用uname –r 獲取內核版本。若是是ubuntu 使用命令

grep "^DISTRIB_ID=" /etc/lsb-release | cut -d '=' –f2 獲取系統名字。 f2 表明=分割後的第二個參數。

2.檢測系統的二進制可執行文件

在/bin /sbin /usr/bin 等路勁下查找常見的程序。


肯定常見程序是否存在和其安裝的目錄

3.最後循環執行include目錄下的以test開頭的檢測腳本

 

爲了去除if語句 分支過多帶來的代碼雜亂,在每一個程序邏輯前調用Register 函數檢查隨後的程序邏輯是否須要執行。

例如程序邏輯的檢查編號是否在屏蔽列表中,系統類型是否知足,等。

腳本tests_accounting 檢測不一樣系統下auditd審計工具的開啓狀態。

腳本tests_authentication 檢測用戶信息和認證。檢測超級用戶的個數,調用chkgrp進行檢查

   從passwd中檢索出系統的全部用戶和用戶id : awk -F: '($3 > 500) && ($3 != 65534) || ($3 == 0) { print $1","$3 }' /etc/passwd

   從/etc/group中檢測是否存在重複的用戶組 cat /etc/group | grep -v '^#' | grep -v '^$' | awk -F: '{ print $3 }' | sort | uniq –d     

   調用pwck檢測密碼文件的數據完整性: /usr/sbin/pwck -q –r

腳本tests_banner 檢測含有系統banner的文件是否存在,如/etc/issue 中保存了系統的版本信息。

腳本tests_boot_services 檢測系統啓動時運行的腳本,首先是grub boot loader文件/boot/grub/grub.conf 和grub.cfg, ubuntu 的話能夠檢測 /etc/rc2.d文件,檢測文件/etc/init.d,/etc/rc /etc/rc.local /etc/rc.d/rc.sysinit

腳本tests_crypto 檢測過時的ssl證書

腳本tests_database : 首先檢測是否有mysql進程存在,檢測mysql 數據庫是否設置密碼${MYSQLCLIENTBINARY} -u root --password= --silent --batch --execute="" 

腳本test_file_integrity 檢測是否安裝文件完整性檢測工具,例如tripwire

腳本tests_file_permission 檢測root/.ssh 文件的權限設置

腳本tests_filesystem :檢測/tmp 目錄和/home 目錄是否掛載在一個掛載點, 檢測文件系統類型(ext2,3,4),

腳本tests_firewall : 檢測iptable的開啓狀態和規則設置

相關文章
相關標籤/搜索