logadm 配置
使用 logadm 管理日志
如果
poold 处于活动状态,则
logadm.conf 文件将包含管理缺省文件
/var/log/pool/poold 的条目。此条目为:
/var/log/pool/poold -N -s 512k
注 –
注 –
表 15–2 syslog.conf 消息的优先级
一、有关课程设置
1、安全概述
一个好的安全管理计划应该包括
A、
安全策略
B、
物理安全
C、
平台安全
D、
网络安全
E、
应用安全
F、
安全操作和管理
我们的培训主要涉及的是
C
和
D
,系统级的安全和网络的安全。
2、安全等级的划分(桔皮书)
D
|
提供最少的保护
|
C1
|
基本的授权和认证(默认)
|
C2
|
提供审计功能,
BSM
模块被安装配置
|
B1
|
基于特殊版本的安全等级
|
B2
|
更严格的管理,需要通过专门的安全工具来实现
|
B3
|
记录所有的操作行为
|
A
|
理论化的安全
|
二、Solaris的日志文件
1、管理日志文件的几个要点
A、
定期备份日志文件,最好是每天备份
B、
在备份日志文件之后,清除已经备份的日志,防止日志文件过大
C、
定期察看日志文件,有没有异常的登陆和读取日志的情况
D、
使用过滤器过滤关注的信息,同时确保没有遗漏的日志内容
E、
发送日志到单独的日志管理服务器,并保存多份
2、几个重要的日志文件
A
、
/var/adm/lastlog
上次登陆的信息
成功登陆后可以修改登陆的信息,所以应该定期将日志拷贝到安全的地方。
B
、
/var/adm/loginlog
连续五次登陆不成功的信息,默认是未打开的。
C
、
/var/adm/utmpx
保存当前登陆到服务器的情况,
who,w,whodo,users,finger
读取的日志
D
、
/var/adm/wtmpx
用户
login
,
logout
的信息,扩展信息保存在
/etc/wtmp
下面,记录连接的类型、远程服务器的名字等,用
last
读取的日志
E
、
/var/adm/sulog su
的日志文件,配置文件是
/etc/default/su
,同样,***登陆后可以修改日志内容。
配置文件:
# more su
#ident "@(#)su.dfl 1.6 93/08/14 SMI" /* SVr4.0 1.2 */
# SULOG determines the location of the file used to log all su attempts
#
SULOG=/var/adm/sulog --
日志的位置
……
# SYSLOG determines whether the syslog(3) LOG_AUTH facility should be used
# to log all su attempts. LOG_NOTICE messages are generated for su's to
# root, LOG_INFO messages are generated for su's to other users, and LOG_CRIT
# messages are generated for failed su attempts.
#
SYSLOG=YES
日志文件:
# tail sulog
SU 05/24 12:45 + pts/1 boba-root
SU 05/24 12:45 + pts/1 boba-orapcard
SU 05/24 12:50 + pts/1 boba-root
SU 05/24 12:51 + pts/1 boba-orapcard
SU 07/04 11:00 + pts/1 boba-root
成功登陆的记录
+
SU 07/19 14:48 - pts/1 boba-root
不成功登陆的记录
-
SU 07/19 14:48 - pts/1 boba-root
SU 07/19 14:48 + pts/1 boba-root
F
、
/var/adm/messages
缺省所有的消息都会发送到控制台,并填写到该日志文件
3、配置和使用系统日志管理工具
syslog
工具的一个优点就是可以收集应用程序发送的提示信息,而不需要单独建立日志文件。对应的配置文件是
/etc/syslog.conf
。
$ ps -ef | grep syslogd
boba 524 517 0 08:49:15 pts/7 0:00 grep syslogd
root 202 1 0 08:27:47 ? 0:00 /usr/sbin/syslogd
配置文件
syslog.conf
:(需要注意的是配置文件的对应类型和执行操作之间应该是
TAB
,不是空格,否则
syslog
工具会忽略操作内容,通过
cat –vet syslog.conf
可以显示分隔符类型)
# cat /etc/syslog.conf
#ident "@(#)syslog.conf 1.5 98/12/14 SMI" /* SunOS 5.0 */
#
# Copyright (c) 1991-1998 by Sun Microsystems, Inc.
# All rights reserved.
#
# syslog configuration file.
#
# This file is processed by m4 so be careful to quote (`') names
# that match m4 reserved words. Also, within ifdef's, arguments
# containing commas must be quoted.
#
*.err;kern.notice;auth.notice /dev/sysmsg
*.err;kern.debug;daemon.notice;auth.notice;mail.crit /var/adm/messages
auth.debug /var/adm/authlogs
*.alert;kern.err;daemon.err operator
*.alert root
*.emerg *
# if a non-loghost machine chooses to have authentication messages
# sent to the loghost machine, un-comment out the following line:
#auth.notice ifdef(`LOGHOST', /var/log/authlog, @loghost)
mail.debug ifdef(`LOGHOST', /var/log/syslog, @loghost)
#
# non-loghost machines will use the following lines to cause "user"
# log messages to be logged locally.
#
ifdef(`LOGHOST', ,
user.err /dev/sysmsg
user.err /var/adm/messages
user.alert `root, operator'
user.emerg *
)
日志内容:每个
messages
由四个部分组成:
1、
program name
程序名
2、
Facility
消息的种类,包括
kernel,user,mark,auth
等
3、
Priority
优先级,紧急程度,包括
emerg,alert,crit,err,warning
等
4、
Message text
日志内容
程序类型
|
描述
|
kern
|
Kernel
|
user
|
user process
|
mark
|
Time stamp
|
auth
|
认证程序(
login,su
等)
|
daemon
|
网络后台进程(
inetd ftpd
等)
|
*
|
所有工具
|
优先级
|
描述
|
emerg
|
紧急,通常需要广播给所有的用户
|
alert
|
需要快速响应
|
crit
|
临街警告
|
err
|
其他错误
|
warning
|
警告
|
notice
|
注意
|
info
|
信息
|
debug
|
调试
|
none
|
特别的优先级,表示可以被忽略
|
低优先级默认包含高优先级的内容
修改了配置文件,需要重启进程:
pkill –HUP syslogd
# cat /var/adm/messages
Jul 4 12:02:48 bj30 sshd[1053]: [ID 702911 auth.warning] DNS lookup failed for "***.***.***.***".
Jul 4 12:02:51 bj30 sshd[1053]: [ID 702911 auth.notice] User boba's local password accepted.
Jul 4 12:02:51 bj30 sshd[1053]: [ID 702911 auth.notice] Password authentication for user boba accepted.
Jul 4 12:02:51 bj30 sshd[1053]: [ID 702911 auth.notice] User boba, coming from ***.***.***.***, authenticated.
另外还有一些配置文件需要对应修改:
1
、修改
/etc/default/login
文件的
SYSLOG=YES
以记录所有
root
登陆和多次失败的登陆尝试。
2
、修改
/etc/default/login
文件的
SYSLOG_FAILED_LOGINS=0
,记录所有失败的登陆尝试,默认值是
5
。
3
、修改
/etc/default/su
的
SYSLOG=YES
,记录所有试图
su
到
root
的操作。
# tail sc300log
Jul 19 17:17:59 bj30 sshd[173]: [ID 702911
auth.info
] connection from "***.***.***.***"
Jul 19 17:18:02 bj30 sshd[1749]: [ID 702911
auth.notice
] User boba's local password accepted.
Jul 19 17:18:02 bj30 sshd[1749]: [ID 702911 auth.notice] Password authentication for user boba accepted.
Jul 19 17:18:02 bj30 sshd[1749]: [ID 702911 auth.notice] User boba, coming from pointdb, authenticated.
Jul 19 17:18:11 bj30 su: [ID 366847 auth.notice] 'su root' succeeded for boba . /dev/pts/2
Jul 19 17:18:57 bj30 sshd[173]: [ID 702911 auth.info] connection from "***.***.***.***"
Jul 19 17:19:01 bj30 sshd[1767]: [ID 702911 auth.notice] User boba's local password accepted.
Jul 19 17:19:01 bj30 sshd[1767]: [ID 702911 auth.notice] Password authentication for user boba accepted.
Jul 19 17:19:01 bj30 sshd[1767]: [ID 702911 auth.notice] User boba, coming from pointdb, authenticated.
Jul 19 17:19:04 bj30 su: [ID 810491
auth.crit
] 'su root' failed for boba . /dev/pts/3
Syslog
工具存在一个隐患,就是他本身是不能限制接受什么日志,拒绝什么日志的,如果***可以往某一台服务器的
syslog
发送消息,就有可能恶意的发送日志,以致于把服务器的空间撑满,或者造成网络的堵塞,对于这个隐患需要进行安全管理。
4、有关日志集中管理:
优点:
1、
多个系统的复杂问题容易及时察看原因,因为所有的日志都在相同的服务器上,而不是分布在各自得服务器上。
2、
日志的备份管理简单
3、
日志监控可以集中、实时管理
4、
***不容易修改日志的内容以隐藏自己的行踪
缺点:
1、
日志文件是明文传输的,有安全隐患
2、
集中管理的服务器如果是单机,存在单点故障的隐患,建议采用多机。
配置集中管理需要修改
/etc/syslog.conf
文件:
auth.notice @loghost1
auth.notice @loghost2
修改
/etc/services
文件:
删除
syslog 514/udp
这样其他服务器就不能发送日志到本机,如果不是作为集中日志管理服务器,就需要关掉该端口,这样就防止了***恶意的发送日志到本机。
5、日志备份
日志备份通过
crontab
中的
/usr/sbin/logadm
进行:
# crontab -l
#ident "@(#)root 1.20 01/11/06 SMI"
#
# The root crontab should be used to perform accounting data collection.
#
# The rtc command is run to adjust the real time clock if and when
# daylight savings time changes.
#
10 3 * * * /usr/sbin/logadm
15 3 * * 0 /usr/lib/fs/nfs/nfsfind
1 2 * * * [ -x /usr/sbin/rtc ] && /usr/sbin/rtc -c > /dev/null 2>&1
30 3 * * * [ -x /usr/lib/gss/gsscred_clean ] && /usr/lib/gss/gsscred_clean
#10 3 * * * /usr/lib/krb5/kprop_. ___slave_kdcs___
对应的配置文件是:
/etc/logadm.conf
# cat logadm.conf
……
# The format of lines in this file is:
# <logname> <options>
/var/log/syslog -C 8 -P 'Sat Aug 6 19:10:00 2005' -a 'kill -HUP `cat /var/run/syslog.pid`'
/var/adm/messages -C 4 -P 'Wed Aug 10 19:10:00 2005' -a 'kill -HUP `cat /var/run/syslog.pid`'
…….
6、对TCP连接请求做日志处理:inetd进程
inetd
是一个监听守护进程,他监听与提供
INTERNET
服务进程(如
rlogin,telnet)
进行连接的要求,并扩展所需的服务进程。默认情况下
inetd
监听的这些
daemon
均列于
/etc/inetd.conf
文件中。
# ps -ef | grep inetd
root 126 1 0 May 24 ? 0:00 /usr/sbin/inetd -s
root 1102 1097 0 09:15:58 pts/1 0:00 grep inetd
捕获的是
daemon.notice
对应的配置文件:
/etc/default/inetd
打开纪录日志的选项,该配置文件在
solaris9
以后增加。
需要修改
ENABLE_CONNECTION_LOGGING=YES
配置文件
/etc/init.d/inetsvc
修改
inetd –s
为
inetd –s –t
表示跟踪所有的
TCP
连接服务,记录客户端
IP
地址,
TCP
端口号等等。
配置文件
/etc/syslog.conf
,表示将该进程发送的消息记录到对应得日志文件中
增加
daemon.notice /var/adm/messages
然后重启服务
/etc/init.d/inetsvc stop
/etc/init.d/inetsvc start
7、使用swatch工具监控日志文件:
免费的工具,可以从
internet
上下载。
swatch –c
配置文件
-t
需要监控的日志文件
发现监控的内容后可以执行的行为:
响铃、回写、发
mail
或者执行其他命令等
# cat /etc/swatch.conf
watchfor /REPEATED|FAILURES|Failed/
echo bold
echo inverse
bell 2
# swatch -c /etc/swatch.conf -t /var/adm/authlogs
swatch
的报警不会马上就提示,需要延迟大概
2
分钟左右。
8、进程监控工具
标准的进程监控的工具
who
显示当前谁在系统上
# who
boba pts/1 Jul 19 14:46 (pointdb)
whodo
显示当前谁在系统上做什么操作
# whodo
Tue Jul 19 16:35:45 CST 2005
bj30
pts/1 boba 14:46
pts/1 1623 0:00 sh
pts/1 1721 0:00 sh
pts/1 1734 0:00 whodo
w
显示目前谁在系统上做什么操作
# w
4:35pm up 56 day(s), 3:56, 1 user, load average: 0.02, 0.02, 0.02
User tty login@ idle JCPU PCPU what
boba pts/1 2:46pm 9 1 w
last
显示用户登录和
logout
的信息
# last
boba pts/1 pointdb Tue Jul 19 14:46 still logged in
boba pts/1 pointdb Tue Jul 19 11:39 - 13:47 (02:08)
boba pts/1 pointdb Mon Jul 18 16:56 - 19:52 (02:55)
boba pts/2 pointdb Mon Jul 18 16:43 - 18:51 (02:08)
boba pts/2 pointdb Mon Jul 18 16:40 - 16:43 (00:03)
boba pts/2 pointdb Mon Jul 18 16:35 - 16:37 (00:01)
finger
显示本地和远程用户的信息,对于某些有缺陷的版本,使用
finger 0@hostip
就可以看到某台服务器上的所有帐号。
# finger
Login Name TTY Idle When Where
boba ??? pts/1 Tue 14:46 pointdb
ps
显示进程
prstat
查看
CPU
利用率
prstat
要比
top
更加精确。它还提供了一些很好的选项。
"-a"
可以同时显示进程与用户的信息(默认由
CPU hog
排序)。
"-c"
使其执行很像
vmstat
(在前一个报告下面接着显示新的报告)。
"-C"
显示在处理器集中的进程。
"-j"
显示一个
"
工程
"
中的进程。
"-L"
显示每个线程和每个进程的信息。
"-m"
和
"-v"
显示每个进程的很多详细的性能信息(包括
pages
、
traps
、
lock wait
和
CPU wait
)。所有输出数据都可以按照在内存中设置的大小、虚拟内存大小、运行时间等等条件来排列。
# prstat
PID USERNAME SIZE RSS STATE PRI NICE TIME CPU PROCESS/NLWP
1738 root 2712K 2000K cpu1 58 0 0:00.00 0.1% prstat/1
1620 root 3144K 2232K sleep 58 0 0:00.02 0.0% sshd2/1
1456 root 1808K 1216K sleep 0 0 0:00.00 0.0% inetd/1
1721 root 312K 312K sleep 48 0 0:00.00 0.0% sh/1
1623 boba 1056K 904K sleep 58 0 0:00.00 0.0% sh/1
kill
结束异常进程
vmstat <
以秒计频率
>
列出系统负载明细
# vmstat
procs memory page disk faults cpu
r b w swap free re mf pi po fr de sr s6 s7 s9 -- in sy cs us sy id
0 0 0 2504368 450640 0 0 0 0 0 0 0 0 0 0 0 401 0 16 0 1 99
procs
报表下面三种状态的进程数:
r-- 在运行队列中等候运行
b-- 被资源阻塞( I/0 ,页面调度,等等 .)
w-- 可运行但是被换出的
memory 报告虚拟内存和实存信息:
swap-- 以千字节为单位的当前可用交换空间的数量
free-- 以千字节为单位的页自由表大小
page 报告每秒页面调度活动数量的信息 :
re- 从自由表回收页
mf-- 次要的错误 ; 地址空间或硬件地址转换错误
pi-- 页入的千字节数
po - 页出的千字节数
fr- 释放的千字节数
de-- 以千字节为单位的可接受的短期内存不足数
sr-- 页由时钟算法扫描
disk 可以为四个磁盘报告每秒磁盘 I/O 的数量
faults 报告每秒系统软件中断和硬件中断的速率
in- 设备中断,不包括系统时钟中断
sy- 系统调用
cs-CPU 任务(上下文)交换
cpu-- CPU 故障时间的百分比,在多处理器系统上,这是全部处理器的平均值 :
us- 用户时间
sy-- 系统时间
id-- 闲置时间
r-- 在运行队列中等候运行
b-- 被资源阻塞( I/0 ,页面调度,等等 .)
w-- 可运行但是被换出的
memory 报告虚拟内存和实存信息:
swap-- 以千字节为单位的当前可用交换空间的数量
free-- 以千字节为单位的页自由表大小
page 报告每秒页面调度活动数量的信息 :
re- 从自由表回收页
mf-- 次要的错误 ; 地址空间或硬件地址转换错误
pi-- 页入的千字节数
po - 页出的千字节数
fr- 释放的千字节数
de-- 以千字节为单位的可接受的短期内存不足数
sr-- 页由时钟算法扫描
disk 可以为四个磁盘报告每秒磁盘 I/O 的数量
faults 报告每秒系统软件中断和硬件中断的速率
in- 设备中断,不包括系统时钟中断
sy- 系统调用
cs-CPU 任务(上下文)交换
cpu-- CPU 故障时间的百分比,在多处理器系统上,这是全部处理器的平均值 :
us- 用户时间
sy-- 系统时间
id-- 闲置时间
使用solaris
的记帐包进行数据的收集
缺省是未打开的
缺点:
1、
不能对监控的内容进行过滤
2、
数据膨胀迅速
3、
记录要等进程结束后才可以计入数据库,执行过程中不可见。
记帐包对应的程序:
/usr/lib/acct
记账包收集的数据:
/var/adm/pacct
:包含每次进程结束时候收集的信息。
/var/adm/wtmpx
:包含登陆、退出、重启和关机操作。
/var/adm/acct/nite/disktacct
:
dodisk
命令收集的有关硬盘的信息。
记录统计的数据在:
/var/adm/acct
统计文件:
/etc/adm/acct/sum
日报
/etc/adm/acct/fiscal
月报
建立记帐系统,通过
crontab –l adm
这个用户的
crontab
执行
启动服务 :
/etc/init.d/acct start
关闭记帐服务:
/usr/lib/acct/shutacct
# cd /etc
# ln init.d/acct rc2.d/S22acct
# ln init.d/acct rc1.d/K22acct
# ln init.d/acct rcS.d/K22acct
# ln init.d/acct rc0.d/K22acct
# /etc/init.d/acct start
Starting process accounting
# crontab -l adm
30 3 * * * /usr/lib/acct/ckpacct
空间检查,避免统计消耗大量
cpu
,在
/var/adm/pacct
文件大于
500K
的时候,就会停下来,直到空间被挪出。
30 4 * * * /usr/lib/acct/runacct 2>/var/adm/acct/nite/fd2log
从白天收集的数据生成日报
30 5 1 * * /usr/lib/monacct
从每天的日报生成月报
另外一个进程用普通用户执行些只有超级用户才能执行的操作:
$ id
uid=103(boba) gid=101(oinstall)
$ cat /etc/shadow
cat: cannot open /etc/shadow
$ /usr/sbin/snoop
snoop: /dev/hme: Permission denied
用
root
帐号执行
lastcomm
命令,可以检查用户执行的操作,就可以发现用户曾经试图执行有问题的操作:
# lastcomm boba
snoop boba pts/3 0.03 secs Tue Jul 19 17:59
cat boba pts/3 0.00 secs Tue Jul 19 17:59
id boba pts/3 0.02 secs Tue Jul 19 17:59
ls boba pts/3 0.01 secs Tue Jul 19 17:59
这里只能记录用户执行了
cat
操作,但是
cat
的对象和结果都不记录。而且只能记录用户执行了
vi
的操作,但是不能知道用户执行的是标准的
vi
操作,还是经过伪装的***程序。
每次程序退出的时候,记账包都会在
/var/adm/pacct
文件中记录以下的信息:
²
UID
和
GID
是用户登录的
ID
,不是
su
操作以后的
ID
²
进程开始和结束的时间
²
User
和
kernel
的
cpu
时间
²
使用的内存总数
²
读和写的字符数量
²
命令名
三、BSM,内置的审计工具
可以定义审计的事件内容,是达到C2安全级别的标志,
solaris
内置的工具。
1、BSM的主要功能
功能:安全审计和设备的分配两个部分
安全审计:
n
用户的识别和认证
n
每个
sesssion
分配一个唯一的审计
ID
第 15 章 管理系统消息
本章介绍 Solaris 操作系统中的系统消息传送功能。
查看系统消息
系统消息显示在控制台设备中。大多数系统消息的文本如下所示:
[ID
msgid
facility.
priority]
例如:
[ID 672855 kern.notice] syncing file systems... |
如果消息来自内核,则会显示内核模块名称。例如:
Oct 1 14:07:24 mars ufs: [ID 845546 kern.notice] alloc: /: file system full |
panic: error message |
Watchdog reset ! |
错误日志守护进程
syslogd 可在消息文件中自动记录各种系统警告和错误。缺省情况下,其中许多系统消息都会在系统控制台中显示,并存储在
/var/adm 目录中。通过设置系统消息日志可以指示这些消息的存储位置。有关更多信息,请参见
自定义系统消息日志。这些消息可以提醒您系统出现问题,例如设备将要出现故障。
/var/adm 目录中包含若干个消息文件。最新消息位于
/var/adm/messages 文件中(和
messages.* 中),而最旧的消息位于
messages.3 文件中。经过一段时间后(通常为每隔十天),会创建一个新的
messages 文件。
messages.0 文件被重命名为
messages.1,
messages.1 被重命名为
messages.2,而
messages.2 被重命名为
messages.3。当前的
/var/adm/messages.3 文件将被删除。
由于
/var/adm 目录存储包含消息、故障转储和其他数据的大型文件,因此该目录可能会占用许多磁盘空间。为防止
/var/adm 目录变得过大,并确保可以保存将来的故障转储,应定期删除不需要的文件。可以使用
crontab 文件自动执行此任务。有关自动执行此任务的更多信息,请参见
如何删除故障转储文件和
第 8 章。
如何查看系统消息
-
使用 dmesg 命令显示由系统崩溃或重新引导生成的最新消息。
$ dmesg
或者,使用 more 命令逐屏显示消息。$ more /var/adm/messages
示例 15–1 查看系统消息
$ dmesg |
另请参见
有关更多信息,请参见
dmesg(1M) 手册页。
系统日志轮转
使用 root
crontab 中的一个项内的
logadm 命令,可以轮转系统日志文件。不再使用
/usr/lib/newsyslog 脚本。
系统日志轮转在
/etc/logadm.conf 文件中定义。此文件包含用于
syslogd 等进程的日志轮转项。例如,
/etc/logadm.conf 文件中的一个项指定,除非
/var/log/syslog 文件为空,否则该文件每周轮转一次。最新的
syslog 文件成为
syslog.0,下一个最新的文件成为
syslog.1,依此类推。会保留八个以前的
syslog 日志文件。
/etc/logadm.conf 文件还包含记录最后一次日志轮转发生时间的时间标记。
可以使用
logadm 命令来自定义系统日志,并可根据需要在
/etc/logadm.conf 文件中添加其他日志。
例如,要轮转 Apache 访问和错误日志,请使用以下命令:
# logadm -w /var/apache/logs/access_log -s 100m |
在此示例中,Apache
access_log 文件会在大小达到 100 MB 时进行轮转,以
.0、
.1 等作为后缀,并保留旧
access_log 文件的 10 个副本。
error_log 会在大小达到 10 MB 时进行轮转,后缀和副本数与
access_log 文件相同。
用于上述 Apache 日志轮转示例的
/etc/logadm.conf 项与以下示例类似:
# cat /etc/logadm.conf |
有关更多信息,请参见
logadm(1M)。
可以超级用户身份或通过承担等效角色(具有日志管理权限)来使用
logadm 命令。通过基于角色的访问控制 (role-based access control, RBAC),您可以通过提供对
logadm 命令的访问来授予非超级用户维护日志文件的权限。
例如,可通过向
/etc/user_attr 文件添加以下项,授予用户
andy 使用
logadm 命令的权限:
andy::::profiles=Log Management |
或者,也可以使用 Solaris 管理控制台来设置用于日志管理的角色。有关设置角色的更多信息,请参见
《系统管理指南:安全性服务》中的“基于角色的访问控制(概述)”。
自定义系统消息日志
通过修改
/etc/syslog.conf 文件,可以捕获各个系统进程生成的其他错误消息。缺省情况下,
/etc/syslog.conf 文件会将许多系统进程消息定向到
/var/adm/messages 文件。崩溃和引导消息也存储在这些文件中。要查看
/var/adm 消息,请参见
如何查看系统消息。
/etc/syslog.conf 文件有两个通过制表符分隔的列:
facility.level ... action |
-
facility.level
-
消息或情况的 工具或系统源。可能是由逗号分隔的工具列表。 表 15–1 中列出了工具值。 level,表示所记录情况的严重程度或优先级。 表 15–2 中列出了优先级。如果同一工具的两个项用于不同优先级,则不要将这两个项放在同一行中。在 syslog 文件中放置优先级表示将记录该优先级或更高优先级的所有消息,最后一条消息优先。对于给定的工具和级别, syslogd 将匹配该级别以及所有更高级别的所有消息。
action
-
操作字段表示将消息转发到的位置。
user.err /dev/sysmsg |
这意味着将自动记录以下用户消息:
-
将用户错误列显到控制台,同时将其记录到 /var/adm/messages 文件中。
-
将需要立即操作的用户消息 ( alert) 发送给超级用户和操作员用户。
-
将用户紧急消息发送给各用户。
注 –
如果在
/etc/syslog.conf 文件中多次指定一个日志目标,则将各项分别放置在不同的行中可能会导致消息的记录顺序混乱。请注意,可在一个行项中指定多个选择器,每个选择器之间用分号分隔。
下表中显示了最常见的错误情况源。
表 15–2 按严重程度显示最常见的优先级。
表 15–1
syslog.conf 消息的源工具
源
|
说明
|
---|---|
kern
|
内核
|
auth
|
验证
|
daemon
|
所有守护进程
|
mail
|
邮件系统
|
lp
|
假脱机系统
|
user
|
用户进程
|
注 –
表 15–2 syslog.conf 消息的优先级
优先级
|
说明
|
---|---|
emerg
|
系统紧急情况
|
alert
|
需要立即更正的错误
|
crit
|
严重错误
|
err
|
其他错误
|
info
|
提示性消息
|
debug
|
用于调试的输出
|
none
|
此设置不记录输出
|
如何自定义系统消息日志
-
成为超级用户或承担等效角色。角色包含授权和具有一定权限的命令。有关角色的更多信息,请参见 《系统管理指南:安全性服务》中的“配置 RBAC(任务列表)”。
编辑
/etc/syslog.conf 文件,根据
syslog.conf(4) 中介绍的语法添加或更改消息源、优先级和消息位置。
退出文件,保存更改。
示例 15–2 自定义系统消息日志
此样例
/etc/syslog.conf
user.emerg 工具可向超级用户
和个人用户发送用户紧急消息。
user.emerg `root, *' |
启用远程控制台消息传送
以下新增控制台功能可以提高您对远程系统进行故障排除的能力:
-
利用 consadm 命令,您可以选择串行设备作为 辅助(或远程)控制台。使用 consadm 命令,系统管理员可以配置一个或多个串行端口,以便当系统在不同运行级之间转换时显示重定向的控制台消息,并托管 sulogin 会话。借助此功能,您可用调制解调器拨入并连接到串行端口,以监视控制台消息并参与 init 状态转换。(有关更多信息,请参见 sulogin(1M) 和后面的逐步过程。)使用配置为辅助控制台的端口登录系统时,它主要用作输出设备,其中显示的信息也在缺省控制台中显示。如果引导脚本或其他应用程序从缺省控制台中读取 内容或向其中写入内容,则写入输出将在所有辅助控制台上显示,但输入只从缺省控制台中读取。(有关在交互式登录会话过程中使用 consadm 命令的更多信息,请参见 在交互式登录会话期间使用 consadm 命令。)
-
控制台输出包括内核和写入新的伪设备 /dev/sysmsg 的 syslog 消息。此外, rc 脚本启动消息也将写入 /dev/msglog。以前,所有这些消息都写入 /dev/console。如果希望看到显示在辅助控制台中的脚本消息,那么需要把将控制台输出定向到 /dev/console 的脚本更改为 /dev/msglog。如果希望将消息重定向到辅助设备,则应该将引用 /dev/console 的程序显式修改为使用 syslog() 或 strlog()。
-
consadm 命令运行守护进程来监视辅助控制台设备。指定为辅助控制台并且已断开、挂起或失去载体的任何显示设备都将从辅助控制台设备列表中删除,并且不再处于活动状态。启用一个或多个辅助控制台不会禁用缺省控制台上的消息显示,消息将继续在 /dev/console 中显示。
在运行级转换期间使用辅助控制台消息传递
在运行级转换期间使用辅助控制台消息传递时,请记住以下几点:
-
如果在系统引导时运行的 rc 脚本期望用户输入,则输入不能来自辅助控制台。输入必须来自缺省控制台。
-
由 init 调用以用于在运行级之间转换时提示输入超级用户口令的 sulogin 程序已被修改,除了缺省控制台设备之外,还可以向每个辅助设备发送超级用户口令提示。
-
当系统处于单用户模式并且使用 consadm 命令启用一个或多个辅助控制台时,将在第一个设备上运行控制台登录会话,以便为 sulogin 提示提供正确的超级用户口令。从控制台设备收到正确口令时, sulogin 将禁用来自所有其他控制台设备的输入。
-
如果其中一个控制台承担了单用户特权,将在缺省控制台和其他辅助控制台上显示一条消息。此消息指出已通过接受正确的超级用户口令而成为控制台的设备。如果运行单用户 shell 的辅助控制台中丢失载体,则会执行以下两种操作之一:
-
如果辅助控制台代表一个处于运行级 1 的系统,则系统会继续到缺省运行级。
-
如果辅助控制台代表一个处于运行级 S 的系统,则系统会显示已通过 Shell 输入 init s 或 shutdown 命令的设备中的 ENTER RUN LEVEL (0-6, s or S): 消息。如果该设备中也没有任何载体,则必须重新建立载体并输入正确的运行级。 init 或 shutdown 命令不再重新显示运行级提示。
-
-
如果使用串行端口登录系统,并发出 init 或 shutdown 命令以转换到其他运行级,则无论此设备是否为辅助控制台,登录会话都将丢失。此情况与没有辅助控制台功能的 Solaris 发行版相同。
-
一旦使用 consadm 命令将设备选作辅助控制台,该设备将一直用作辅助控制台,直到重新引导系统或取消选中辅助控制台。但是, consadm 命令有一个选项,可在系统重新引导期间将设备设置为辅助控制台。(有关逐步说明,请参见以下过程。)
在交互式登录会话期间使用 consadm 命令
如果要通过使用与串行端口连接的终端登录系统,再使用
consadm 命令查看终端的控制台消息的方式来运行交互式登录会话,请注意以下行为。
-
如果在辅助控制台处于活动状态时将终端用于交互式登录会话,则会向 /dev/sysmsg 或 /dev/msglog 设备发送控制台消息。
-
在终端发出命令时,输入将转到交互式会话而非缺省控制台 ( /dev/console)。
-
如果运行 init 命令更改运行级,远程控制台软件将中止交互式会话并运行 sulogin 程序。此时,只接受来自终端的输入,并将其视为来自控制台设备的输入。这样您便可以按 在运行级转换期间使用辅助控制台消息传递中所述为 sulogin 程序输入口令。然后,如果您在(辅助)终端中输入正确口令,辅助控制台将运行交互式 sulogin 会话,并锁定缺省控制台和任何竞争性的辅助控制台。这意味着,终端基本上可用作系统控制台。
-
此时,您可以更改到运行级 3 或转到其他运行级。如果更改运行级, sulogin 将在所有控制台设备中再次运行。如果您退出或指定系统应达到运行级 3,则所有辅助控制台都将丧失提供输入的能力。它们将恢复为控制台消息的显示设备。随着系统的提升,您必须为缺省控制台设备中的 rc 脚本提供信息。在系统恢复启动后, login 程序将在串行端口上运行,您可以重新登录到其他交互式会话中。如果已将该设备指定为辅助控制台,您将继续在终端中获得控制台消息,但来自该终端的所有输入都将转至交互式会话。
如何启用辅助(远程)控制台
在您使用
consadm 命令添加辅助控制台之前,
consadm 守护进程不会开始监视端口。作为一种安全功能,在载体脱机或取消选择辅助控制台设备之前,控制台消息只能重定向。这意味着必须在端口中建立载体,才能成功使用
consadm 命令。
有关启用辅助控制台的更多信息,请参见
consadm(1m) 手册页。
以超级用户身份登录系统。
启用辅助控制台。
# consadm -a devicename |
验证当前连接是否为辅助控制台。
# consadm |
示例 15–3 启用辅助(远程)控制台
# consadm -a /dev/term/a |
如何显示辅助控制台的列表
以超级用户身份登录系统。
选择以下步骤之一:
显示辅助控制台的列表。
# consadm |
显示持久性辅助控制台的列表。
# consadm -p |
如何在系统重新引导期间启用辅助(远程)控制台
以超级用户身份登录系统。
在系统重新引导期间启用辅助控制台。
# consadm -a -p devicename |
这将会向持久性辅助控制台列表中添加设备。
验证设备是否已添加至持久性辅助控制台的列表中。
# consadm |
示例 15–4 在系统重新引导期间启用辅助(远程)控制台
# consadm -a -p /dev/term/a |
如何禁用辅助(远程)控制台
以超级用户身份登录系统。
选择以下步骤之一:
禁用辅助控制台。
# consadm -d devicename |
或
禁用辅助控制台并从持久性辅助控制台列表中将其删除。
# consadm -p -d devicename |
验证是否已禁用辅助控制台。
# consadm |
示例 15–5 禁用辅助(远程)控制台
# consadm -d /dev/term/a
# consadm
转载于:https://blog.51cto.com/dxwang/125476