Linux是一個多使用者系統,是以對使用者的管理是系統管理的基本組成部分。安裝Linux的使用者很可能就是該系統的管理者,也就是權限最高的root。通過對使用者的管理,厘清了使用者之間的責、權、利,保證了系統安全。下面介紹一下同使用者管理關系密切的幾個配置檔案。
<b>1. /etc/passwd</b><b>檔案</b>
用“ls -l”指令可以看到該檔案屬主是root使用者,隻有root使用者能對該檔案進行寫操作,其它使用者隻能進行讀的操作。
/etc/passwd檔案當中以行為機關,每行是一個記錄儲存一個使用者的資訊,參數之間用冒号隔開,用cat可以檢視其内容。
# cat /etc/passwd
at:x:25:25:Batch jobs daemon:/var/spool/atjobs:/bin/false
bin:x:1:1:bin:/bin:/bin/false
daemon:x:2:2:Daemon:/sbin:/bin/false
ftp:x:40:49:FTP account:/srv/ftp:/bin/false
games:x:12:100:Games account:/var/games:/bin/bash
haldaemon:x:101:102:User for haldaemon:/var/run/hald:/bin/false
lp:x:4:7:Printing daemon:/var/spool/lpd:/bin/false
mail:x:8:12:Mailer daemon:/var/spool/clientmqueue:/bin/false
man:x:13:62:Manual pages viewer:/var/cache/man:/bin/false
messagebus:x:100:101:User for D-Bus:/var/run/dbus:/bin/false
news:x:9:13:News system:/etc/news:/bin/false
nobody:x:65534:65533:nobody:/var/lib/nobody:/bin/false
ntp:x:74:105:NTP daemon:/var/lib/ntp:/bin/false
....................
上面代碼
1 第一列是使用者名;
2 第二列是使用者的密碼;
3 第三列是使用者的數字ID,即使用者的UID;
4 第四列是使用者的主組的ID,即使用者的GID;
5 第五列是使用者的全名,或者是注釋;
6 第六列是使用者主目錄的位置,這個目錄通常位于/home目錄下, 目錄名與使用者ID 相同;第七列是使用者的預設控制台Shell。
注意,在上面的檔案當中,所有使用者的Password列是一個“x”,但這并不是說使用者的密碼是x 。這是因為早期的Unix系統密碼是以一個強度比較弱的加密手段将密碼加密後,以文本的形式存儲在這個檔案中。現在已經很少有人再這樣做了。Linux系統采取的解決的方法是,在/etc/passwd檔案中存放密碼的位置隻是存放一個“x”,而經過加密的密碼存放于/etc/shadow檔案中。這項技術通過将使用者資訊與密碼資料分離而提高了安全性。并且采用了強度更高的加密算法來儲存密碼。一個映像密碼條目的樣例如下所示:
# cat /etc/shadow
at:*:14904:0:90:7:::
bin:*:14749::90::::
daemon:*:14749::90::::
ftp:*:14749::90::::
games:*:14749::90::::
haldaemon:*:14749:0:90:7:::
lp:*:14749::90::::
mail:*:14749::90::::
man:*:14749::90::::
messagebus:*:14749:0:90:7:::
news:*:14749::90::::
nobody:*:14749::90::::
ntp:*:14904:0:90:7:::
.......
<b>2./etc/shadow </b><b>檔案</b>
/etc/shadow的格式與/etc/passwd類似,由若幹個字段組成,字段之間用“:” 隔開,這些字段格式如下:登入名:加密密碼:最後一次修改時間:最小時間間隔:最大時間間隔:警告時間;不活動時間:失效時間:标志每個字段含義如下:
1登入名是與/etc/passwd檔案中的登入名相一緻的使用者賬号。
2 密碼字段存放的是加密後的使用者密碼字。如果為空,則對應使用者沒有密碼,登入時不需要密碼;
3 最後一次修改時間表示的是從某個時刻起,到使用者最後一次修改密碼時的天數。時間起點對不同的系統可能不一樣。
4 最小時間間隔指的是兩次修改密碼之間所需的最小天數。
5 最大時間間隔指的是密碼保持有效的最大天數。
6警告時間字段表示的是從系統開始警告使用者到使用者密碼正式失效之間的天數。
7 不活動時間表示的是使用者沒有登入活動但賬号仍能保持有效的最大天數。
8 失效時間字段給出的是一個絕對的天數,如果使用了這個字段,那麼就給出相應賬号的生存期。期滿後,該賬号就不再是一個合法的賬号,也就不能再用來登入了。
<b>3</b><b>.系統稽核</b>
Linux的日志檔案用來記錄整個作業系統使用狀況,他們是黑客攻擊的重點目标,是以作為一個Linux網絡系統管理者要充分用好以下幾個日志檔案。
◆ /var/log/lastlog檔案
記錄最後進入系統的使用者資訊,包括登入的時間、登入是否成功等資訊。這樣使用者登入後隻要用lastlog指令檢視一下/var/log/lastlog檔案中記錄的所用賬号的最後登入時間,再與自己的用機記錄對比一下就可以發現該賬号是否被黑客盜用。
可以用以下指令檢視其空間占用情況
#du -h /var/log/lastlog
有時候需要清空,使用以下指令
#cat /dev/null >; /var/log/lastlog
◆ /var/log/secure檔案
記錄系統自開通以來所有使用者的登入時間和地點,可以給系統管理者提供更多的參考。
◆ /var/log/wtmp檔案
記錄目前和曆史上登入到系統的使用者的登入時間、地點和登出時間等資訊。用last指令可以檢視,若想清除系統登入資訊,隻需删除這個檔案,系統會生成新的登入資訊。
用以下指令檢視
#last -f /var/log/wtmp
以上幾個檔案都是由系統的klogd和syslogd守護程序程序記錄的。通常klogd用來記錄系統核心所産生的日志資訊,也就是工作在系統核心态的程序所産生的日子記錄; 而syslogd用來記錄工作在使用者态的程序的日志資訊,這些程式包括使用者程序、網絡伺服器程序和多數的系統守護程序。是以,對于管理人員而言,通過及時檢查syslogd記錄的資訊能夠發現絕大多數的系統異常情況。
下面介紹一下syslogd程序的記錄格式和配置方法。syslogd負責發送、記錄系統核心及工具所産生的資訊。整個機制由系統調用syslog()、系統守護程序syslogd,以及配置檔案/etc/syslog.conf共同組成。當系統核心及工具産生資訊時,通過調用syslog(),把資訊送往syslogd,它再根據/etc/syslog.conf中的配置要求,、将這些資訊分别做如下處理:
1 記錄到系統日志中;
2 輸出到系統控制台上;
3 轉發給指定的使用者;
4 通過網絡轉發給其它主機上的syslogd。
通過配置syslog.conf,可以靈活地對資訊的發送和儲存進行控制。
sys1ogd程序在系統啟動時由/etc/rc.d/rc2.d/S12syslog
啟動。如果需要手工啟動或停止syslogd,可以使用下面指令:
# /etc/rc.d/init.d/syslog start | stop
# cat /etc/syslog.conf
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
# The authpriv file has restricted access.
authpriv.* /var/log/secure
# Log all the mail messages in one place.
mail.* /var/log/maillog
# Log cron stuff
cron.* /var/log/cron
# Everybody gets emergency messages
*.emerg *
# Save news errors of level crit and higher in a special file.
uucp,news.crit /var/log/spooler
# Save boot messages also to boot.log
local7.* /var/log/boot.log
/etc/syslog.conf檔案中的一項配置記錄由“選項”(Selector)和“動作”(Action)兩個部分組成,兩者間用Tab制表符進行分隔。而“選項” 又由一個或多個形如“類型.級别”格式的保留字段組合而成,各保留字段問用分号分隔。
保留字段中的“類型” 代表資訊産生的源頭,可以是如下字段:
kern 由Kernel産生的資訊。
user 由使用者程序産生的資訊,對那些由程式或不在此列出的工具産生的資訊,其預設類型都是“user”。
mail 郵件系統産生的資訊。
daemon 系統守護程序的資訊,如in.ftpd、telnetd。
auth 由login、su、getty等進行身份認證時産生的資訊
syslog 由syslogd内部産生的資訊。
lpr 行列印spooling系統的資訊。
news USENET網絡新聞系統的資訊。
uucp UUCP系統資訊。
cron 和at工具資訊。
local 0-7 保留為local使用。
mark syslogd 内部産生的時間戳資訊。
* 為通配符,表示除mark之外的所有其它類型(此符号不可用以代表所有級别)。
保留字段中的“級别” 代表資訊的重要性,可以是下面字段:
emerg 緊急,處于Panic狀态,通常應廣播到所有使用者。
alert 告警,目前狀态必須立即進行糾正,例如系統資料庫崩潰。
crit 關鍵狀态的警告。
err 表示其它錯誤。
warning 警告。
notice 非錯誤狀态的報告,但應特别處理。
info 通報資訊。
debug 調試程式時的資訊。
none 通常調試程式時用,訓示帶有none級别的類型産生的資訊無需送出,例如“*.debug;mail.none”表示調試時除郵件信
息外其它資訊都送出。
“動作”域訓示資訊發送的目的地,可以是如下參數:
/filename 日志檔案,由絕對路徑指出的檔案名,此檔案必須事先建立。
@host 遠端主機。
userl,user2 指定使用者,如果指定使用者已登入,那麼他們将收到資訊。
* 表示所有使用者, 已登入的使用者都将收到資訊。
下面來看一看Linux下的一個執行個體/etc/syslog.conf檔案:
..............
*.err;kern.debug;daemon.notece;mail.crit /var/adm/messages
上面這行中的“action”就是大家關心的/var/adm/messages檔案,輸出到它的資訊源頭“selector”為*.err表
示所有的一般錯誤資訊;kern.debug 表示核心産生的調試資訊;daemon.notice表示守護程序的注意資訊;mail.crit表示郵件系統的關鍵警告資訊。
了解了syslog.conf格式之後,再來看/var/adm/messages中所記錄的日志資訊:
.....
Nov l4 l 8:59:05 host sshd(pam_unix)[2l9l3]:authentication failure ; logname= uid=0 euid=0
tty=NODEVssh ruser= rhost=202.21.60.5 user=root
Aug 25 1:13:01 host syslogd 1.5.1: restart.
由上可以看到每行記錄都按照日期、時間、主機名、程序名、程序的PID,以及來自該程序的消息中間用空格分割。兩條記錄分别記錄了一次失敗的root登入和一次syslogd程序的重起。系統會使用newsyslog定期檢查syslog輸出的messages 檔案和maillog檔案,将舊資料壓縮儲存為備份檔案。