Chinaunix首页 | 论坛 | 博客
  • 博客访问: 4569
  • 博文数量: 2
  • 博客积分: 209
  • 博客等级:
  • 技术积分: 20
  • 用 户 组: 普通用户
  • 注册时间: 2008-05-28 15:20
文章分类
文章存档

2008年(2)

最近访客

分类: LINUX

2008-05-28 15:27:21

Part I

syslogd & klogd   ---------/etc/syslog.conf

/var/log/secure:
登录到系统存取资料的记录;FTPSSHTELNET...
/var/log/wtmp
:记录登录者讯录,二进制文件,须用last来读取内容
/var/log/messages
:杂货铺
/var/log/boot.log
:记录开机启动讯息,dmesg | more

一、常识
# ps aux | grep syslog
# chkconfig --list | grep syslog
# cat /var/log/secure

/etc/syslog.conf 哪些服务产生的哪些等级讯息记录到哪里
记录到相同地方的多个讯息源用分号间隔
vi /etc/syslog.conf

二、接收远程日志
# grep 514 /etc/services
syslog          514/udp

vi /etc/sysconfig/syslog
#
SYSLOGD_OPTIONS="-m 0"
#
改成
SYSLOGD_OPTIONS="-m 0 -r"

/etc/init.d/syslog restart
[root@linux ~]# netstat -tlunp
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:*              24314/syslogd

对应client
# vi /etc/syslog.conf
*.*       @192.168.1.100

三、logrotate

    *  /etc/logrotate.conf
    * /etc/logrotate.d/

logrotate.conf 才是主要配置文件,而/logrotate.d /这个目录内的所有文件都被读入 /etc/logrotate.conf来执行!
如果在 /etc/logrotate.d/ 目录文件中,没有相应的细节设定則以 /etc/logrotate.conf 设定为缺省值!
vi /etc/logrotate.d/syslog
/var/log/messages /var/log/secure /var/log/maillog /var/log/spooler
/var/log/boot.log /var/log/cron {
    sharedscripts
    postrotate
        /bin/kill -HUP `cat /var/run/syslogd.pid 2> /dev/null` 2> /dev/null || true
    endscript
}
1
、用空格作多个档案分隔
2
、所有设定在{}
3
# prerotate:在启动logrotate执行的指令
   # postrotate
:在做完 logrotate后需处理的指令

logrotate [-vf] logfile
參數:
-v 
:显示过程
-f 
:强制执行

logrotate 的工作加入到 crontab /etc/cron.daily/logrotate;所以系统每天自动查看
只是要注意一下:/var/log/messages 是否有这样的类似内容
 Oct 24 15:15:35 localhost syslogd 1.4.1: restart.

四、实例:
要求: 登录档案每月替换一次
      
> 10MB ;强制替换,不不考虑一个月的期限;
      
保存五备份文档;
      
备份文档不压缩。

步骤1
~]# chattr +a /var/log/admin.log
[root@linux ~]# lsattr /var/log/admin.log
-----a------- /var/log/admin.log
只能新增不能删节除,除非chattr -a /var/log/admin.log
[root@linux ~]# mv /var/log/admin.log /var/log/admin.log.1
mv: cannot move '/var/log/admin.log' to '/var/log/admin.log.1':permission deny
步骤2
vi /etc/logrotate.d/admin
# This configuration is from VBird 2005/10/24
/var/log/admin.log {
        monthly
        size=10M
        rotate 5
        nocompress
        sharedscripts
        prerotate
                /usr/bin/chattr -a /var/log/admin.log
        endscript
        sharedscripts
        postrotate
                /usr/bin/killall -HUP syslogd
                /usr/bin/chattr +a /var/log/admin.log
        endscript
}
步骤3:测试
# logrotate -v /etc/logrotate.conf
.....(
前面省略).....
rotating pattern: /var/log/admin.log  10485760 bytes (5 rotations)
empty log files are rotated, old logs are removed
considering log /var/log/admin.log
  log does not need rotating
