电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

认识与分析登录档


发布日期:2023/3/4
 

什么是登录档干嘛要分析登录档

这部分是最容易被新手所忽略的那就是详细而确实的纪录或者是备份系统的登录档什么是登录档呢?简单的说就是记录系统活动记录的几个档案例如何时何地(来源 IP )何人( login name )做了什么动作另外就是系统在什么时候做了什么样的行为时发生了什么样的事件等等要知道的是我们的 Linux 主机在背景之下有相当多的 daemons 在工作着那么这些工作中的程序总是会有一些讯息显示这些显示的讯息就是给记录在登录档当中啦也就是说记录这些系统的重要讯息就是登录档所进行的纪录工作的内容了而由于这些记录的工作内容对于系统的资讯太详细了若被取得将可能影响到系统的安全性因此通常这些登录档只有 root 可以进行视察的功能!

那么为何要记录与解析登录档呢?这是由于记录档有几个重要的功能

·解决系统的错误这个对于系统管理员来说是很重要的资讯例如开机的过程当中侦测到的硬体讯息资料会记录到记忆体当中由于这些侦测的资讯可以提供我们了解硬体资讯所以如果你的系统发生问题时可以下达 dmesg 看看硬体的侦测有没有发生错误呢!另外如果系统资源被耗尽核心活动发生错误等等事件发生的时候则系统登录档亦会将错误的讯息记录在登录档中(通常是 /var/log/messages )这些都可以藉以取得错误发生时的资讯并加以克服问题!!

·解决网路服务的问题在安装或设定新服务的套件时最常使用到这个功能了!例如在安装启动 sendmail 时如果 sendmail 无法提供服务的时候那么无法提供服务的问题则会被纪录到登录档当中去则只要分析登录档就可以了解问题点并藉以解决问题啦!( 所以我们常说『天助自助者』是真的啦!察看()萤幕上面的错误讯息与()登录档的错误资讯几乎可以解决大部分的 Linux 问题! )

·记录登录资讯这个东西相当的重要!例如有天您的 apache 这个 WWW 服务挂了你怎么知道何时挂掉的?而最后登入者是谁?!这都可以藉由分析 apache 的登录档来取得资讯此外万一有一天您的系统被入侵并且被利用来攻击他人的主机这个时候对方的主机查出是您的 Linux 在进行攻击的行为这个时候你要如何告知对方您的主机是由于被入侵所导致的问题并且协助对方继续往来源追查呢?!呵呵!此时登录档可是相当重要的呢!

因此一个有经验的主机管理员会随时随地查阅一下自己的登录档以随时掌握系统的最新脉动!那么见的几个登录档有哪些呢?一般而言有下面几个

·/var/log/secure记录登入系统存取资料的档案例如 pop ssh telnet ftp 等都会记录在此档案中

·/var/log/wtmp记录登入者的讯息资料由于本档案已经被编码过所以必须使用 last 这个指令来取出档案的内容

·/var/log/messages这个档案相当的重要几乎系统发生的错误讯息(或者是重要的资讯)都会记录在这个档案中

·/var/log/bootlog记录开机或者是一些服务启动的时候所显示的启动或关闭讯息

