1. 程式人生 > >Linux系統的LOG日誌檔案及入侵後日志的清除

Linux系統的LOG日誌檔案及入侵後日志的清除

UNIX網管員主要是靠系統的LOG,來獲得入侵的痕跡.當然也有第三方工具記錄入侵系統的 痕跡,UNIX系統存放LOG檔案,普通位置如下:

/usr/adm - 早期版本的UNIX
/var/adm - 新一點的版本使用這個位置
/var/log - 一些版本的Solaris,linux BSD,Free BSD使用這個位置
/etc - 多數UNIX版本把utmp放在這裡,有些也把wtmp放在這裡,syslog.conf在這裡

下面的一些檔案根據你所在的目錄不同而不同:
acct 或 pacct -- 記錄每個使用者使用的命令記錄
access_log -- 主要當伺服器執行NCSA HTTPD時, 記錄什麼站點連線過你的伺服器
aculog -- 儲存著你撥出去的MODEMS記錄
lastlog -- 記錄了使用者最近的LOGIN記錄和每個使用者的最初目的地,有時是最後不
成功LOGIN的記錄,當一個使用者登陸到unix系統,註冊程式在lastlog檔案中查詢該使用者的uid,如果該程式找到了

該使用者的uid,unix就會顯示最後一次登陸的時間和tty(終端號)
loginlog -- 記錄一些不正常的LOGIN記錄
messages -- 記錄輸出到系統控制檯的記錄,另外的資訊由syslog來生成
security -- 記錄一些使用UUCP系統企圖進入限制範圍的事例
sulog -- 記錄使用su命令的記錄.它通常在/var/adm/sulog.如果你在機器上使用了su命令,別忘了清除哦.
utmp -- 記錄當前登入到系統中的所有使用者, 這個檔案伴隨著使用者進入和離開系統而不斷變化.它還會為系統中的使用者保持很長的歷史記錄,utmp日誌通常存放在/var/adm/utmp目錄下.可以用w和who命令檢視,其他命令也可以訪問這個檔案.如:finger root就可以.現在的utmp一般都有utmpx檔案作為日誌記錄的補充.
utmpx -- UTMP的擴充套件
wtmp -- 記錄使用者登入和退出事件.它和utmp日誌檔案相似,但它隨著登陸次數的增加,它會變的越來越大,有些系統的ftp訪問也在這個檔案裡記錄,同時它也記錄正常的系統退出時間,可以用ac和last命令訪問.
syslog -- 最重要的日誌檔案,使用syslogd守護程式來獲得日誌資訊,通常情況下通過檢視/etc/syslog.conf.我們可以知道syslog記錄些什麼.預設時,它把大多的訊息傳給/var/adm/message.
/dev/log -- 一個UNIX域套接字,接受在本地機器上執行的程序所產生的訊息
/dev/klog -- 一個從UNIX核心接受訊息的裝置
514埠 -- 一個INTERNET套接字,接受其他機器通過UDP產生的syslog訊息。
uucp -- 記錄的UUCP的資訊,可以被本地UUCP活動更新, 也可有遠端站點發起
的動作修改,資訊包括髮出和接受的呼叫,發出的請求,傳送者, 發
送時間和傳送主機
lpd-errs -- 處理印表機故障資訊的日誌
ftp日誌 -- 執行帶-l選項的ftpd能夠獲得記錄功能
httpd日誌 -- HTTPD伺服器在日誌中記錄每一個WEB訪問記錄
history日誌 -- 這個檔案儲存了使用者最近輸入命令的記錄
vold.log -- 記錄使用外接媒介時遇到的錯誤記錄

======================
其他型別的日誌檔案-
======================
有些型別的LOG檔案沒有特定的標題,但開始於一個特定的標誌, 你可以在前面頭髮現如
下的標誌,這就一般表示此是個LOG日誌檔案,你就可以編輯它了:
xfer -- 表明試圖一個禁止的檔案傳輸.
rexe -- 表明試圖執行一個不允許的命令
還有許多其他其他型別的LOG檔案存在,主要是第三方軟體引起的, 或者甚至他媽的網管
自己有設定了一隻"眼睛"在他的系統上,所以你要對你認為可能是LOG檔案的檔案多一份心眼。
許多管理員喜歡把日誌檔案放在同一個目錄中以便管理, 所以你要檢查你發現的LOG檔案所在
的目錄中,是否有其他日誌檔案放在這裡,如果有,咯,你知道怎麼做。
另一個你要注意的是有關LOG使用者MAIL的檔案,此檔名可以多種多樣,或則有時是
syslog檔案的一部分。你要知道syslog記錄那些資訊, 你可以檢視syslog.conf中的資訊此文
件的目錄是在/etc中


