var目錄
/var 包括系統運行時要改變的數據。其中包括每個系統是特定的,即不能夠與其他計算機共享的目錄,如/var/log,/var/lock,/var/run。有些目錄還是可以與其他系統共享,如/var/mail, /var/cache/man, /var/cache/fonts,/var/spool/news。var目錄存在的目的是把usr目錄在運行過程中需要更改的文件或者臨時生成的文件及目錄提取出來,由此可以使usr目錄掛載為只讀的方式。隱含要求var目錄必須掛載為可以讀寫的方式。
通過對於該目錄的分析注意如下的需要
1) 各個目錄存在的目的以及作用。
2) 通過目錄中的信息能夠獲得什么信息,如何對於該信息進行訪問。
3) 對於目錄中的文件操作是否安全。
/var/account/pact
目的:該目錄保存系統中使用的進程記錄。當一個進程終止時,把每個進程向統計文件(pacct或acct)中寫一個紀錄。進程統計的目的是為系統中的基本服務提供命令使用統計。該文件可以通過數據的工具(sa,ac)進行分析。
使用:進程統計子系統缺省不激活,它必須啟動。在Linux系統中啟動進程統計使用accton命令,必須 用root身份來運行。accton命令的形式accton file,file必須先存在。如果不存在則先使用touch命令來創建pacct文件:touch /var/log/pacct,然后運行accton: accton /var/account/pacct。一旦accton被激活,就可以使用lastcomm命令監測系統中任何時候執行的命令。若要關閉統計,可以使用不帶任何參數的accton命令。
pact文件不可用cat直接讀取其中的內容。
注意:該文件會大量增長,需要注意維護(刪除,轉儲)
/var/crash
目的:系統崩潰時轉儲的文件,可以通過該文件分析down機的原因。
使用: crash工具對於該目錄中的文件進行分析。參考文檔linux-2.6.20.6/Documentation/kdump/kdump.txt
crash -S /boot/System.map-2.6.18-53.el5PAE /boot/vmlinuz-2.6.18-53.el5PAE /var/crash/xxxx
/var/cache
目的:存放應用程序的緩存數據,保存在該目錄中的數據應用程序可以再生成,所以該目錄中的數據丟失后不會影響系統。
/var/empty
/var/games
/var/lib
該目錄保存系統或者某個應用程序運行過程中的狀態信息。用戶不允許更改該目錄下的文件。
/var/mail
郵件存儲文件的目錄,在CGS中鏈接到/var/spool/mail。在fhs文檔中明確提出把它從/var/spool/mail提取出來以便於多主機多個應用程序共同使用。
/var/opt
add-on application在該目錄下存放變量,在/opt下存放靜態變量。
/var/tmp
應用程序產生的臨時文件,可以定時整理。/usr/tmp -> ../var/tmp。
/var/lock
許多程序遵循在/var/lock 中產生一個鎖定文件的約定,以支持他們正在使用某個特定的設備或文件。其他程序注意到這個鎖定文件,將不試圖使用這個設備或文件。注意該目錄不可以隨便更改。
/var/run
保存着自系統啟動后的在該系統中正在運行的進程pid號,並非所有的進程都在該目錄下存在pid文件。每個pid文件的作用與其應用程序相關,基本的作用就是標志該進程已經運行,且標志出該進程的pid號。在/var/run/subsys/目錄中有對應的文件。當系統啟動后不用刪除其中的文件,系統啟動后會清除該目錄中的文件。/var/run/utmp是一個二進制文件,記錄當前登錄系統的用戶信息。可用如who、w、users、finger命令顯示當中的內容。該日志文件並不能包括所有精確的信息,因為某些突發錯誤會終止用戶登錄會話,而系統沒有及時更新utmp記錄,因此該日志文件的記錄不是百分之百值得信賴的。
/etc/init.d/sendmail文件對於/var/run和/var/lock/subsys目錄中的文件的有使用事例
/var/spool
保存某些需要后續進程繼續處理的數據。當進程處理完成保存的數據文件后,會把該文件刪除。該目錄中的數據不要人工進行刪除。
查找給目錄中各個子目錄的歸屬方法(以目錄/var/spool/voice為例):
[root@localhost spool]# rpm -qf /var/spool/voice
mgetty-voice-1.1.33-9.fc6
由此可以找出/var/spool/voice目錄與mgetty-voice包相關,從而可以使用如下命令來分析mgetty-voice包的命令及其作用。
/var/local
存放/usr/local 中安裝的程序的可變數據(即系統管理員安裝的程序)。
/var/preserve
編輯器存放的臨時文件
/var/log
/var/log/boot.log
該文件記錄了系統在引導過程中發生的事件,就是Linux系統開機自檢過程顯示的信息。Redhat決定淘汰對initlog的使用,所以在/etc/init.d/functions中將所有調用initlog的命令給注釋起來了,由此該文件為空。
/var/log/cron
該日志文件記錄crontab守護進程crond所派生的子進程的動作。格式如下:
Aug 17 07:40:01 localhost crond[9434]: (root) CMD (/usr/lib/sa/sa1 1 1)
/var/log/maillog
該日志文件記錄了每一個發送到系統或從系統發出的電子郵件的活動。它可以用來查看用戶使用哪個系統發送工具或把數據發送到哪個系統。
/var/log/syslog
默認RedHatLinux不生成該日志文件,但可以配置/etc/syslog.conf讓系統生成該日志文件。它和/etc/log/messages日志文件不同,它只記錄警告信息,常常是系統出問題的信息,所以更應該關注該文件。要讓系統生成該日志文件,在/etc/syslog.conf文件中加上:*.warning /var/log/syslog該日志文件能記錄當用戶登錄時login記錄下的錯誤口令、Sendmail的問題、su命令執行失敗等信息。
/var/log/lastlog
該日志文件記錄最近成功登錄的事件和最后一次不成功的登錄事件,由login生成。在每次用戶登錄時被查詢,該文件是二進制文件,需要使用lastlog命令查看,根據UID排序顯示登錄名、端口號和上次登錄時間。如果某用戶從來沒有登錄過,就顯示為"**Neverloggedin**"。該命令只能以root權限執行。
/var/log/wtmp
該日志文件永久記錄每個用戶登錄、注銷及系統的啟動、停機的事件。因此隨着系統正常運行時間的增加,該文件的大小也會越來越大,增加的速度取決於系統用戶登錄的次數。該日志文件可以用來查看用戶的登錄記錄,last命令就通過訪問這個文件獲得這些信息,並以反序從后向前顯示用戶的登錄記錄,last也能根據用戶、終端tty或時間顯示相應的記錄。
/var/run/utmp 見/var/run目錄
以上提及的3個文件(/var/log/wtmp、/var/run/utmp、/var/log/lastlog)是日志子系統的關鍵文件,都記錄了用戶登錄的情況。這些文件的所有記錄都包含了時間戳。這些文件是按二進制保存的,故不能用less、cat之類的命令直接查看這些文件,而是需要使用相關命令通過這些文件而查看。
/var/log/xferlog
該日志文件記錄FTP會話,可以顯示出用戶向FTP服務器或從服務器拷貝了什么文件。該文件會顯示用戶拷貝到服務器上的用來入侵服務器的惡意程序,以及該用戶拷貝了哪些文件供他使用。
該文件的格式為:第一個域是日期和時間,第二個域是下載文件所花費的秒數、遠程系統名稱、文件大小、本地路徑名、傳輸類型(a:ASCII,b:二進制)、與壓縮相關的標志或tar,或"_"(如果沒有壓縮的話)、傳輸方向(相對於服務器而言:i代表進,o代表出)、訪問模式(a:匿名,g:輸入口令,r:真實用戶)、用戶名、服務名(通常是ftp)、認證方法(l:RFC931,或0),認證用戶的ID或"*"。
/var/log/Xfree86.x.log
該日志文件記錄了X-Window啟動的情況。
sysklogd
syslogd可以簡單地被稱為記錄系統活動的一個daemons。比如可以記錄誰,在什么時間,在哪里,做了什么事情;也可以記錄系統曾經發生過什么事情,比如什么時候重新引導過、軟硬件的錯誤信息等;當然也記錄着您系統上運行着的服務的信息。通常,syslog 接受來自系統的各種功能的信息,每個信息都包括重要級。/etc/syslog.conf 文件決定 syslogd 如何根據設備和信息重要級別來報告信息。
/usr/include/sys/syslog.h
處理流程
/etc/syslog.conf
/etc/syslog.conf 文件使用下面的形式
facility.level action
空白行和以#開頭的行可以忽略。Facility.level 字段也被稱做 seletor。應該使用一次或多次 tab 鍵分隔 facility 和 action。大部分 Linux 使用這些空格為分隔符。
facility
facility 指定 syslog 功能,主要包括以下這些:
auth 認證系統,如login或su,即詢問用戶名和口令
cron 系統執行定時任務時發出的信息
daemon 某些系統的守護程序的 syslog,如由in.ftpd產生的log
kern 內核的信息
lpr 打印機的信息
mail 處理郵件的守護進程發出的信息
mark 定時發送消息的時標程序
news 新聞組的守護進程的信息
user 本地用戶的應用程序的信息
uucp uucp子系統的信息
local0----local7 與自定義程序使用,例如使用 local5 做為 ssh 功能
* 表示所有可能的信息來源
level
與每個功能對應的優先級是按一定順序排列的,emerg 是最高級,其次是 alert,依次類推。缺省時,在 /etc/syslog.conf 記錄中指定的級別為該級別和更高級別。如果希望使用確定的級別可以使用兩個運算符號!(不等)和=。
user.=info
表示告知 syslog 接受所有在 info 級別上的 user 功能信息。
syslog 級別如下:
emerg 或 panic 該系統不可用
alert 需要立即被修改的條件
crit 阻止某些工具或子系統功能實現的錯誤條件
err 阻止工具或某些子系統部分功能實現的錯誤條件
warning 預警信息
notice 具有重要性的普通條件
info 提供信息的消息
debug 不包含函數條件或問題的其他信息
none 沒有重要級,通常用於排錯
* 所有級別,除了none
action
action字段所表示的活動具有許多靈活性,特別是,可以使用名稱管道的作用是可以使 syslogd 生成后處理信息。
syslog 主要支持以下活動
file 指定文件的絕對路徑
terminal 或 print 完全的串行或並行設備標志符
@host 遠程的日志服務器
username 發送信息到使用 write 的指定用戶中
named pipe 指定使用 mkfifo 命令來創建的 FIFO 文件的絕對路徑。
由於 syslogd 在系統非常繁忙時,可能會丟失信息,所以,可以用 cyclog 替換 syslog。
logrotate
rpm -ql logrotate
man logrotate
/etc/logrotate.conf
[root@localhost log]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
運行時機:
[root@localhost log]# rpm -ql logrotate
/etc/cron.daily/logrotate
/etc/logrotate.conf
/etc/logrotate.d
/usr/sbin/logrotate
/usr/share/doc/logrotate-3.7.4
/usr/share/doc/logrotate-3.7.4/CHANGES
/usr/share/man/man8/logrotate.8.gz
/var/lib/logrotate.status
/etc/logrotate.d/
[root@localhost log]# cat /etc/logrotate.d/yum
/var/log/yum.log {
missingok
notifempty
size 30k
create 0600 root root
}
[root@localhost log]# rpm -qf /etc/logrotate.d/yum
yum-3.0.5-1.el5.centos.5
參考文檔《Filesystem Hierarchy Standard》
http://www.ibm.com/developerworks/cn/linux/security/l-ossec/part1/
http://www.ibm.com/developerworks/cn/linux/security/l-ossec/part2/index.html
http://www.ibm.com/developerworks/cn/linux/security/l-ossec/part3/