linux社区爱心援助Linux认证系列教程业界动态站务新闻公司招聘建议留言网址大全LPI专题CISCO专题
设为首页
加入收藏
管理团队
JSP  
JAVA  
PERL  
 您的位置:首页 > article > Linux入门与提高 > 使用与技巧 >
栏目导栏
资料搜索
热门文章
·VMware Tools的安装步骤
·应用Linux下两种中文输入法
·GRUB FOR DOS 引导安装LINUX和
·linux下BT软件介绍
·Linux中用ALSA驱动声卡流程详解
·Linux 170个常见问题的详细解答
·什么是ISO文件?
·虚拟机软件vmware使用教程--使
·BabyLinux制作过程详解
·Linux挂接(mount)命令的使用方
·Linux必学的网络操作命令
·ffmpeg命令使用详解
·Linux操作系统Ifconfig命令详细
·在Linux下制作工资表
·vmware下的fedora 6的vmware t
最新文章
·CentOS5安装apache和svk使用域
·Ubuntu Linux系统Sudo命令无效
·Uboot对非Linux kernel的引导
·Fedora和XP双系统中网卡Realte
·解决Linux操作系统下部分文件乱
·双系统安装Linux之后找不到Win
·Linux操作系统上安装Flash Med
·设置Tomcat在Linux操作系统中自
·Linux操作系统下创建DBCA报错的
·Redhat Enterprise Linux磁带机
·Linux系统下用一条命令批量修改
·实用技巧:Linux下命令排列、调
·关于Linux操作系统中VI编辑器字
·Linux VI编辑器中的复制与粘贴
·Linux系统下触摸屏的简单使用和
Google
 
新手入门 Linux日志简介
[ 作者:Linux联盟收集  加入时间:2006-06-23 10:01:13  来自:中国IT实验室 ]
1. 日志简介 ZijLinux联盟
    日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。 ZijLinux联盟
