Linux服务器 -- 日志篇

志对于安全来说,非常重要,它记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等。正因为如此,抚琴煮酒特的将它整理成一篇比重跟硬件篇网络篇并列的文章,作为《明明白白你的Linux服务器》系列的第三篇,希望大家能从中学习到对自己有用的东西。

一、配置syslog(gyl4802959同学撰写)

目前,linux依旧使用syslogd作为日志监控进程,对其进行必要的配置能减少很多麻烦,并且可更有效的从系统日志监控到系统的状态。理解并完善一个syslog的配置,对于系统管理员来说显得尤为重要。
/etc/syslog.conf根据如下的格式定义规则:
facility.level action
设备.优先级 动作facility.level
字段也被称为seletor(选择条件),选择条件和动作之间用空格或tab分割开。
#号开头的是注释,空白行会自动跳过。

1、facility

facility定义日志消息的范围,其可使用的key有: auth -由 pam_pwdb 报告的认证活动。
authpriv -包括特权信息如用户名在内的认证活动
cron -与 cron 和 at 有关的计划任务信息。
daemon -与 inetd 守护进程有关的后台进程信息。
kern -内核信息,首先通过 klogd 传递。
lpr -与打印服务有关的信息。
mail -与电子邮件有关的信息
mark - syslog内部功能用于生成时间戳
news -来自新闻服务器的信息
syslog -由 syslog 生成的信息
user -由用户程序生成的信息
uucp -由 uucp 生成的信息
local0-local7 -与自定义程序使用

* 通配符代表除了 mark 以外的所有功能除mark为内部使用外,还有security为一个旧的key定义,等同于auth,已经不再建议使用。

2、level级别

level定义消息的紧急程度。按严重程度由高到低顺序排列为: emerg -该系统不可用,等同panic
alert -需要立即被修改的条件
crit -阻止某些工具或子系统功能实现的错误条件
err -阻止工具或某些子系统部分功能实现的错误条件,等同error
warning -预警信息,等同warn
notice -具有重要性的普通条件
info -提供信息的消息
debug -不包含函数条件或问题的其他信息
none -没有重要级,通常用于排错

* 所有级别,除了none其中,panic、error、warn均为旧的标识符,不再建议使用。
在定义level级别的时候,需要注意两点:
1)优先级是由应用程序在编程的时候已经决定的,除非修改源码再编译,否则不能改变消息的优先级;

低的优先级包含高优先级,例如,为某个应用程序定义info的日志导向,则涵盖notice、warning、err、crit、alert、emerg等消息。(除非使用=号定义)

3、selector选择条件

通过小数点符号“.”把facility和level连接在一起则成为selector(选择条件)。
可以使用分号“;”同时定义多个选择条件。也支持三个修饰符: * - 所有日志信息
= - 等于,即仅包含本优先级的日志信息
! - 不等于,本优先级日志信息除外

4、action动作

由前面选择条件定义的日志信息,可执行下面的动作: file-指定日志文件的绝对路径
terminal 或 print -发送到串行或并行设备标志符,例如/dev/ttyS2
@host -远程的日志服务器
username -发送信息本机的指定用户信息窗口中,但该用户必须已经登陆到系统中
named pipe -发送到预先使用 mkfifo 命令来创建的 FIFO 文件的绝对路径※注意,不能通过“|/var/xxx.sh”方式导向日志到其他脚本中处理。

5、举例

例如: *.info;mail.none;news.none;authpriv.none;cron.none /var/log/messages
#把除邮件、新闻组、授权信息、计划任务等外的所有通知性消息都写入messages文件中。
mail,news.=info /var/adm/info
#把邮件、新闻组中仅通知性消息写入info文件,其他信息不写入。
mail.*;mail.!=info /var/adm/mail
#把邮件的除通知性消息外都写入mail文件中。
mail.=info /dev/tty12
#仅把邮件的通知性消息发送到tty12终端设备
*.alert root,joey
#如果root和joey用户已经登陆到系统,则把所有紧急信息通知他们
*.* @finlandia
#把所有信息都导向到finlandia主机(通过/etc/hosts或dns解析其IP地址)※注意:每条消息均会经过所有规则的,并不是唯一匹配的。

也就是说,假设mail.=info信息通过上面范例中定义的规则时,/var/adm/info、/var/adm/mail、/dev/tty12,甚至finalandia主机都会收到相同的信息。这样看上去比较烦琐,但可以带来的好处就是保证了信息的完整性,可供不同地方进行分析。

二、messages日志

首先说下我们最关注的系统/var/log/messages,这东东不仅是咱们服务器的系统日志,很多时候它也做了许多服务的日志,这也是它被称为杂货铺的原因,值得重点关注,大家一般都喜欢用以下命令看最后十条日志

tail -n10 /var/log/messages

其实还可以将一段日志保存成文件,正用练下自己的awk、sed和grep水平;或者直接用vim来查看,这也是算是一种经验之谈吧。我以前配置bind的主从复制,有时因为权限的原因报错;这时可以在一台报错的服务器上用命令tail
-f
/var/log/messages实时查看服务器的变化情况,从中查找错误的蛛丝马迹;事实证明,效果很好,而且用于lvs+keepalived的排错效也不错,其它事例依此类推。

