亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
最近訪問板塊 發(fā)新帖
查看: 2036 | 回復: 0
打印 上一主題 下一主題

生成 AIX 審計報告 [復制鏈接]

論壇徽章:
0
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2012-01-18 11:10 |只看該作者 |倒序瀏覽
簡介
在 IBM Systems 雜志(2009 年 8 月)上,我發(fā)表了一篇名為 “Monitoring Events with AIX Audit” 的文章。在那篇文章中,我沒有討論審計報告的生成過程。AIX 提供的 auditselect 實用程序可以從審計日志中選擇事件記錄。但是,當采用流模式進行審計時,可以使用 sed 和 awk 實用程序生成格式化的報告。在本文中,我將討論審計事件并演示如何生成日常審計報告。

審計概述
AIX 審計可以配置為三種模式:流、二進制或者流和二進制。我個人喜歡選用流模式,因為它以文本模式寫審計日志文件,允許實時地查看審計事件。流模式將事件寫入循環(huán)的緩沖文件 stream.out 中。因此,如果包含審計日志文件的文件系統(tǒng)滿了,它仍然會繼續(xù)將事件寫到日志文件的開頭。
當以二進制模式使用審計時,會以二進制格式寫入數(shù)據(jù)。如果希望長期收集并保存審計事件記錄,該模式一般是首選方式。但是,作為良好的管理實踐,也可以使用流模式保存審計事件的歷史記錄。

審計配置文件
在開始配置審計時,必須非常小心地進行嘗試,在剛開始收集審計事件時,毫無疑問會出錯。負責審計的系統(tǒng)管理員會對此進行核查。要想監(jiān)視相應的事件,則需要定期修改 /etc/security/config 文件。關(guān)于可監(jiān)視事件的完整列表,請參閱 參考資料 中的紅皮書《Accounting and auditing》。對確定要監(jiān)視的事件之后,可以通過其他文件定制監(jiān)視,例如:
/etc/sudoers/etc/ssh/sshd_config/etc/syslog.conf

/etc/security/objects 文件中設置要監(jiān)視的特殊文件和系統(tǒng)特有的文件。
在 objects 文件中,可以指定應該監(jiān)視的文件(稱為對象),以及應該監(jiān)視讀、寫還是執(zhí)行操作。監(jiān)視 sudoers、sshd_configsyslog.conf 文件的寫操作的典型設置如下:
/etc/sudoers.tmp: w = "SUDO_WRITE"/etc/syslog.conf: w = "SYSLOG_WRITE"/etc/ssh/sshd_config: w = "W_SSHD_CONFIG_IBM"

前面示例中 objects 文件的輸出格式是:
full path name of file: < access mode> = "tag name"

其中的 access mode 是 r(代表讀訪問)、w(代表寫訪問)和 x(代表執(zhí)行訪問)。tag name 是監(jiān)視的文件的唯一名稱。應該確保tag name 描述了指定的訪問模式。另外注意,每一行上只能有一個 access mode 條目。因此,如果要監(jiān)視 /etc/ssh/sshd_config 的讀寫訪問,則可以設置以下條目:
/etc/ssh/sshd_configw = "W_SSHD_CONFIG_IBM"r = "R_SSHD_CONFIG_IBM"

對于寫訪問,我使用的標記名以 "W_" 開頭;對于讀訪問,標記名以 "R_" 開頭。這有助于在查看審計日志或?qū)徲媹蟾鏁r明確區(qū)分讀訪問和寫訪問。
為了讓審計系統(tǒng)了解如何將每個對象作為一條記錄輸出到審計日志中,需要使用 /etc/security/events 文件中的相應條目。
使用簡單的 printf 語句就足夠了。例如,要想記錄 /etc/ssh/sshd_config/etc/security/audit/objects 文件中指定的標記名 W_SSHD_CONFIG_IBM,可以進行以下設置:
* /etc/ssh/sshd_configW_SSHD_CONFIG_IBM = printf "%s"

在這個示例中,代碼行開頭是一個 '*',然后是監(jiān)視的文件的完整路徑名,接著是 objects 文件中指定的標記名,最后是一個 printf 語句,可輸出傳遞給的命令的字符串。
要想讓審計系統(tǒng)輸出所有已分析的、作為被監(jiān)視命令一部分的選項,則需要確保審計系統(tǒng)輸出了記錄的剩余部分。因此,在/etc/security/streamcmds 文件中要確保 auditpr 命令包含 '-v'。下面是一個示例:
/usr/sbin/auditstream | auditpr -v > /audit/stream.out &