一般我們都是檢視syslog.conf檔案來檢視日誌的配置情況.例如:cat /etc/syslog.conf

其中sunos作業系統的在/var/log和/var/adm下,還有/usr/adm/var/adm的的連結.

redhat的在/var/log /var/run

下面的是sun os5.7中的日誌樣本. 此外,各種shell還會記錄使用者使用的命令歷史,它使用使用者主目錄下的檔案來記錄這些命令歷史,通常這個檔案的名字為.sh_history(ksh),.history(csh),或.bash_history(bash)等。 

# ls /var/adm  acct    log      messages.1    passwd    sulog   vold.log  aculog   messages   messages.2    sa      utmp    wtmp  lastlog   messages.0  messages.3    spellhist   utmpx   wtmpx  # ls /var/log  authlog      syslog    syslog.1   syslog.3 

sysidconfig.log

syslog.0 syslog.2 syslog.4

下面的是redhat9.0中的日誌樣本.  # ls /var/log  boot.log   dmesg       messages.2    secure     uucp  boot.log.1  htmlaccess.log  messages.3    secure.1    wtmp  boot.log.2  httpd       messages.4    secure.2    wtmp.1  boot.log.3  lastlog      netconf.log   secure.3    xferlog  boot.log.4  mailllog      netconf.log.1  secure.4    xferlog.1  cron     maillog      netconf.log.2  sendmail.st   xferlog.2  cron.1    maillog.1     netconf.log.3  spooler     xferlog.3  cron.2    maillog.2     netconf.log.4  spooler.1    xferlog.4  cron.3    maillog.3     news       spooler.2  cron.4    maillog.4     normal.log    spooler.3  daily.log   messages     realtime.log   spooler.4  daily.sh   messages.1     samba       transfer.log  # ls /var/run  atd.pid    gpm.pid    klogd.pid   random-seed    treemenu.cache  crond.pid   identd.pid   netreport   runlevel.dir   utmp 

ftp.pids-allinetd.pid news syslogd.pid

一般我們要清除的日誌有 

