登入文件的纪录程序之一:syslogd

一般经过syslog而记录出来的数据主要有:

风波发生的日期与时间;

发生此风波的主机名称;

启动此风波的服务名称(如samba,xinetd等)或函式名称(如libpam..);

该讯息数据内容

syslogd的daemon配置文件:/etc/syslog.conf

内容句型是这样的:

服务名称[.=!]讯息等级讯息记录的文件名或装置或主机

#诸如下边:

/var/log/maillog_info

服务名称:该服务形成的讯息会被纪录的意思。syslog认识的服务主要有下边这种:

auth,authpriv:主要与认证有关的机制,比如telnet,login,ssh等须要认证的服务都是使用此一机制;

cron:例行性命令cron/at等形成讯息记录的地方;

daemon:与各个daemon有关的讯息;

kern:核心(kernel)形成讯息的地方;

lpr:复印相关的讯息!

mail:只要与电邮收发有关的讯息纪录都属于这个;

news:与新闻群组服务器有关的东西;

syslog:syslogd这支程序本身形成的信息啊!

user,uucp,local0~local7:与Unixlike机器本身有关的一些讯息。

讯息等级

系统将讯息分为七个主要的等级,依序是由不重要排列到重要讯息等级:

info:仅是一些基本的讯息说明而已;

notice:比info还须要被注意到的一些信息内容;

warning或warn:警示讯息,可能有问题,然而还不至于影响到某个daemon运作。

err或error:一些重大的错误讯息,这就要去找缘由了。

crit:比error还要严重的错误信息,crit是临界点(critical)的简写,早已很严重了!

alert:警告警告,早已很有问题的等级,比crit还要严重!

emerg或panic:背痛等级,意指系统早已几乎要当机的状态!很严重的错误信息了。

不仅这种有等级的讯息外,还有两个特殊的等级,那就是debug(错误探测等级)与none(不需登陆等级)两个arm linux,当要作一些错误探测,或则是忽视掉个别服务的信息时,就用这俩!

在讯息等级之前还有[.=!]的联结符号!他代表的意思是:

.:代表比前面还要高的等级(含该等级)都被记录出来的意思,比如:代表只要是mail的信息,但是该信息等级低于info(含info)时,都会被记录出来。

.=:代表所须要的等级就是前面接的等级而已!

.!:代表不等于。

日志文件记录的文件名或装置或主机常见的放置处:

文件的绝对路径:一般就是置于/var/log里头的文件!

复印机或其它:比如/dev/lp0这个复印机装置(虽然被黑客可以删掉掉日志文件,并且最终删掉不了复印下来的日志信息)

使用者名称:显示给使用者!

远程主机:比如@,要对方主机也能支持才行!

*:代表目前在线的所有人,类似wall这个指令的意义!

瞧瞧在仍未开启网路服务的情况下来自FedoraCoreRelease4的相关资料

[root@linux~]#vi/etc/syslog.conf

#kern.*/dev/console

#只要是kernel形成的讯息,全部都送到console去!默认是关掉的。

*.info;mail.none;authpriv.none;cron.none/var/log/messages

#在已知各服务的讯息中,不要记录到这个文件中,把已知的服务记录到单独的日志文件中去,便捷日后查询,否则messages这个文件就太混乱了。这个文件十分重要,所有未知的信息就会被记录在这个文件中,所以有问题,找这个文件就八九不离十了。

authpriv.*/var/log/secure

#这个就是经过一些身分确认的行为然后,须要记录身分的文件。

mail.*-/var/log/maillog

#只要跟mail有关的(不论是pop3还是sendmail)就会被纪录到这个文件!

cron.*/var/log/cron

#例行性命令相关的。

*.emerg*

#任何时侯发生的警告讯息就会显示给在线的所有人!那种*就是目前在线的所有人。

uucp,news.crit/var/log/spooler

#记录新闻错误低于crit的等级的信息,写入spooler当中!

local7.*/var/log/boot.log

#将开机的当中的讯息写入/var/log/boot.log中!

每位版本的syslog.conf差别是很大的,所以,每位登陆文件记录的数据似乎不很固定。

例:让所有的信息都额外写入到/var/log/admin.log!

[root@linux~]#vi/etc/syslog.conf

*.info/var/log/admin.log》》如果服务器硬碟容量够大,那么做也不失为一个献策。

[root@linux~]#/etc/init.d/syslogrestart

[root@linux~]#ll/var/log/admin.log

-rw——-1rootroot122Oct2322:21/var/log/admin.log》》注意权限

剖析登陆文件