監(jiān)視的審計事件放在 /etc/security/config 文件中?稍谠撐募袆(chuàng)建包含要監(jiān)視的事件的類。config 文件的內(nèi)容如下所示。通常會將事件類分配給用戶,還指定默認分配給系統(tǒng)上的每個用戶的類。一個用戶可以屬于一個或多個類。注意,在 "general" 類中,我只監(jiān)視用戶屬性更改,例如密碼更改、組更改、chuser、rmuser、adduser 和 su 嘗試。而您的配置可能很不一樣。
# cat /etc/security/audit/config        streammode = on        binmode = offbin:  trail = /audit/trail  bin1 = /audit/bin1  bin2 = /audit/bin2  binsize = 25000  cmds = /etc/security/audit/bincmdsstream:        cmds = /etc/security/audit/streamcmdsclasses:        general = File_Write,PASSWORD_Change,USER_Change,USER_Remove,USER_Create,GROUP_Change,GROUP_Create,GROUP_Remove,USER_SU,PASSWORD_Flagsusers:        default = general

可以使用 lsuser 命令查看當前分配給用戶的審計類,您會看到審計類 general 被分配給所有用戶。在 config 文件的 users 部分中,指出了該類是分配給所有用戶的默認類。但是,正如前面提到的,一個用戶可以屬于多個類。
# lsuser -a auditclasses ALLroot auditclasses=generaldaemon auditclasses=generalbin auditclasses=generalsys auditclasses=generaladm auditclasses=generallpd auditclasses=generallp auditclasses=generalinvscout auditclasses=generalsnapp auditclasses=generalipsec auditclasses=generalftp auditclasses=generaldxtans auditclasses=generalukazap auditclasses=generaleuazap auditclasses=generalauazap auditclasses=generalbeazap auditclasses=generallaazap auditclasses=general….…

要想啟動審計子系統(tǒng),請輸入以下命令:
# audit start

要想停止審計子系統(tǒng),請輸入以下命令:
# audit stop

使用以下命令查看當前的設置,包括定義的類及其事件,以及系統(tǒng)上的可用事件和正在監(jiān)視的對象(首先要確認目前正在進行審計):
# audit query

如果重新引導服務器或停止運行審計服務,那么重新啟動系統(tǒng)時會覆蓋 stream.out 審計日志。因此,一定要通過某種機制把當前的 stream.out 內(nèi)容保存并復制到新的文件中(稍后討論這個問題)。要想確保在重新引導系統(tǒng)時重新啟動審計,一定要在/etc/rc.tcpip 文件中添加以下行:
# start audit/usr/sbin/audit start 1>&- 2>&-

如果重新引導服務器,則需要確保通過命令或腳本復制 stream.out 日志文件。這些命令應該放在 /etc/rc.tcpip 文件中審計啟動命令前面,以避免啟動審計時日志文件內(nèi)容被重寫。

審計日志記錄
當審計系統(tǒng)報告事件時,它會報告相關(guān)用戶最初的登錄 ID,而不是此用戶通過用戶 su 得到的 ID。這只適用于本地連接。對于通過 SSH 等遠程連接的用戶,則報告連接時使用的登錄 ID。AIX 審計系統(tǒng)并不知道建立 SSH 連接之前用戶 su 的所作所為。
關(guān)于系統(tǒng)上典型的審計日志文件,參見清單 1;它還顯示了記錄的追蹤部分:

清單 1. stream.out
                                event           login    status      time                     command--------------- -------- ----------- ------------------------ -------------------------------USER_SU         dxtans   OK          Mon Jan 10 19:05:13 2011 su        rootPASSWORD_Change dxtans   OK          Mon Jan 10 19:06:27 2011 passwd        alphaPASSWORD_Flags  dxtans   OK          Mon Jan 10 19:06:33 2011 pwdadm        alpha -cUSER_SU         bravo    FAIL        Mon Jan 10 19:07:01 2011 su        rootGROUP_Change    dxtans   OK          Mon Jan 10 19:07:33 2011 chgroup        admin users=dxtans,charliePASSWORD_Change root     OK          Mon Jan 10 19:08:31 2011 tsm        charlieUSER_SU         charlie  OK          Mon Jan 10 19:08:36 2011 su        rootUSER_Change     charlie  OK          Mon Jan 10 19:08:54 2011 chuser        zulu rlogin=true

仔細看一下清單 1。從前幾行可以看出,用戶 dxtans 通過用戶 su 變成了 root 用戶。然后,他更改了用戶 alpha 的密碼和 pwdadm 標志。因為我們讓審計系統(tǒng)輸出記錄的剩余部分,現(xiàn)在可以看到傳遞給 pwdadm 的命令選項是 'alpha -c'。如果不輸出記錄的剩余部分,就沒有這些信息。用戶 bravo 也試圖通過用戶 su 變成 root 用戶,但是失敗了。這可能是因為用戶 bravo 不知道密碼,或者由于不屬于 root 用戶的子組而沒有得到授權(quán)。在這個示例中,用戶 bravo 沒有得到訪問 root 用戶的授權(quán),因此這個操作是違規(guī)的。
注意,當輸出記錄的追蹤部分時,可在單獨的行上輸出這部分。在生成報告時,必須把記錄的這兩個部分連接起來,讓輸出符合報告的格式要求。這會讓報告以列的形式呈現(xiàn),awk 可以從這些列中提取信息。