·/var/log/maillog 或 /var/log/mail/*纪录邮件存取或往来( sendmail 与 pop )的使用者记录

·/var/log/cron这个是用来记录 crontab 这个例行性服务的内容的!

·/var/log/httpd /var/log/news /var/log/mysqldlog /var/log/samba /var/log/procmaillog 分别是几个不同的网路服务的记录档啦!

好了那么记录了这些登录档之后我要做什么分析呀!?基本上一个好的系统管理员大概都知道『一部主机负责的服务最好能少尽量少』这是什么意思呢?也就是说这部主机为邮件主机那么就专门负责邮件工作不要还搞 WWW 服务!这样有几个好处除了系统的安全性较佳之外(因为开的 port 变少了!)记录档的解析也会比较简单!因为我们的 /var/log/secure 记录的登入者资讯就会比较有一致性!那么我们就可以查询一下每日登入的使用者帐号啦与错误讯息啦等等的!(当然啰如果你的频宽够经验丰富的话那么一部主机上面安装所有的网路服务也是可以的啦!)基本上检查/var/log/messages/var/log/secure这些个档案也就相当够了!因为系统发生的错误或者是警告讯息通常都会写入这个档案中

但是如果我手边有数十部主机怎么办?我要不要一部一部去察看 log file 呢?呵呵!那样察看会死人ㄋㄟ?因此我们底下也使用一个简易的登录档来分析 Red Hat 或 Mandrake 这两种 Linux distribution 的登录档吧!

Linux 登录档的规划 syslogd logrotate

在系统的登录档系统当中大多以一支常驻程式来进行写入这些讯息的这个工作那就是 syslogd 这支程式啦!另外由于登录档如果一直长大的话那么这些登录档的写入动作将会很没有效率这是因为档案太大时ASCII 格式码的资料档案写入比较麻烦的缘故!那么怎么进行登录档资料的备份工作呢?呵呵!那就使用 logrotate 吧!将资料进行轮转( rotate )?什么是轮转?!(我ㄌㄟ台语不轮转呦!?)其实也可以称为轮替啦!基本上就是将旧的 log 档案更改名称然后建立一个空的 log 档案如此一来新的 log 档案将从零开始记录然后只要将旧的 log 档案留下一阵子嗯!那就可以达到将登录档『轮转』的目的啦!此外如果旧的纪录(大概要保存几个月吧!)保存了一段时间没有问题那么就可以让系统自动的将他砍掉免得占掉很多宝贵的硬碟空间说!(举个例子来说我的 WWW 网站一个月的登录档所占掉的硬碟空间大小大概就有 GB 这么多而且都是纯文字档很可怕吧!)

所以说基本上针对 log 档案来设计的服务有这两支

osyslogd进行系统或者是网路服务的登录档记录工作

ologrotate将旧的资料更名并且建立新的登录档以保持登录档的『新鲜』并视设定将最旧的登录档删除

所以接着下来我们来谈一谈怎么样规划这两支程式呢?!就由 syslogd 这支程式先谈起吧!毕竟得先有登录档才可以进行 logrotate 呀!您说是吧!?

osyslogd

我们在Linux里面预设就已经使用了syslogd这支程式来记录系统的登入资料不相信的话你可以使用ps来查询一下

[root @test root]# ps aux|grep syslog root ?SOct : syslogd m root pts/S: : grep syslog

o

看到syslog这个服务名称了吧?!呵呵!所以知道他已经在背景底下工作啰!syslog 这支程式可以提供『系统登入资讯记录』及『Kernel错误或警示资讯记录』等功能此外他还提供了『本地端与远端电脑的登录资讯记录』功能所以可以将远端的主机登入资讯同时记录在本地端呢!很不错的功能吧!!此外目前正规使用的系统服务中大都预设支援以 syslog 这一个服务来记录他的登录档案资料例如apache samba sendmail 等等而通常syslog提供的记录参数主要有

§事件发生时间

§主机名称

§启动此事件的服务名称(例如 httpd samba

§讯息资料内容

等等这些资讯当然这些资讯的详细度是可以修改的此外这些资讯可以作为系统除错之用呢!我们先来看一下/var/log/secure的内容显示些什么呢?

[root @test root]# vi /var/log/secure Nov :: test xinetd[]: START: telnet pid= from= Nov :: test xinetd[]: FAIL: telnet address from= Nov :: test sshd[]: Accepted password for test from port ssh Nov :: test sshd(pam_unix)[]: session opened for user test by (uid=) Nov :: test su(pam_unix)[]: authentication failure; logname=test uid= euid= tty= ruser=test rhost=user=root Nov :: test su(pam_unix)[]: session opened for user root by test(uid=)

在上面的表格中可以看到每笔记录的主要内容是

<日期与时间><主机名称><服务名称><显示讯息>

以第一笔资料来看<日期是 Nov 4 的 16:28:35 时候>在<主机 test 当中><那个 xinetd 服务的内容有资料啦><该程序的 PID 为 7831,显示的讯息,说的是telnet这个由xinetd启动的服务有人登入,登入者的IP是192.168.1.11>这样够详细了吧!还有很多的资讯值得看的呢!尤其是/var/log/messages的内容然后不要忘记了在最后一笔资料中还记录了可以使用su的使用者的uid为帐号名称为test那么如果这个资料被人家夺走了呵呵!未来外面的cracker将可能试图以test这个帐号来猜测你的密码并加以破解嗯!真的很重要吧!所以这些资料很多都不能外流呢!

好了再来看到我们要如何来设定 syslogd 呢?!刚刚说到 syslog 可以记录我们系统中的几乎所有的预设的系统工作那么万一我的网路服务是自行设定的呢?!例如以 Tarball 安装好的服务套件OK!我们可以藉由修改 syslog 的参数档来达到这个目的那么预设的 syslog 参数档放在哪里呢?!

§/etc/nf

其实预设的 syslogd 程式的参数档案就是 /etc/nf 这个档案内容啦!这个档案的内容可以规定『什么服务需要被记录该服务被纪录的讯息等级如何?』基本上可以使用底下的句子语法来说明

服务名称讯息等级存放或显示地点

§服务名称例如 mail http news cron at 等等的服务名称

§讯息等级总共分成下列几种等级

§info 提示一些讯息资料

§notice 注意!需要比较留意的讯息

§waring

上一篇:视图刷新过程中出现的约束沖突问题

下一篇:ZT-Statspack安装配置使用说明二