lastlog  utmp(utmpx)  wtmp(wtmpx)  messages  syslog  sulog 一般把以上說的日誌給擦一下,就可以了.:) 下面我來說說上面這些我們要清除的日誌的相關資料和清除方法.更詳細的資料和其他的日誌請你檢視相關資料. 上面已經對日誌的功能做了簡單陳述,那麼這些日誌檔案到底記錄的是什麼呢?follow me 下面是一個例子:  SunOS 5.7  login: gao  Password:  No directory! Logging in with home=/  Last login: Sun Feb 4 22:18:25 from 219.31.36.7 Sun Microsystems Inc. SunOS 5.7 Generic October 1998 $  然後註冊程式用新的登陸時間和TTY資訊更新lastlog檔案,而且該程式帶更新utmp wtmp.檔案. shell記錄:    .sh_history(ksh),.history(csh),或.bash_history(bash)等,是shell執行時的歷史記錄.記錄使用者執行的命令.它一般存在於使用者的主目錄.別忘了去根目錄看看. 1.日誌都是一些文字形式的檔案.最笨的方法是用文字編輯器來編輯日誌檔案.刪除相關的記錄.來達到擦拭腳印和隱藏自己的效果. 比如用vi等  但這樣做是很笨的.太麻煩,工作量太大. 2.用rm -f 來刪掉日誌.比如rm -f /usr/adm/lastlog  這樣做是很蠢的.  更容易被管理員發現有人入侵.但是,相對來說自己還是保護好了.:)  可以用在一些不太重要的機器上.  3.用>定向符清除. 比如: cat > /usr/log/lastlog ->這裡輸入你要的寫的東西.最好偽裝得像一些,也可以不輸入哦.:)  ^d ->這裡的^d是按鍵 ctrl + d.  # . 4.當然最好的是用日誌清除工具.  輸入幾個命令讓程式幫你擦:)  a.常見的日誌清除工具.  下面介紹一個比較好的日誌清除器.:)  他完全可以清除  lastlog utmp utmpx wtmp wtmpx 下面我們來看看.(示範工作平臺sunos 5.7)  # gzip -d wipe-1.00.tgz  # tar -xf wipe-1.00.tar  # cd wipe-1.00  # ls -al  總數32  drwxr-xr-x  2  root  root     512   2月 4 20:48   .  drwxrwxrwx  6  root  other    1024   2月 4 18:40   ..  -rw-r--r--  1  root  root     130   1997 1月 9   INSTALL  -rw-r--r--  1  root  staff    1389   1997 1月 9   Makefile  -rw-r--r--  1  root  root     498   1997 1月 9   README  -rw-r--r--  1  root  staff   10027   1997 1月 9   wipe.c  # make  Wipe v0.01 !  Usage: 'make ' where System types are:  linux freebsd sunos4 solaris2 ultrix    aix irix digital bsdi netbsd hpux  #  我們可以看到它需要出示 系統的選項.這些選項是:    linux freebsd sunos4 solaris2 ultrix    aix irix digital bsdi netbsd hpux  我們要清除相關的系統日誌就必須在相同的系統下編譯.  比如我們要在redhat等linux下編譯,就應為: make linux  在freebsd下編譯就應為:make freebsd  在sunos 4下編譯,就應為: make sunos4  sunos 5以上的系統裡編譯,就應為:make solaris2   # make solaris2  gcc -O3 -DHAVE_LASTLOG_H -DHAVE_UTMPX -o wipe wipe.c  # ls -al  總數94  drwxr-xr-x  2  root  root   512   2月 4 21:03   .  drwxrwxrwx  6  root  other  1024   2月 4 18:40   ..  -rw-r--r--  1  root  root   130   1997 1月 9   INSTALL  -rw-r--r--  1  root  staff  1389   1997 1月 9   Makefile  -rw-r--r--  1  root  root    498   1997 1月 9   README  -rwxr-xr-x  1  root  other  30920   2月 4 21:03  wipe  -rw-r--r--  1  root  staff  10027   1997 1月 9   wipe.c  #./wipe  USAGE: wipe [ uwla ] ...options...  UTMP editing: Erase all usernames : wipe u [username]    Erase one username on tty: wipe u [username] [tty]  WTMP editing: Erase last entry for user : wipe w [username]    Erase last entry on tty : wipe w [username] [tty] LASTLOG  editing: Blank lastlog for user : wipe l [username] Alter lastlog    entry : wipe l [username] [tty] [time] [host]    Where [time] is in the format [YYMMddhhmm]  ACCT editing: Erase acct entries on tty : wipe a [username] [tty]  大家可以看到編譯好的wipe的使用方法.  其中 u 選項為 utmp utmpx 日誌擦除..  w 選項為 wtmp wtmpx 日誌擦除.  l 選項為 lastlog 日誌擦除.  a 為/var/adm/pacct日誌擦除.(一般不用這個.:)  其中[tty]為終端號.為在有多個相同帳號同時登陸時,清除日誌的使用選項.當然是要你的終端號哦.:)  大家可以用 w 命令查終端號.  比如:  # w  下午 9:15 1 user, 平均負荷: 0.00, 0.00, 0.01  使用者名稱   終端號   登入時間   閒置   JCPU   PCPU   執行命令  root   pts/1   下午 7:40         3          w  下面的是我在sunos 5.7上的具體的使用情況 # w  下午 9:15 1 user, 平均負荷: 0.00, 0.00, 0.01  使用者名稱   終端號   登入時間   閒置   JCPU   PCPU   執行命令  root  pts/1   下午 7:40        3          w   # ./wipe u root  Patching /var/adm/utmp .... Done.  Patching /var/adm/utmpx .... Done.  # w  下午 9:15 1 user, 平均負荷: 0.00, 0.00, 0.01  使用者名稱   終端號   登入時間   閒置   JCPU   PCPU   執行命令  # ./wipe w gao  Patching /var/adm/wtmp .... Done.  Patching /var/adm/wtmpx .... Done.  # ./wipe l root  Patching /var/adm/lastlog .... Done. 好了.  lastlog utmp utmpx wtmp wtmpx 擦完了. 當然我們不要忘了shell 記錄.  # ls -al /.*history  -rw------- 1 root other 456 2月 4 20:27 .sh_history  # rm -f .*history  # cd  # pwd  /home/gao  # ls -al /.*history  -rw------- 1 root other 456 2月 4 20:27 .sh_history  # rm -f .*history ok, 算是大功告成吧