在Linux系统中,有三个主要的日志子系统: ZijLinux联盟
连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp和/var/run/utmp,login等程序更新wtmp和utmp文件,使系统管理员能够跟踪谁在何时登录到系统。 ZijLinux联盟
进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacct或acct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。 ZijLinux联盟
错误日志--由syslogd(8)执行。各种系统守护进程、用户程序和内核通过syslog(3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTP和FTP这样提供网络服务的服务器也保持详细的日志。 ZijLinux联盟
常用的日志文件如下: ZijLinux联盟
access-log 纪录HTTP/web的传输 ZijLinux联盟
acct/pacct 纪录用户命令 ZijLinux联盟
aculog 纪录MODEM的活动 ZijLinux联盟
btmp 纪录失败的纪录 ZijLinux联盟
lastlog 纪录最近几次成功登录的事件和最后一次不成功的登录 ZijLinux联盟
messages 从syslog中记录信息(有的链接到syslog文件) ZijLinux联盟
sudolog 纪录使用sudo发出的命令 ZijLinux联盟
sulog 纪录使用su命令的使用 ZijLinux联盟
syslog 从syslog中记录信息(通常链接到messages文件) ZijLinux联盟
utmp 纪录当前登录的每个用户 ZijLinux联盟
wtmp 一个用户每次登录进入和退出时间的永久纪录 ZijLinux联盟
xferlog 纪录FTP会话 ZijLinux联盟
utmp、wtmp和lastlog日志文件是多数重用UNIX日志子系统的关键--保持用户登录进入和 退出的纪录。有关当前登录用户的信息记录在文件utmp中;登录进入和退出纪录在文件 wtmp中;最后一次登录文件可以用lastlog命令察看。数据交换、关机和重起也记录在w ZijLinux联盟
tmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户 的系统中增长十分迅速。例如wtmp文件可以无限增长,除非定期截取。许多系统以一天 或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重 ZijLinux联盟
新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp .1变为wtmp.2等等,直到wtmp.7。 ZijLinux联盟
每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把 用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新 的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录 ZijLinux联盟
一直用到用户登录退出时删除。utmp文件被各种命令文件使用,包括who、w、users和finger。 ZijLinux联盟
下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时 间戳的同一utmp纪录附加到文件中。wtmp文件被程序last和ac使用。 ZijLinux联盟
2. 具体命令 ZijLinux联盟
    wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用who、w、users、last和ac来使用这两个文件包含的信息。 who:who命令查询utmp文件并报告当前登录的每个用户。Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示 ZijLinux联盟
chyang pts/0 Aug 18 15:06 ZijLinux联盟
ynguo pts/2 Aug 18 15:32 ZijLinux联盟
ynguo pts/3 Aug 18 13:55 ZijLinux联盟
lewis pts/4 Aug 18 13:35 ZijLinux联盟
ynguo pts/7 Aug 18 14:12 ZijLinux联盟
ylou pts/8 Aug 18 14:15 ZijLinux联盟
如果指明了wtmp文件名,则who命令查询所有以前的纪录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。 ZijLinux联盟
w:w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。

例如:w(回车)显示:3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27 ZijLinux联盟
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT ZijLinux联盟
chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash ZijLinux联盟
ynguo pts/2 202.38.79.47 3:32pm 0.00s 0.14s 0.05s w ZijLinux联盟
lewis pts/3 202.38.64.233 1:55pm 30:39 0.27s 0.22s -bash ZijLinux联盟
lewis pts/4 202.38.64.233 1:35pm 6.00s 4.03s 0.01s sh /home/users/ ZijLinux联盟
ynguo pts/7 simba.nic.ustc.e 2:12pm 0.00s 0.47s 0.24s telnet mail ZijLinux联盟
ylou pts/8 202.38.64.235 2:15pm 1:09m 0.10s 0.04s -bash ZijLinux联盟
users:users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数。

例如:users(回车)显示:chyang lewis lewis ylou ynguo ynguo ZijLinux联盟
last:last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如: ZijLinux联盟
chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49) ZijLinux联盟
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14) ZijLinux联盟
chyang pts/4 202.38.68.242 Tue Aug 1 08:32 - 12:13 (03:40) ZijLinux联盟
lewis pts/3 202.38.64.233 Tue Aug 1 08:06 - 11:09 (03:03) ZijLinux联盟
lewis pts/2 202.38.64.233 Tue Aug 1 07:56 - 11:09 (03:12) ZijLinux联盟
如果指明了用户,那么last只报告该用户的近期活动,例如:last ynguo(回车)显示 ZijLinux联盟
: ZijLinux联盟
ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30) ZijLinux联盟
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44) ZijLinux联盟
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16) ZijLinux联盟
ynguo pts/0 simba.nic.ustc.e Thu Aug 3 03:17 - 05:42 (02:25) ZijLinux联盟
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 01:04 - 03:16 1+02:12) ZijLinux联盟
ynguo pts/0 simba.nic.ustc.e Wed Aug 2 00:43 - 00:54 (00:11) ZijLinux联盟
ynguo pts/9 simba.nic.ustc.e Thu Aug 1 20:30 - 21:26 (00:55) ZijLinux联盟
ac:ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间(小时),如果不使用标志,则报告总的时间。例如:ac(回车)显示:total 5177.47 ZijLinux联盟
ac -d(回车)显示每天的总的连结时间 ZijLinux联盟
Aug 12 total 261.87 ZijLinux联盟
Aug 13 total 351.39 ZijLinux联盟
Aug 14 total 396.09 ZijLinux联盟
Aug 15 total 462.63 ZijLinux联盟
Aug 16 total 270.45 ZijLinux联盟
Aug 17 total 104.29 ZijLinux联盟
Today total 179.02 ZijLinux联盟
ac -p (回车)显示每个用户的总的连接时间 ZijLinux联盟
ynguo 193.23 ZijLinux联盟
yucao 3.35 ZijLinux联盟
rong 133.40 ZijLinux联盟
hdai 10.52 ZijLinux联盟
zjzhu 52.87 ZijLinux联盟
zqzhou 13.14 ZijLinux联盟
liangliu 24.34 ZijLinux联盟
total 5178.24 ZijLinux联盟
lastlog:lastlog文件在每次有用户登录时被查询。可以使用lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志 /var/log/lastlog的内容。它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlo ZijLinux联盟
g显示"**Never logged**。注意需要以root运行该命令,例如: ZijLinux联盟
rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000 ZijLinux联盟
dbb **Never logged in** ZijLinux联盟
xinchen **Never logged in** ZijLinux联盟
pb9511 **Never logged in** ZijLinux联盟
xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000 ZijLinux联盟
另外,可一加一些参数,例如,last -u 102将报告UID为102的用户;last -t 7表示限 ZijLinux联盟
制上一周的报告。 ZijLinux联盟
3. 进程统计 ZijLinux联盟
    UNIX可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它对还跟踪一个侵入者有帮助。与连接时间日志不同,进程统计子系统缺省不激活,它必须启动。在Linux系统中启动进程统计使用accton命令,必须用root身份来运行。Accton命令的形式 accton file,file必须先存在。先使用touch命令来创建pacct文件:touch /var/log/pacct,然后运行accton: accton /var/log/pacct。一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。若要关闭统计,可以使用不带任何参数的accton命令。ZijLinux联盟