三、secure的用法

/var/log/secure:记录登入系统存取数据的文件,例如 pop3, ssh, telnet, ftp
等都会被记录,我们可以利用此文件找出不安全的登陆IP。

四、记录登陆者的数据

/var/log/wtmp:记录登入者的讯息数据,由于本文件已经被编码过(为二进制文件),所以必须使用
last指令来取出文件的内容,你用cat等命令直接查看此文件是不行的。

五、lastlog记录系统时间

/var/log/lastlog : 记录每个使用者最近签入系统的时间, 因此当使用者签入时, 就会显示其上次签入的时间,您应该注意一下这个时间,
若不是您上次签入的时间, 表示您的帐号可能被人盗用了。 此档可用 /usr/bin/lastlog
指令读取(Freebsd下为/usr/sbin/lastlogin)。

六、用dmesg查看启动消息 

dmesg提供了一个简单的方法查看系统启动信息。当Linux启动的时候,内核的信息被存入内核ring缓存当中,dmesg可以显示缓存中的内容。默认情况下,dmesg打印内容到屏幕上面,当然你可以重定向输出到一个文件。如果硬件损坏的话,在dmesg日志里是有显示的,可用以下命令来查看dmesg
| grep error

七、服务器的邮件日志

服务器的邮件为/var/log/messages,如果要用专业的日志分析工具来分析的话,我推荐用Awstats;由于公司的开发对邮件的要求比较低,所以我帮他们配置的就是最简单的sendmail,有时看看邮件日志里的status状态来判断邮件到底有没有正确发送;在配置Nagios服务器,我也习惯用此日志来判断报警邮件到底有没有发送,如果对自己的shell水平足够自信,也可以写脚本来收集邮件服务器的返回状态等,但专业的事情,建议还是由专业的工具来做,特别是邮件负载比较大时,每天几百万条日志或上千万条日志不是开玩笑的。

八、日志文件的专业工具

像系统的一些服务,比如Apache、Nginx、Squid、还有mysql,都有自己的特定的日志文件,由于格式比较复杂,也推荐用专业工具,如Awstats、Cacti来分析,现在用cacti用得比较多是用它分析Nginx负载均衡器的一段时间的并发情况。

九、输出Iptables日志到一个指定的文件(logboy同学撰写)

Iptables的man参考页中提到: 我们可以使用Iptables在Linux内核中建立, 维护和检查IP包过滤规则表。几个不同的表可能已经创建,
每一个表包含了很多内嵌的链,
也可能包含用户自定义的链。Iptables默认把日志信息输出到/var/log/messages文件。不过一些情况下你可能需要修改日志输出的位置。下面向大家介绍如何建立一个新的日志文件/var/log/iptables.log。通过修改或使用新的日志文件,
你可以创建更好的统计信息或者帮助你分析网络攻击信息。

(1). Iptables默认的日志文件

例如, 如果你输入下面的命令, 屏幕将显示/var/log/messages文件中的Iptables日志信息:

# tail -f /var/log/messages

输出:

Oct 4 00:44:28 debian gconfd (vivek-4435):
Resolved address "xml:readonly:/etc/gconf/gconf.xml.defaults"
to a read-only configuration source at position 2
Oct 4 01:14:19 debian kernel:
IN=ra0 OUT= MAC=00:17:9a:0a:f6:44:00:08:5c:00:00:01:08:00
SRC=200.142.84.36 DST=192.168.1.2
LEN=60 TOS=0x00 PREC=0x00 TTL=51 ID=18374
DF PROTO=TCP SPT=46040 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0 

(2).输出Iptables日志信息到一个指定文件的方法

打开你的/etc/syslog.conf文件:

# vi /etc/syslog.conf

在文件末尾加入下面一行信息:

kern.warning /var/log/iptables.log

保存和关闭文件。

重新启动Syslogd(如果你使用Debian/Ubuntu Linux):

# /etc/init.d/sysklogd restart

另外, 使用下面命令重新启动Syslogd(如果你使用Red Hat/Cent OS/Fedora Core Linux):

# /etc/init.d/syslog restart现在确认你的Iptables使用了log-level
4参数(前面有一个log-prefix标志)。例如:

# DROP everything and Log it
iptables -A INPUT -j LOG –log-level 4
iptables -A INPUT -j DROP

举一个例子, 丢弃和记录所有来自IP地址65.55.11.2的连接信息到/var/log/iptables.log文件。

iptables -A INPUT -s 64.55.11.2 -m limit
limit 5/m --limit-burst 7 -j LOG
log-prefix ‘** HACKERS **’ --log-level 4
iptables -A INPUT -s 64.55.11.2 -j DROP 

命令解释:

log-level 4: 记录的级别. 级别4为警告(warning)。

log-prefix ‘*** TEXT ***’: 这里定义了在日志输出信息前加上TEXT前缀。TEXT信息最长可以是29个字符,
这样你就可以在记录文件中方便找到相关的信息。

