審計工具lynis介紹

jopen 11年前發布 | 14K 次閱讀 Lynis

1.介紹

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

</blockquote>

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

程序完全用shell 腳本編寫,下載之后就可直接運行,需要root權限,并讀寫目錄/var/log/ and /tmp。 執行./lynis –c 可開始掃描任務。程序會運行多個子腳本來進行不同類型的審計檢測,最后把結果輸出到report文件中。

</blockquote>

2.使用說明

       通過 –profile 可以指定掃描使用的配置,默認使用的是程序目錄下的default.prf文件,用戶可以復制此文件后自己編輯自己的任務配置文件。

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

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

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

</blockquote>

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

</blockquote>

3.代碼學習

1.主函數初始化工作

</blockquote>

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

審計工具lynis介紹

審計工具lynis介紹

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

審計工具lynis介紹

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

審計工具lynis介紹

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

審計工具lynis介紹

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

審計工具lynis介紹

. ${INCLUDEDIR}/parameters

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

審計工具lynis介紹

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

同時還用到了:

case $變量 in

比配字符)

語句;

;;

*)

;;

</blockquote>

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

審計工具lynis介紹

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

</blockquote>

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

</blockquote>

審計工具lynis介紹

在/var/run 目錄下面創建pid文件, 并且之前判斷文件是否存在保證程序實例的唯一。

</blockquote>

2.檢測系統的功能腳本

1. 系統類型檢測

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

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

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

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


</blockquote>

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

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

審計工具lynis介紹

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

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

審計工具lynis介紹

腳本tests_accounting 檢測不同系統下auditd審計工具的開啟狀態。

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

</blockquote>

   從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的開啟狀態和規則設置</span>

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!