lastcomm命令报告以前执行的文件。不带参数时,lastcomm命令显示当前统计文件生命周期内纪录的所有命令的有关信息。包括命令名、用户、 tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。下面的例子: ZijLinux联盟
crond F root ?? 0.00 secs Sun Aug 20 00:16 ZijLinux联盟
promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16 ZijLinux联盟
promisc_check root ?? 0.01 secs Sun Aug 20 00:16 ZijLinux联盟
grep root ?? 0.02 secs Sun Aug 20 00:16 ZijLinux联盟
tail root ?? 0.01 secs Sun Aug 20 00:16 ZijLinux联盟
sh root ?? 0.01 secs Sun Aug 20 00:15 ZijLinux联盟
ping S root ?? 0.01 secs Sun Aug 20 00:15 ZijLinux联盟
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15 ZijLinux联盟
sh root ?? 0.01 secs Sun Aug 20 00:15 ZijLinux联盟
ping S root ?? 0.02 secs Sun Aug 20 00:15 ZijLinux联盟
ping6.pl F root ?? 0.02 secs Sun Aug 20 00:15 ZijLinux联盟
sh root ?? 0.02 secs Sun Aug 20 00:15 ZijLinux联盟
ping S root ?? 0.00 secs Sun Aug 20 00:15 ZijLinux联盟
ping6.pl F root ?? 0.01 secs Sun Aug 20 00:15 ZijLinux联盟
sh root ?? 0.01 secs Sun Aug 20 00:15 ZijLinux联盟
ping S root ?? 0.01 secs Sun Aug 20 00:15 ZijLinux联盟
sh root ?? 0.02 secs Sun Aug 20 00:15 ZijLinux联盟
ping S root ?? 1.34 secs Sun Aug 20 00:15 ZijLinux联盟
locate root ttyp0 1.34 secs Sun Aug 20 00:15 ZijLinux联盟
accton S root ttyp0 0.00 secs Sun Aug 20 00:15 ZijLinux联盟
进程统计的一个问题是pacct文件可能增长的十分迅速。这时需要交互式的或经过cron机制运行sa命令来保持日志数据在系统控制内。sa命令报告、清理并维护进程统计文件。它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct和 /var/log/usracct ZijLinux联盟
中。这些摘要包含按命令名和用户名分类的系统统计数据。sa缺省情况下先读它们,然后读pacct文件,使报告能包含所有的可用信息。sa的输出有下面一些标记项: ZijLinux联盟
avio--每次执行的平均I/O操作次数 ZijLinux联盟
cp--用户和系统时间总和,以分钟计 ZijLinux联盟
cpu--和cp一样 ZijLinux联盟
k--内核使用的平均CPU时间,以1k为单位 ZijLinux联盟
k*sec--CPU存储完整性,以1k-core秒 ZijLinux联盟
re--实时时间,以分钟计 ZijLinux联盟
s--系统时间,以分钟计 ZijLinux联盟
tio--I/O操作的总数 ZijLinux联盟
u--用户时间,以分钟计 ZijLinux联盟
例如: ZijLinux联盟
842 173.26re 4.30cp 0avio 358k ZijLinux联盟
2 10.98re 4.06cp 0avio 299k find ZijLinux联盟
9 24.80re 0.05cp 0avio 291k ***other ZijLinux联盟
105 30.44re 0.03cp 0avio 302k ping ZijLinux联盟
104 30.55re 0.03cp 0avio 394k sh ZijLinux联盟
162 0.11re 0.03cp 0avio 413k security.sh* ZijLinux联盟
154 0.03re 0.02cp 0avio 273k ls ZijLinux联盟
56 31.61re 0.02cp 0avio 823k ping6.pl* ZijLinux联盟
2 3.23re 0.02cp 0avio 822k ping6.pl ZijLinux联盟
35 0.02re 0.01cp 0avio 257k md5sum ZijLinux联盟
97 0.02re 0.01cp 0avio 263k initlog ZijLinux联盟
12 0.19re 0.01cp 0avio 399k promisc_check.s ZijLinux联盟
15 0.09re 0.00cp 0avio 288k grep ZijLinux联盟
11 0.08re 0.00cp 0avio 332k awk ZijLinux联盟
用户还可以根据用户而不是命令来提供一个摘要报告。例如sa -m显示如下: ZijLinux联盟
885 173.28re 4.31cp 0avk ZijLinux联盟
root 879 173.23re 4.31cp 0avk ZijLinux联盟
alias 3 0.05re 0.00cp 0avk ZijLinux联盟
qmailp 3 0.01re 0.00cp 0avk ZijLinux联盟
4. Syslog设备 ZijLinux联盟
    Syslog已被许多日志函数采纳,它用在许多保护措施中--任何程序都可以通过syslog 纪录事件。Syslog可以纪录系统事件,可以写到一个文件或设备中,或给用户发送一个信息。它能纪录本地事件或通过网络纪录另一个主机上的事件。 ZijLinux联盟
Syslog设备依据两个重要的文件:/etc/syslogd(守护进程)和/etc/syslog.conf配置文件,习惯上,多数syslog信息被写到/var/adm或/var/log目录下的信息文件中(messages.*)。一个典型的syslog纪录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日之中出现)。 ZijLinux联盟
每个syslog消息被赋予下面的主要设备之一: ZijLinux联盟
LOG_AUTH--认证系统:login、su、getty等 ZijLinux联盟
LOG_AUTHPRIV--同LOG_AUTH,但只登录到所选择的单个用户可读的文件中 ZijLinux联盟
LOG_CRON--cron守护进程 ZijLinux联盟
LOG_DAEMON--其他系统守护进程,如routed ZijLinux联盟
LOG_FTP--文件传输协议:ftpd、tftpd ZijLinux联盟
LOG_KERN--内核产生的消息 ZijLinux联盟
LOG_LPR--系统打印机缓冲池:lpr、lpd ZijLinux联盟
LOG_MAIL--电子邮件系统 ZijLinux联盟
LOG_NEWS--网络新闻系统 ZijLinux联盟
LOG_SYSLOG--由syslogd(8)产生的内部消息 ZijLinux联盟
LOG_USER--随机用户进程产生的消息 ZijLinux联盟
LOG_UUCP--UUCP子系统 ZijLinux联盟
LOG_LOCAL0~LOG_LOCAL7--为本地使用保留 ZijLinux联盟
Syslog为每个事件赋予几个不同的优先级: ZijLinux联盟
LOG_EMERG--紧急情况 ZijLinux联盟
LOG_ALERT--应该被立即改正的问题,如系统数据库破坏 ZijLinux联盟
LOG_CRIT--重要情况,如硬盘错误 ZijLinux联盟
LOG_ERR--错误 ZijLinux联盟
LOG_WARNING--警告信息 ZijLinux联盟
LOG_NOTICE--不是错误情况,但是可能需要处理 ZijLinux联盟
LOG_INFO--情报信息 ZijLinux联盟
LOG_DEBUG--包含情报的信息,通常旨在调试一个程序时使用 ZijLinux联盟
syslog.conf文件指明syslogd程序纪录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域和一个动作域。这些域由tab隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组成。当指明一个优先级时,syslogd将纪录一个拥有相同或更高优先级的消息。所以如果指明 "crit",那所有标为crit、alert和emerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到哪儿。例如,如果想把所有邮件消息纪录到一个文件中,如下: ZijLinux联盟
#Log all the mail messages in one place ZijLinux联盟
mail.* /var/log/maillog ZijLinux联盟
其他设备也有自己的日志。UUCP和news设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如: ZijLinux联盟
# Save mail and news errors of level err and higher in aspecial file. ZijLinux联盟
uucp,news.crit /var/log/spooler ZijLinux联盟
当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。 ZijLinux联盟
#Everybody gets emergency messages, plus log them on anther machine ZijLinux联盟
*.emerg * ZijLinux联盟
*.emerg @linuxaid.com.cn ZijLinux联盟
alert消息应该写到root和tiger的个人账号中: ZijLinux联盟
#Root and Tiger get alert and higher messages ZijLinux联盟
*.alert root,tiger ZijLinux联盟
有时syslogd将产生大量的消息。例如内核("kern"设备)可能很冗长。用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了: ZijLinux联盟
#Log all kernel messages to the console ZijLinux联盟
#Logging much else clutters up the screen ZijLinux联盟
#kern.* /dev/console ZijLinux联盟
用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log ZijLinux联盟
/messages,除了mail以外。级别"none"禁止一个设备: ZijLinux联盟
#Log anything(except mail)of level info or higher ZijLinux联盟
#Don log private authentication messages! ZijLinux联盟
*.info:mail.none;authpriv.none /var/log/messages ZijLinux联盟
在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志都没有用了。通常要广泛纪录日志。Syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的系统对于防范服务器攻击特别脆弱,因此要特别注意。 ZijLinux联盟
有个小命令logger为syslog(3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。

用法:logger 

例如:logger This is a test! ZijLinux联盟
它将产生一个如下的syslog纪录:Aug 19 22:22:34 tiger: This is a test! ZijLinux联盟
注意不要完全相信日志,因为攻击者很容易修改它的。 ZijLinux联盟
5. 程序日志 ZijLinux联盟
    许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的文件为sulog。同样的还有 sudolog。另外,想Apache有两个日志:access_log和error_log。

Linux联盟收集整理 ,转贴请标明原始链接,如有任何疑问欢迎来本站Linux论坛讨论
评论】【加入收藏夹】【 】【打印】【关闭
※ 相关链接
无相关信息