现在你可以通过/var/log/iptables.log文件参考Iptables的所有信息:

# tail -f /var/log/iptables.log

十、日志轮询

再说下日志的轮询,Linux的日志轮询机制做得相当好,当然我们也可以通过配置/etc/logrotate.conf来修改它,有兴趣的同学可参考鸟哥的文章,这里就不作详细介绍了。

参考: http://os.51cto.com/art/201007/211455.htm

时间: 2025-01-14 00:18:08

Linux服务器 -- 日志篇的相关文章

Linux服务器 -- 网络篇

希望大家看完此文后,能很清楚明白你的服务器的网络情况,能很轻松的配置其网络环境.Linux服务器在装完系统,配置其网络环境是每一个system administrator的职能. 一.服务器的网络配置 在服务器的网络配置时,喜欢图形的朋友可用setup或system-config-network来配置. 网卡配置文件为/etc/sysconfig/network-scripts/ifcfg-eth0,设置完毕后直接用service network restart生效 [[email protec

Linux服务器 -- 硬件篇

身为系统管理员,如何做到时刻对自己服务器的各方面状态性能等信息都有足够的了解? 你如何能很清楚你目前的Linux服务器(10-100台)的状态性能等信息 ? 一.如何查看服务器的CPU 判断依据: 1.具有相同core id的cpu是同一个core的超线程.(Physical id and core idare not necessarily consecutive but they are unique. Any cpu with the same coreid are hyperthread

Linux服务器 -- 故障篇

故障一. 今天早上来的第一件事,就是检查昨天晚上刚刚重新安装的一台64位的CentOS 5.5服务器,那台服务器是四块硬盘作的二个RAID1,一个专用于OS,一个用于data, 在安装系统的过程中,为了不损失数据,data分区我碰也碰过,今天用root进系统后,我用mount /dev/mapper/ddf1_datap1 /data进行挂载,很顺利的挂载上去了,结果进去用ll命令一看,我靠,文件全出错了,都不正常了,吓我一跳,data分区里有的数据很重要,特别是mysql数据库,我问了下同事,

linux之日志篇

rsyslog linux系统中用来实现日志功能的服务称为rsyslog,是早期syslog服务的增强版本,默认情况下是自动安装,并启动的. 1.启动服务 [[email protected] log]# service rsyslog start 2.配置文件 [[email protected] log]# more /etc/rsyslog.conf 基本格式: facility.priority log_location [[email protected] log]# more /et

Linux服务器日志备份到本地

1.确定线上服务器的日志文件名称和路径 2.一台本地服务器能连接公网,创建一个日志账户,设置密码 3.线上服务器要求: a.确定是否已安装sshpass包 [[email protected] sh]# rpm -qa|grep sshpass sshpass-1.06-1.el7.x86_64 如不存在即安装yum install -y sshpass b.写脚本传送 Such as: [[email protected] ~]# cat logbak.sh #!/bin/bash cd /o

NAT(未验证,后续见Linux服务器架构篇)

通常小型企业或是学校单位大多数仅有一条对外的联机,然后全公司内的计算机全部通过这条联机连到因特网上,此时我们更需使用IP分享器来让这一条对外联机分享给所有公司内部员工使用,那么Linux能不能达到此一IP分享的功能呢?当然可以,就是透过NAT服务即可达到这项任务. 这种环境中,由于Linux作为一个内外分离的实体,因此网络流量会比较大一点,此时Linux主机的网络卡就需要比较好些的配置.其他的CPU.RAM.硬盘等的影响就小很多.事实上,单利用Linux作为NAT主机来分享IP是很不明智的,因为

linux服务器日志转储

配置好项目之后,Apache,MySQL等会产生日志,为了方便管理,将其按照一定的间隔时间进行转储 1.Apache日志 在配置文件中加入以下两句: CustomLog"|/usr/sbin/rotatelogs /var/log/httpd/access-80.log.%Y%m%d 86400 540"combined ErrorLog"|/usr/sbin/rotatelogs /var/log/httpd/error-80.log.%Y%m%d 86400 540&qu

Linux服务器部署系列之七—OpenLDAP篇

LDAP(轻量级目录访问服务),通过配置这个服务,我们也可以在linux下面使用目录的形式管理用户,就像windows下面的AD一样,方便我们管理.下面我们就一起来配置openldap服务.本文运行环境:CentOS 5. 软件需求: db-4.7.25.tar.gz(http://www.oracle.com/technology/global/cn/software/products/berkeley-db/index.html) openldap-stable-20090411.tgz (

Linux随笔-鸟哥Linux服务器篇学习总结(全)

鸟哥Linux服务器篇学习总结 作者:Danbo 时间:2015-7-17 在runlevel3启动级别下默认启动网络挂载(autofs)机制,我们可以通过命令将其关闭:chkconfig autofs off 或者 /etc/init.d/autofs stop将其关闭. 查询启动在网络监听的服务:netstat -lntup[[email protected] ~]# netstat -lnutpActive Internet connections (only servers)Proto