not running shared prerotate script, since no logs will be rotated
............
# logrotate -vf /etc/logrotate.d/admin
reading config file /etc/logrotate.d/admin
reading config info for /var/log/admin.log

也就是说: /etc/syslog.conf /etc/logrotate.d/* 对应文档搭配起来使用;先由syslogd 按照syslog.conf指定的方法处理消息,
然后送给 logrotat来按照/etc/logrotate.d/*文档要求来轮替日志。

五、常见指令:

# dmesg | more   /var/log/boot.log
dmesg | grep 'eth'

# last -n number
[root@linux ~]# last -f filename

-n  number
-f 
last 预设值为读 /var/log/wtmp 文档,而 -f 读取不同的文档
     
# last -n 5 -f /var/log/wtmp.1
dmtsai2  pts/2             Mon Oct 24 14:18 - 14:18  (00:00)
dmtsai2  work:0 work       Mon Oct 24 14:18    gone - no logout
dmtsai2  work:0 work       Mon Oct 24 14:18 - 14:18  (00:00)
dmtsai2  pts/2             Mon Oct 24 14:18 - 14:18  (00:00)
dmtsai2  work:0 work       Mon Oct 24 14:18 - 14:18  (00:00)

# lastlog
只读取/var/log/lastlog 内容,只包括当前系统上面所有的帐号最近一次LOGIN的时间。

 

Part II:

1. 日志简介
日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审
计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。
Linux系统中,有三个主要的日志子系统:
连接时间日志--由多个程序执行,把纪录写入到/var/log/wtmp/var/run/utmplogin等程序更新wtmputmp文件,使系统管理员能够跟踪谁在何时登录到系统。

进程统计--由系统内核执行。当一个进程终止时,为每个进程往进程统计文件(pacctacct)中写一个纪录。进程统计的目的是为系统中的基本服务提供命令使用统计。

错误日志--syslogd8)执行。各种系统守护进程、用户程序和内核通过syslog3)向文件/var/log/messages报告值得注意的事件。另外有许多UNIX程序创建日志。像HTTPFTP这样提供网络服务的服务器也保持详细的日志。



2
、常用的日志文件如下:

access-log
纪录HTTP/web的传输
acct/pacct
纪录用户命令
aculog
纪录MODEM的活动
btmp
纪录失败的纪录
lastlog
纪录最近几次成功登录的事件和最后一次不成功的登录
messages
syslog中记录信息(有的链接到syslog文件)
sudolog
纪录使用sudo发出的命令
sulog
纪录使用su命令的使用
syslog
syslog中记录信息(通常链接到messages文件)
utmp
纪录当前登录的每个用户  /var/run/utmp 
wtmp
一个用户每次登录进入和退出时间的永久纪录  /var/log/wtmp 系统重启及系统状态变化情况。
xferlog
纪录FTP会话

utmp
wtmplastlog日志文件是多数重用UNIX日志子系统的关键--保持用户登录进入和退出的纪录。
有关当前登录用户的信息记录在文件utmp中;[针对当前已LOGIN的用户]
登录进入和退出纪录在文件wtmp中;[针对用户的所有历史记录,明细表]
最后一次登录文件可以用lastlog命令察看。
数据交换、关机和重起也记录在wtmp文件中。所有的纪录都包含时间戳。这些文件(lastlog通常不大)在具有大量用户的系统中增长十分迅速。例如 wtmp文件可以无限增长,除非定期截取。许多系统以一天或者一周为单位把wtmp配置成循环使用。它通常由cron运行的脚本来修改。这些脚本重新命名并循环使用wtmp文件。通常,wtmp在第一天结束后命名为wtmp.1;第二天后wtmp.1变为wtmp.2等等,直到wtmp.7

每次有一个用户登录时,login程序在文件lastlog中察看用户的UID。如果找到了,则把用户上次登录、退出时间和主机名写到标准输出中,然后login程序在lastlog中纪录新
的登录时间。在新的lastlog纪录写入后,utmp文件打开并插入用户的utmp纪录。该纪录一直用到用户登录退出时删除。 下一步,login程序打开文件wtmp附加用户的utmp纪录。当用户登录退出时,具有更新时间戳的同一utmp纪录附加到文件中。

LOGIN----
刷新LAGTLOG----写入用户的utmp纪录-----退出时删除utmp中相应的纪录------LOGIN根据utmp更新对应wtmp文件中的记录。

utmp
文件被各种命令文件使用,包括whowusersfinger。均针对系统已login in的用户
wtmp
文件被程序lastac使用。这两个命令所按历史记录进行统计

3
. 具体命令
wtmp
utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令)。用户需要使用whowuserslastac来使用这两个文件包含的信息。

who
who命令查询utmp文件并报告当前登录的每个用户Who的缺省输出包括用户名、终端类型、登录日期及远程主机。例如:who(回车)显示
chyang pts/0 Aug 18 15:06
ynguo pts/2 Aug 18 15:32
如果指明了wtmp文件名,则who命令查询所有以前的纪录。命令who /var/log/wtmp将报告自从wtmp文件创建或删改以来的每一次登录。

w
w命令查询utmp文件并显示当前系统中每个用户和它所运行的进程信息。例如:w(回车)显示:
3:36pm up 1 day, 22:34, 6 users, load average: 0.23, 0.29, 0.27
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
chyang pts/0 202.38.68.242 3:06pm 2:04 0.08s 0.04s -bash

users
users用单独的一行打印出当前登录的用户,每个显示的用户名对应一个登录会话。如果一个用户有不止一个登录会话,那他的用户名将显示相同的次数
例如:users(回车)显示:
chyang lewis lewis ylou ynguo ynguo

last
last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户。例如:
chyang pts/9 202.38.68.242 Tue Aug 1 08:34 - 11:23 (02:49)
cfan pts/6 202.38.64.224 Tue Aug 1 08:33 - 08:48 (00:14)
如果指明了用户,那么last只报告该用户的近期活动,例如:last ynguo(回车)显示:
ynguo pts/4 simba.nic.ustc.e Fri Aug 4 16:50 - 08:20 (15:30)
ynguo pts/4 simba.nic.ustc.e Thu Aug 3 23:55 - 04:40 (04:44)
ynguo pts/11 simba.nic.ustc.e Thu Aug 3 20:45 - 22:02 (01:16)

ac
ac命令根据当前的/var/log/wtmp文件中的登录进入和退出来报告用户连结的时间小时),如果不使用标志,则报告总的时间。
例如:ac(回车)显示:total 5177.47

ac -d
(回车)显示每天的总的连结时间
Aug 12 total 261.87
Aug 13 total 351.39
Aug 14 total 396.09
Aug 15 total 462.63
Aug 16 total 270.45
Aug 17 total 104.29
Today total 179.02

ac -p
(回车)显示每个用户的总的连接时间
ynguo 193.23
yucao 3.35
rong 133.40
hdai 10.52
zjzhu 52.87
zqzhou 13.14
liangliu 24.34
total 5178.24

lastlog
lastlog文件在每次有用户登录时被查询。可以使用lastlog命令来检查某特定用户上次登录的时间,并格式化输出上次登录日志/var/log/lastlog的内容。
它根据UID排序显示登录名、端口号(tty)和上次登录时间。如果一个用户从未登录过,lastlog显示"**Never logged**
注意需要以root运行该命令,例如:
rong 5 202.38.64.187 Fri Aug 18 15:57:01 +0800 2000
dbb **Never logged in**
xinchen **Never logged in**
pb9511 **Never logged in**
xchen 0 202.38.64.190 Sun Aug 13 10:01:22 +0800 2000
另外,可一加一些参数,例如,last -u 102将报告UID102的用户;last -t 7表示限制上一周的报告。

4. 进程统计

UNIX
可以跟踪每个用户运行的每条命令,如果想知道昨晚弄乱了哪些重要的文件,进程统计子系统可以告诉你。它对还跟踪一个侵入者有帮助。
与连接时间日志不同,进程统计子系统缺省不激活,它必须启动。
Linux系统中启动进程统计使用accton命令,必须用root身份来运行。Accton命令的形式accton filefile必须先存在。
1
、先使用touch 令来创建pacct文件:touch /var/log/pacct
2
、然后运行accton accton /var/log/pacct
3
、一旦accton被激活,就可以使用lastcomm命令监测系统中任何时候执行的命令。
4
、若要关闭统计,可以使用不带任何参数的accton命令。

lastcomm
命令报告以前执行的文件。
不带参数时,lastcomm命令显示当前统计文件生命周期内纪录的所有命令的有关信息。包括命令名、用户、tty、命令花费的CPU时间和一个时间戳。如果系统有许多用户,输入则可能很长。下面的例子:
crond F root ?? 0.00 secs Sun Aug 20 00:16
promisc_check.s S root ?? 0.04 secs Sun Aug 20 00:16
promisc_check root ?? 0.01 secs Sun Aug 20 00:16
grep root ?? 0.02 secs Sun Aug 20 00:16
tail root ?? 0.01 secs Sun Aug 20 00:16
sh root ?? 0.01 secs Sun Aug 20 00:15
ping S root ?? 0.01 secs Sun Aug 20 00:15
..............
进程统计的一个问题是pacct文件可能增长的十分迅速!!
这时需要交互式的或经过cron机制运行sa命令来保持日志数据在系统控制内。
sa命令报告、清理并维护进程统计文件。 它能把/var/log/pacct中的信息压缩到摘要文件/var/log/savacct/var/log/usracct中。
这些摘要包含按命令名和用户名分类的系统统计数据。sa缺省情况下先读它们,然后读pacct文件,使报告能包含所有的可用信息。sa的输出有下面一些标记项:
avio--
每次执行的平均I/O操作次数
cp--
用户和系统时间总和,以分钟计
cpu--
cp一样
k--
内核使用的平均CPU时间,以1k为单位
k*sec--CPU
存储完整性,以1k-core
re--
实时时间,以分钟计
s--
系统时间,以分钟计
tio--I/O
操作的总数
u--
用户时间,以分钟计
例如:
842 173.26re 4.30cp 0avio 358k
2 10.98re 4.06cp 0avio 299k find
9 24.80re 0.05cp 0avio 291k ***other
105 30.44re 0.03cp 0avio 302k ping
104 30.55re 0.03cp 0avio 394k sh

用户还可以根据用户而不是命令来提供一个摘要报告。例如sa -m显示如下

885 173.28re 4.31cp 0avk
root 879 173.23re 4.31cp 0avk
alias 3 0.05re 0.00cp 0avk
qmailp 3 0.01re 0.00cp 0avk

使用logrorate对增长快的日志文件进行管理

Logrotate
读取/etc/logrotate.d下的档案。管理员通过此处的脚本档案来控制Logrotate的运行。如下例:
{
rotate 5
weekly
errors
mail
copytruncate
compress
size 100k
}

5. Syslog
设备

Syslog
已被许多日志函数采纳,它用在许多保护措施中--任何程序都可以通过syslog 纪录事件。Syslog可以纪录系统事件,可以写到一个文件或设备中,或给用户发送一个信
息。它能纪录本地事件或通过网络纪录另一个主机上的事件。
Syslog
设备依据两个重要的文件:/etc/syslogd(守护进程)和/etc/syslog.conf配置文件,习惯上,多数syslog信息被写到/var/adm/var/log目录下的信息文件中(mess
ages.*
)。一个典型的syslog纪录包括生成程序的名字和一个文本信息。它还包括一个设备和一个优先级范围(但不在日之中出现)。
每个syslog消息被赋予下面的主要设备之一:
LOG_AUTH--
认证系统:loginsugetty
LOG_AUTHPRIV--
LOG_AUTH,但只登录到所选择的单个用户可读的文件中
LOG_CRON--cron
守护进程
LOG_DAEMON--
其他系统守护进程,如routed
LOG_FTP--
文件传输协议:ftpdtftpd
LOG_KERN--
内核产生的消息
LOG_LPR--
系统打印机缓冲池:lprlpd
LOG_MAIL--
电子邮件系统
LOG_NEWS--
网络新闻系统
LOG_SYSLOG--
syslogd8)产生的内部消息
LOG_USER--
随机用户进程产生的消息
LOG_UUCP--UUCP
子系统
LOG_LOCAL0~LOG_LOCAL7--
为本地使用保留
Syslog
为每个事件赋予几个不同的优先级:
LOG_EMERG--
紧急情况
LOG_ALERT--
应该被立即改正的问题,如系统数据库破坏
LOG_CRIT--
重要情况,如硬盘错误
LOG_ERR--
错误
LOG_WARNING--
警告信息
LOG_NOTICE--
不是错误情况,但是可能需要处理
LOG_INFO--
情报信息
LOG_DEBUG--
包含情报的信息,通常旨在调试一个程序时使用
syslog.conf
文件指明syslogd程序纪录日志的行为,该程序在启动时查询配置文件。该文件由不同程序或消息分类的单个条目组成,每个占一行。对每类消息提供一个选择域
和一个动作域。这些域由tab隔开:选择域指明消息的类型和优先级;动作域指明syslogd接收到一个与选择标准相匹配的消息时所执行的动作。每个选项是由设备和优先级组
成。当指明一个优先级时,syslogd将纪录一个拥有相同或更高优先级的消息。
所以如果指明"crit",那所有标为critalertemerg的消息将被纪录。每行的行动域指明当选择域选择了一个给定消息后应该把他发送到哪儿。

例如,如果想把所有邮件消息纪录到一个文件中,如下:
#Log all the mail messages in one place
mail.* /var/log/maillog

其他设备也有自己的日志。UUCPnews设备能产生许多外部消息。它把这些消息存到自己的日志(/var/log/spooler)中并把级别限为"err"或更高。例如:
# Save mail and news errors of level err and higher in aspecial file.
uucp,news.crit /var/log/spooler

当一个紧急消息到来时,可能想让所有的用户都得到。也可能想让自己的日志接收并保存。
#Everybody gets emergency messages
plus log them on anther machine
*.emerg * 
*.emerg @linuxaid.com.cn

alert
消息应该写到roottiger的个人账号中:

#Root and Tiger get alert and higher messages
*.alert root,tiger

有时syslogd将产生大量的消息。例如内核("kern"设备)可能很冗长。用户可能想把内核消息纪录到/dev/console中。下面的例子表明内核日志纪录被注释掉了:
#Log all kernel messages to the console
#Logging much else clutters up the screen
#kern.* /dev/console

用户可以在一行中指明所有的设备。下面的例子把info或更高级别的消息送到/var/log/messages,除了mail以外。级别"none"禁止一个设备:
#Log anything
except mailof level info or higher
#Don log private authentication messages!
*.info:mail.none;authpriv.none /var/log/messages

在有些情况下,可以把日志送到打印机,这样网络入侵者怎么修改日志都没有用了。通常要广泛纪录日志。Syslog设备是一个攻击者的显著目标。一个为其他主机维护日志的
系统对于防范服务器攻击特别脆弱,因此要特别注意。
有个小命令loggersyslog3)系统日志文件提供一个shell命令接口,使用户能创建日志文件中的条目。用法:logger 例如:logger This is a test
它将产生一个如下的syslog纪录:Aug 19 22:22:34 tiger: This is a test! 
注意不要完全相信日志,因为攻击者很容易修改它的。
5. 程序日志
许多程序通过维护日志来反映系统的安全状态。su命令允许用户获得另一个用户的权限,所以它的安全很重要,它的文件为sulog。同样的还有sudolog。另外,想Apache有两 个日志:access_logerror_log
6.
其他日志工具
chklastlog

chkwtmp

dump_lastlog

spar


Swatch

Zap

阅读(745) | 评论(0) | 转发(0) |
0

上一篇:没有了

下一篇:LVM 基础

给主人留下些什么吧!~~