準備生成報告
要想生成報告,第一個任務是取得 stream.out 的拷貝。在查看 stream.out 文件時您會發(fā)現(xiàn),對于某個文件執(zhí)行寫操作時,可能有多個條目。在記錄對 /etc/sudoers 文件的寫操作時,尤其可能出現(xiàn)這種情況。因此,一定要通過 uniq 處理文件,去掉重復的條目。然后,使用 sed 將記錄的兩個部分合并到同一行上,并且還需要生成報告的標題。
下面的代碼實現(xiàn)了上述目標。假設 stream.out 文件被解析為第一個參數(shù) ($1) ,產(chǎn)生的輸出重定向到 holdf 文件:
cat $1 | uniq > holdfmv holdf $1sed '1i\'$host' P-Series Audit Report on User Account Changes/command/a\ ---------------------------------------------------------$!N;s/\n/ /# pull in the last columns/                                 //g' $1 >holdf

日志的內(nèi)容包含以下列格式:
  • 第 1 列是實際的事件,例如 USER_Change。
  • 第 2 列是用戶的登錄 ID。
  • 第 3 列是執(zhí)行的命令的退出狀態(tài),值是 OK 或 FAIL。
  • 第 4-8 列是事件的日期/時間,比如 Tue Jan 11 11:42:02 2011。
  • 第 9 列是執(zhí)行的命令,例如 chuser。
  • 第 10 列是傳遞給此命令的所有其他信息,也就是記錄尾部包含的信息,通常是傳遞的參數(shù)。
現(xiàn)在,我們可以提取日常審計報告需要的信息,只提取與自己的審計安全策略有關(guān)的信息。例如,監(jiān)視未授權(quán)的賬號切換,或者更改尚未通過事件票據(jù) (incident ticket) 或系統(tǒng)更改請求進行授權(quán)的用戶賬戶屬性。
注意,您可能不關(guān)心系統(tǒng)管理員通過用戶 su 得到的賬號,因為這可能是正常的管理工作。您可能不關(guān)心用戶是否更改了自己的密碼,但是當然可以要求由 root 用戶更改密碼,無論用戶 ID 是什么。完成信息提取之后,可以通過電子郵件把生成的報告發(fā)送給管理經(jīng)理或系統(tǒng)管理員,讓他們通過事件票據(jù)或更改請求來審查和證明該報告。
我發(fā)現(xiàn),對于希望滿足的每個條件,使用單獨的 awk 語句更便于管理。這樣更容易修改關(guān)于提取什么信息的規(guī)則或模式,尤其是當您不在時,可方便其他系統(tǒng)管理員修改規(guī)則。通過在 awk 語句中使用 NOT 操作符,可以指定不應該提取哪些記錄。然后,通過 AND 關(guān)系將腳本中包含的所有 awk 語句連接起來。例如,為了排除用戶由于失誤試圖通過 su 變成本身的事件,可以使用:
!($1 =="USER_SU" && $2 ==$10)

