(学习总结)鸟哥基础篇第三版:第十九章
来源:互联网 发布:什么是虚拟专用网络 编辑:程序博客网 时间:2024/05/21 16:58
第十九章、認識與分析登錄檔
19.1 什麼是登錄檔:登錄檔的重要性, 常見檔名, 服務與程式
1. Linux 常見的登錄檔檔名
/var/log/cron:
還記得第十六章例行性工作排程吧?你的 crontab 排程有沒有實際被進行? 進行過程有沒有發生錯誤?你的 /etc/crontab 是否撰寫正確?在這個登錄檔內查詢看看。
/var/log/dmesg:
記錄系統在開機的時候核心偵測過程所產生的各項資訊。由於 CentOS 預設將開機時核心的硬體偵測過程取消顯示,因此額外將資料記錄一份在這個檔案中;
/var/log/lastlog:
可以記錄系統上面所有的帳號最近一次登入系統時的相關資訊。第十四章講到的 lastlog 指令就是利用這個檔案的記錄資訊來顯示的。
/var/log/maillog 或 /var/log/mail/*:
記錄郵件的往來資訊,其實主要是記錄 sendmail (SMTP 協定提供者) 與 dovecot (POP3 協定提供者) 所產生的訊息啦。 SMTP 是發信所使用的通訊協定, POP3 則是收信使用的通訊協定。 sendmail 與 dovecot 則分別是兩套達成通訊協定的軟體。
/var/log/messages:
這個檔案相當的重要,幾乎系統發生的錯誤訊息 (或者是重要的資訊) 都會記錄在這個檔案中;如果系統發生莫名的錯誤時,這個檔案是一定要查閱的登錄檔之一。
/var/log/secure:
基本上,只要牽涉到『需要輸入帳號密碼』的軟體,那麼當登入時 (不管登入正確或錯誤) 都會被記錄在此檔案中。包括系統的 login 程式、圖形介面登入所使用的 gdm 程式、 su, sudo 等程式、還有網路連線的 ssh, telnet 等程式,登入資訊都會被記載在這裡;
/var/log/wtmp, /var/log/faillog:
這兩個檔案可以記錄正確登入系統者的帳號資訊 (wtmp) 與錯誤登入時所使用的帳號資訊 (faillog) !我們在第十一章談到的 last 就是讀取 wtmp 來顯示的, 這對於追蹤一般帳號者的使用行為很有幫助!
/var/log/httpd/*, /var/log/news/*, /var/log/samba/*:
不同的網路服務會使用它們自己的登錄檔案來記載它們自己產生的各項訊息!上述的目錄內則是個別服務所制訂的登錄檔。
常見的登錄檔就是這幾個,但是不同的 Linux distributions ,通常登錄檔的檔名不會相同 (除了 /var/log/messages 之外 )。所以說,你還是得要查閱你 Linux 主機上面的登錄檔設定資料,才能知道你的登錄檔主要檔名喔!
2. 登錄檔所需相關服務 (daemon) 與程式
syslogd:主要登錄系統與網路等服務的訊息;
klogd:主要登錄核心產生的各項資訊;
logrotate:主要在進行登錄檔的輪替功能。
/etc/init.d/syslog:syslogd,klogd
19.2 syslogd :記錄登錄檔的服務
19.2.4 登錄檔伺服器的設定
我們在之前稍微提到的,在 syslog.conf 檔案當中,可以將登錄資料傳送到印表機或者是遠端主機上面去。這樣做有什麼意義呢?如果你將登錄資訊直接傳送到印表機上面的話,那麼萬一不小心你的系統被 cracker 所入侵,他也將你的 /var/log/ 砍掉了,怎麼辦?沒關係啊!反正你已經將重要資料直接以印表機記錄起來了,嘿嘿!他是無法逃開的啦!^_^
再想像一個環境,你的辦公室內有十部 Linux 主機,每一部負責一個網路服務,你為了要瞭解每部主機的狀態,因此,你常常需要登入這十部主機去查閱你的登錄檔~哇!光用想的,每天要進入十部主機去查資料,想到就煩~沒關係~這個時候我們可以讓某一部主機當成『登錄檔伺服器』,用他來記錄所有的十部 linux 主機的資訊,嘿嘿!這樣我就直接進入一部主機就可以了!省時又省事,真方便~
那要怎麼達到這樣的功能呢?很簡單啦,我們 CentOS 5.x 預設的 syslog 本身就已經具有這個登錄檔伺服器的功能了,只是預設並沒有啟動該功能而已。你可以透過 man syslogd 去查詢一下相關的選項就能夠知道啦!既然是登錄檔伺服器,那麼我們的 Linux 主機當然會啟動一個埠口來監聽了,那個預設的埠口就是 UDP 的 514 喔!
圖 2.4.1、登錄檔伺服器的架構
如上圖所示,伺服器會啟動監聽的埠口,用戶端則將登錄檔再轉出一份送到伺服器去。而既然是登錄檔『伺服器』,所以當然有伺服器與用戶端 (client) 囉!這兩者的設定分別是這樣的:
# 1. Server 端:修改 syslogd 的啟動設定檔,通常在 /etc/sysconfig 內!
[root@www ~]# vim /etc/sysconfig/syslog
# 找到底下這一行:
SYSLOGD_OPTIONS="-m 0"
# 改成底下這樣子!
SYSLOGD_OPTIONS="-m 0 -r"
# 2. 重新啟動與觀察 syslogd 喔!
[root@www ~]# /etc/init.d/syslog restart
[root@www ~]# netstat -lunp | grep syslog
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
udp 0 0 0.0.0.0:514 0.0.0.0:* 13981/syslogd
# 嘿嘿!你的登錄檔主機已經設定妥當囉!很簡單吧!
透過這個簡單的動作,你的 Linux 主機已經可以接收來自其他主機的登錄資訊了!當然啦,你必須要知道網路方面的相關基礎,這裡鳥哥只是先介紹,未來瞭解了網路相關資訊後,再回頭來這裡瞧一瞧先! ^_^
至於 client 端的設定就簡單多了!只要指定某個資訊傳送到這部主機即可!舉例來說,我們的登錄檔伺服器 IP 為 192.168.1.100 ,而 client 端希望所有的資料都送給主機,所以,可以在 /etc/syslog.conf 裡面新增這樣的一行:
[root@www ~]# vim /etc/syslog.conf
*.* @192.168.1.100
再重新啟動 syslog 後,立刻就搞定了!而未來主機上面的登錄檔當中,每一行的『主機名稱』就會顯示來自不同主機的資訊了。19.4 分析登錄檔
登錄檔的分析是很重要的!你可以自行以 vi 進入登錄檔去查閱相關的資訊。而系統也提供一些軟體可以讓你從登錄檔中取得資料,例如之前談過的 last, lastlog, dmesg 等等指令。不過,這些資料畢竟都非常的分散,如果你想要一口氣讀取所有的登錄資訊,其實有點困擾的。不過,好在 CentOS 有提供 logwatch 這個登錄檔分析程式,你可以藉由該程式來瞭解登錄檔資訊。
19.4.1 CentOS 預設提供的 logwatch
SYNOPSIS
logwatch [--detail level ] [--logfile log-file-group ] [--service service-name ] [--print] [--mailto address ] [--archives] [--range range ][--debug level ] [--save file-name ] [--logdir directory ] [--hostname hostname ] [--splithosts] [--multiemail] [--output output-type ] [--numeric] [--no-oldfiles-log] [--version] [--help]
EXAMPLES
logwatch --service ftpd-xferlog --range all --detail high --print --archives
This will print out all FTP transfers that are stored in all current and archived xferlogs.
logwatch --service pam_pwdb --range yesterday --detail high --print
This will print out login information forthe previous day...
logwatch --service all --detail high -print- (学习总结)鸟哥基础篇第三版:第十九章
- (学习总结)鸟哥基础篇第三版:第八章
- (学习总结)鸟哥基础篇第三版:第九章
- (学习总结)鸟哥基础篇第三版:第十五章
- (学习总结)鸟哥基础篇第三版:第十八章
- (学习总结)鸟哥基础篇第三版:第二十章
- (学习总结)鸟哥基础篇第三版:第二十一章
- (学习总结)鸟哥基础篇第三版:第二十四章
- C/C++ 日常学习总结(第十九篇)多线程详解
- 鸟哥的Linux私房菜(基础篇)- 第十九章、认识与分析登录文件
- java语言程序设计基础篇--第十九章--练习题19.1(修改版)
- 第十九章:DLL基础
- 第十九章 DLL基础
- 第三章第十九题 逆序
- 鸟哥的Linux私房菜基础学习篇(第三版)之第二章:Linux如何学习(略)
- 《鸟哥的linux私房菜-基础学习篇(第三版)》第五、六章学习笔记
- 鸟哥的Linux私房菜基础学习篇(第三版)之第三章:主机规划与磁盘分区
- 鸟哥的Linux私房菜基础学习篇(第三版)之第十三章:shell scripts
- 数码管显示电位器AD值
- Shell脚本 过滤掉错误写法的ip地址
- POJ 3674 Super Assassin 笔记 动态规划
- Abaqus的历史数据输出的问题
- Java 并发工具包 java.util.concurrent 用户指南
- (学习总结)鸟哥基础篇第三版:第十九章
- EasyX 框架实现透明图片显示的 trick
- Atitit gui控件定位解决方案
- 反射的用处
- mybatis之resultType resultMap(一)
- java学习总结1
- 71. Simplify Path
- 博为峰Java技术文章 ——JavaSE Swing 适配器类
- 流感传染