dmesg

[root@linux~]#dmesg|more

因为系统在开机的过程当中仍未将硬碟mount上来,所以未能直接将数据直接读到logfile当中去linux查看ip命令有哪些,并且为了除错里面的便捷,所以在开机的过程当中的讯息还是要记录出来,这个时侯系统就将ram开了一个小区块来存储这个数据!这个开机记录文件就是:/proc/kmsg!

几乎所有的核心信息都可以使用dmesg来查阅得到的,例想要晓得开机有没有捉到网卡,dmesg|grep'eth'!

last

[root@linux~]#last-nnumber

[root@linux~]#last-ffilename

参数:

-n:last会读出这个月的数据,若数据量太大,可使用-n来严格要求显示的笔数。比如20笔数据:last-n20或last-20均可。

-f:last预设读出/var/log/wtmp,并且我们可以透过-f读取不同的登入文件信息!

例,将上个月的资料读出,仅读出5笔资料

[root@linux~]#last-n5-f/var/log/wtmp.1

dmtsai2pts/2MonOct2414:18-14:18(00:00)

dmtsai2work:0workMonOct2414:18gone-nologout

dmtsai2work:0workMonOct2414:18-14:18(00:00)

dmtsai2pts/2MonOct2414:18-14:18(00:00)

dmtsai2work:0workMonOct2414:18-14:18(00:00)

[root@linux~]#lastlog

lastlog只是读出/var/log/lastlog内的信息.他会显示目前系统里面的所有帐号当中,每位帐号近来一次登陆的时间!

Linux系统的LOG日志文件介绍!

UNIX网管员主要是靠系统的LOG,来获得入侵的痕迹.其实也有第三方工具记录入侵系统的痕迹,UNIX系统储存LOG文件,普通位置如下:

/usr/adm-初期版本的UNIX

/var/adm-新一点的版本使用这个位置

/var/log-一些版本的Solaris,linuxBSD,FreeBSD使用这个位置

/etc-多数UNIX版本把utmp置于这儿,有些也把wtmp置于这儿,syslog.conf在这儿

下边的一些文件按照你所在的目录不同而不同:

acct或pacct--记录每位用户使用的命令记录

access_log--主要当服务器运行NCSAHTTPD时,记录哪些站点联接过你的服务器

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命令查看,其他命令也可以访问这个文件.如:fingerroot就可以.现今的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下linux软件工程师培训,还有/usr/adm为/var/adm的的链接.

redhat的在/var/log和/var/run下

下边的是sunos5.7中的日志样本.据悉,各类shell都会记录用户使用的命令历史,它使用用房主目录下的文件来记录那些命令历史,一般这个文件的名子为.sh_history(ksh),.history(csh),或.bash_history(bash)等。

#ls/var/adm

acctlogmessages.1passwdsulogvold.log

aculogmessagesmessages.2sautmpwtmp

lastlogmessages.0messages.3spellhistutmpxwtmpx

#ls/var/log

authlogsyslogsyslog.1syslog.3

sysidconfig.logsyslog.0syslog.2syslog.4

下边的是redhat9.0中的日志样本.

#ls/var/log

boot.logdmesgmessages.2secureuucp

boot.log.1htmlaccess.logmessages.3secure.1wtmp

boot.log.2httpdmessages.4secure.2wtmp.1

boot.log.3lastlognetconf.logsecure.3xferlog

boot.log.4mailllognetconf.log.1secure.4xferlog.1

cronmaillognetconf.log.2sendmail.stxferlog.2

cron.1maillog.1netconf.log.3spoolerxferlog.3

cron.2maillog.2netconf.log.4spooler.1xferlog.4

cron.3maillog.3newsspooler.2

cron.4maillog.4normal.logspooler.3

daily.logmessagesrealtime.logspooler.4

daily.shmessages.1sambatransfer.log

#ls/var/run

atd.pidgpm.pidklogd.pidrandom-seedtreemenu.cache

crond.pididentd.pidnetreportrunlevel.dirutmp

ftp.pids-allinetd.pidnewssyslogd.pid

通常我们要清理的日志有

lastlog

utmp(utmpx)

wtmp(wtmpx)

messages

syslog

sulog

通常把以上说的日志给擦一下,就可以了.

下边我来谈谈里面那些我们要消除的日志的相关资料和消除方式.更详尽的资料和其他的日志请你查看相关资料.

里面早已对日志的功能做了简单陈述,这么这种日志文件究竟记录的是哪些呢?followme

下边是一个反例:

SunOS5.7

login:gao

Password:

Nodirectory!Logginginwithhome=/

Lastlogin:SunFeb422:18:25from219.31.36.7

SunMicrosystemsInc.SunOS5.7GenericOctober1998$

之后注册程序用新的登录时间和TTY信息更新lastlog文件,但是该程序带更新utmpwtmp.文件.

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.

#.

************************************************************************************************************

一、登录用户的操作

1、使用w命令查看登陆用户正在使用的进程信息,w命令用于显示早已登陆系统的用户的名称,以及她们正在做的事。该命令所使用的信息来始于/var/run/utmp文件。w命令输出的信息包括:

$ w
23:04:27 up 29 days,  7:51,  3 users,  load average: 0.04, 0.06, 0.02
USER     TTY      FROM              LOGIN@   IDLE   JCPU   PCPU WHAT
ramesh   pts/0    14.1.80.56        22:57    8.00s  0.05s  0.01s sshd: ramesh [priv]
wang    pts/1    14.20.48          23:01    2:53   0.01s  0.01s -bash
jim     pts/2    15.1.80.7         23:04    0.00s  0.00s  0.00s w

据悉,可以使用whoami查看使用该命令的用户及进程,使用who查看所有登陆用户进程信息,这种查看命令临汾小异;

2、使用pkill强制退出登入的用户

使用pkill可以结束当前登入用户的进程linux查看ip命令有哪些,因而强制退出用户登入,具体使用可以结合w命令;

首先:使用w查看当前登入的用户,注意TTY所示登陆进程终端号

其次:使用pkill–9-tpts/1结束pts/1进程所对应用户登入(可依照FROM的IP地址或主机号来判定)

3、LINUX用户登入后精确命令记录(history按时间、用户显示命令记录)

#设置保存历史命令的文件大小

exportHISTFILESIZE=10000000

#保存历史命令条数

exportHISTSIZE=1000000

#实时记录历史命令,默认只有在用户退出以后才能统一记录,很容易导致多个用户间的互相覆盖。

exportPROMPT_COMMAND=”history-a”

#记录每条历史命令的执行时间

exportHISTTIMEFORMAT=”%Y-%m-%d_%H:%M:%S”

备:%Y:4位数的年份;%m:2位数的月份数;%d:2位数的一个月中的日期数;%H:2位数的小时数

(24小时制);%M:2位数的分钟数;%S:2位数的秒数

主要功能:

二、查看所有登陆用户的操作历史

在linux系统的环境下,不管是root用户还是其它的用户只有登入系统后用步入操作我们都可以通过命令history来查看历史记录,但是如果一台服务器多人登录,三天由于某人误操作了删掉了重要的数据。这时侯通过查看历史记录(命令:history)是没有哪些意义了(由于history只针对登入用户下执行有效,虽然root用户也未能得到其它用户histotry历史)。

通过在/etc/profile上面加入以下代码就可以实现:

PS1="`whoami`@`hostname`:"'[$PWD]'

history

USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`

if [ "$USER_IP" = "" ]

then

USER_IP=`hostname`

fi

if [ ! -d /tmp/dbasky ]

then

mkdir /tmp/dbasky

chmod 777 /tmp/dbasky

fi

if [ ! -d /tmp/dbasky/${LOGNAME} ]

then

mkdir /tmp/dbasky/${LOGNAME}

chmod 300 /tmp/dbasky/${LOGNAME}

fi

export HISTSIZE=4096

DT=`date "+%Y-%m-%d_%H:%M:%S"`

export HISTFILE="/tmp/dbasky/${LOGNAME}/${USER_IP} dbasky.$DT"

chmod 600 /tmp/dbasky/${LOGNAME}/*dbasky* 2>/dev/null

source/etc/profile使用脚本生效

退出用户,重新登陆

里面脚本在系统的/tmp新建个dbasky目录,记录所有登录过系统的用户和IP地址(文件名),每每用户登入/退出会创建相应的文件,该文件保存这段用户登入时期内操作历史,可以用这个方式来检测系统的安全性。

root@lb:[/tmp/dbasky/root]ls 

10.1.80.47 dbasky.2013-10-24_12:53:08 

root@lb:[/tmp/dbasky/root]cat 10.1.80.47 dbasky.2013-10-24_12:53:08

查看在10:53:08从10.1.80.47登陆的root用户操作命令历史

************************************************************************************************************

谢谢:

Author

这篇优质的内容由TA贡献而来

刘遄

《Linux就该这么学》书籍作者,RHCA认证架构师,教育学(计算机专业硕士)。

发表回复