為了不包含 root 用戶(他通過用戶 su 將用戶 ID 變成了 poppy),我們可以使用:
!($1=="USER_SU" && $2=="root" && $9=="su" && $10=="poppy"

為了忽略用戶修改自己的密碼的事件,可以使用:
!($1=="ASSWORD_Change" && $2 == $10)

通過 AND 關(guān)系將這些語句(和其他 awk 語句)連接起來,結(jié)果只產(chǎn)生了我們希望排除的記錄。例如:
awk '!($1 =="USER_SU" && $2 ==$10 &&!($1=="USER_SU" && $2=="root" && $9=="su" && $10=="poppy" &&!($1=="ASSWORD_Change" && $2 == $10) &&...more awk statements......

如果不關(guān)心任何用戶是否通過 su 變成另一個用戶,那么可以排除這些事件。例如,假設用戶 genrep1 是共用的用戶 ID,報告中不需要這些事件,則可以使用以下代碼排除這些事件:
!($1=="USER_SU" && $10=="genrep1"

如果想基于模式搜索來忽略整個記錄,則可以使用以下搜索語句:
/ <pattern>/

要忽略包含字符串 'xnpd' 的所有記錄,可以使用以下 awk 語句:
!/xntpd/

選出不希望每天報告的記錄或事件之后,可使用 awk END 塊語句輸出 "end of report"。要篩選 holdf 文件中的事件,可以使用以下語句:
awk '!($1 =="USER_SU" && $2 ==$10) &&!($1=="USER_SU" && $2=="root" && $9=="su" && $10=="poppy" &&!($1=="ASSWORD_Change" && $2 == $10) END {print "\t\t\t\t--- end of report ---"}' holdf

生成報告之后,可以通過電子郵件將報告發(fā)送給系統(tǒng)管理員或經(jīng)理審查。
清單 2 給出一個腳本以及審計日志 stream.out 文件中可以忽略的事件。清單中包含的模式規(guī)則只作為演示示例。清單 2 包含的 awk 語句演示了如何對 stream.out 文件應用 awk 模式,可以根據(jù)自己的需要改進和定制它。生成報告之后,可通過電子郵件將它發(fā)送到郵件列表 rs6admins。

清單 2. auditfilter
                                #!/bin/sh# auditfilterif [ $# != 1 ] then  echo "`basename $0` <audit_log>"  exit 1fi if [ ! -f $1 ]  then   echo "file does not exist"   exit 1 fiholdf=/tmp/holdfhost=$(hostname)# extract the date part of the filename for the reportreport=$(basename $1)# filename ie: audit0118.logdate_rep=$(echo $report | sed -e 's/audit//g' -e 's/.log//g')mth=$(echo $date_rep | cut -c 1,2)day=$(echo $date_rep | cut -c 3,4)datex="$day / $mth"# email list herelist="rs6admins "mailit2(){sendmail -t <<maydayTolistSubject:audit report on $hostContent-Type: text/htmlContent-Transfer-Encoding: 7bit<body><body bgcolor="#C0C0C0">Generated: `date`<br>Date of Audit : $datex<hr><br><pre>$(cat $1)</pre></body>mayday}cat $1 | uniq > $holdfmv $holdf $1# do header and join linessed '1i\                   '$host' P-Series Audit Report on User Account Changes/command/a\                   ---------------------------------------------------------$!N;s/\n/ /# get rid of the ** lines/-*//g# pull in the last column, these are spaces - adjust as required in seds/                   //g' $1 >$holdf# filter outawk '!($1 =="USER_SU" && $2 ==$10) &&!($1=="USER_SU" && $2=="root" && $9=="su" && $10=="poppy" &&!($1=="ASSWORD_Change" && $2 == $10) &&!($1=="USER_SU" && $10=="operator" &&!($1=="USER_SU" && $10=="genrep1" &&!/xntpd/END {print "\t\t\t\t--- end of report ---"}' $holdf >$1.rep# cat $1.repmailit2 $1.rep

清單 3 調(diào)用 auditfilter 腳本。auditfilter 腳本執(zhí)行完之后,生成兩個文件。一個包含格式化的審計報告,其文件名采用以下格式:
audit<month><day>.log.rep  

另一個是當前 stream.out 文件的拷貝,其文件名采用以下格式:
audit<month><day>.log


清單 3. auditroll
                                #!/bin/sh# auditrollOUTFILE=/audit/audit`date +%m%d`.log## Shut down auditing/usr/sbin/audit shutdownsleep 3## Move contents of capture filemv /audit/stream.out $OUTFILE## Restart auditing/usr/sbin/audit start## Kill off processes using the audit filefuser -k $OUTFILE## Filter contents of audit file/audit/auditfilter $OUTFILE

仔細看一下清單 3,它使用 date 命令作為已復制的 stream.out 文件的文件名的一部分來指定新文件名。然后關(guān)閉審計,將 stream.out 文件轉(zhuǎn)移到新的文件 (OUTFILE),以生成新的審計報告文件。隨后,重新啟動審計;為這些天的審計活動創(chuàng)建一個新的 stream.out 文件。為了保證安全性,確保關(guān)閉審計之后沒有任何針對 OUTFILE 運行的進程,可以使用 fuser 終止這些進程。
在執(zhí)行 auditfilter 腳本時,它在與圖 1 相似的電子郵件中生成格式化的報告。

圖 1. 審計報告

可以在每個工作日執(zhí)行 auditroll 腳本,生成關(guān)于前幾天的審計活動的報告。

結(jié)束語
按照我的觀點,在 AIX 上使用審計是必須做的工作?梢酝ㄟ^審計工作監(jiān)視系統(tǒng)上與安全相關(guān)的事件。在企業(yè)環(huán)境中收集審計報告時,我建議最好將所有報告都整理為一個電子郵件以便審查。

關(guān)于作者
David Tansley 是一位自由作家。他有 15 年 UNIX 系統(tǒng)管理經(jīng)驗,最近 8 年使用 AIX。他喜歡打羽毛球和觀賞一級方程式賽車,但是最喜歡與妻子一起開著 GSA 摩托車旅行。




http://www.ibm.com/developerworks/cn/aix/library/au-audit_filter/index.html

您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術(shù)有限公司. 版權(quán)所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關(guān)心和支持過ChinaUnix的朋友們 轉(zhuǎn)載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP