分类: LINUX
2010-03-10 15:35:01
目的:纪录系统和用户事件,并对审计过程自身进行保护。这里值得注意的就是纪录事件的细度。Solaris提供了很强大的审计功能,甚至可以纪录每一条调试信息,但是这样做是不明智的,因为很多信息对用户没用,而且会使系统性能下降。审计细度需要管理员根据用途和需要自行订制。
实现:
1. 查看日志
1)history文件
通常在根目录下,隐藏文件,记录了root执行的命令
2)/var/adm
messages:记载来自系统核心的各种运行日志,可以记载的内容是由/etc/syslog.conf决定的
sulog:记载着普通用户尝试su成为其它用户的纪录。它的格式为: 发生时间 +/-(成功/失败) pts号
utmpx:这两个文件是不具可读性的,它们记录着当前登录在主机上的用户,管理员可以用w,who等命令来看
wtmpx:相当于历史纪录,记录着所有登录过主机的用户,时间,来源等内容,可用last命令来看
3)/var/log
syslog文件,这个文件的内容一般是纪录mail事件的
2. syslog
1)实时错误检查:
tail –f /var/adm/messages
-f在监视器上允许看见每条记录 /var/adm/messages记录事件路径
2)/etc/syslog.conf语法:
*.err;kern.debug;deamon.notice;mail.crit /var/adm/messages
工具认可的值
user 用户进程产生的消息。这是来自没有在文件列表中的设备的消息的默认 优先级 kern 由内核产生的消息 mail 邮件系统 daemon 系统守护进程 auth 授权系统,如login、su lpr 行式打印机假脱机系统 news 网络新闻系统USENET保留值 uucp 为UUCP系统保留值,目前UUCP不使用syslog机制 cron Cron/at工具;crontab、at、cron local0-7 为本地使用保留 mark 内部用于由syslog产生的时间戳消息 * 除标记工具之外的所有工具 级别认可的值(按重要性降序排列) emerg 用于通常必须广播给所有用户的恐慌情况 alert 必须立即被修正的情况,例如被损坏的系统数据库 crit 用户对关键情况的告警,例如设备错误 err 用于其他错误 warning 用于所有的警告信息 notice 用于没有错误但是可能需要特别处理的情况。 info 通知消息 debug 用于通常只在调试时才使用的消息 none 不发送从指出的设备发来的消息到选定文件中 |
3) 例如如果要纪录登录信息(telnet),可以这样做:
/etc/default/login中:SYSLOG=YES
/etc/syslog.conf中添加:auth.notice /export/home/wangyu/log
(把日志记录在/export/home/wangyu/log文件中,中间不是空格,是Tab)
重新启动syslog守护进程
当telnet上去的时候,我们看到/export/home/wangyu/log中有:
Sep 11 10:07:25 hlstar login: [ID 254462 auth.notice] ROOT LOGIN /dev/pts/1 FROM 192.168.0.9
. Loghost
编辑/etc/syslog.conf,语法:
*.err;kern.debug;deamon.notice;mail.crit @loghost
(记录登录信息)
重新启动syslog守护进程
假设这次我们使用linux做日志主机:
[root@wangyu root]#/sbin/setup
打开配置界面-->;firewall configuration-->;custom-->;other ports:
写入 syslog:udp
重新启动防火墙
/etc/init.d/iptables restart或者/etc/init.d/ipchains restart
设置loghost接收网络日志数据,修改/etc/sysconfig/syslog配置文件:
修改 SYSLOGD_OPTIONS="-m 0" 为 SYSLOGD_OPTIONS="-r -m 0"
重新启动syslog守护进程
此时/var/log/messages最下端附近会看到类似下面的信息
Aug 11 21:20:30 logserver syslogd 1.3-3: restart. (remote reception)
当telnet上去的时候,我们看到/var/log/messages中有类似下面的信息:
Sep 5 11:08:31 mastadon login: [ID 507249 auth.notice] Login failure on /dev/pts/3 from 192.168.0.9, root
4. 记帐
Solaris操作系统可以通过设置日志文件可以对每个用户的每一条命令进行纪录,这一功能默认是不开放的
运行/usr/lib/acct/accton [路径][文件名]
(如/usr/lib/acct/accton /export/home/wangyu/test,将日志记录到test中)
查看的时候将文件移动到/var/adm目录下,改名为pacct
执行查看命令lastcomm(比如查看用户root,用命令lastcomm root)
5. BSM
1)开启BSM:
# init 1(重新引导或改变运行级别到单用户状态)
#/etc/security/bsmconv(运行BSM初始化脚本,开启审计功能)
# reboot(重新启动系统,或者Ctrl+D改变到多用户状态)
2)关闭BSM审计功能:
# init 1
# /etc/security/bsmunconv
# reboot
3)配置文件的功能:
BSM所有的配置文件都存放在/etc/security目录下( (4)代表详细信息察看man (4) ):
audit_class(4)
审计类别定义
audit_control(4)
审计进程控制信息
audit_data(4)
审计进程当前信息
audit.log(4)审计日志格式
audit_event(4)
时间定义到类别的映射文件
audit_user(4)
按用户审计时的用户定义文件
除了上面的配置文件之外,系统中还有一些用于BSM管理的脚本。
audit_startup(1M)
启动BSM进程运行。
auditconfig(1M)
读取配置文件,重新配置audit进程。
auditd(1M)
审计监控服务。
auditreduce(1M)
审计事件日志管理,可以调整日志格式,生成时间周期等信息。
auditstat(1M)
先是内核审计进程状态。
bsmconv(1M)
开启BSM功能。
bsmunconv(1M)
关闭BSM功能。
praudit(1M)
打印BSM审计日志内容。
BSM应用
在默认配置情况下,BSM每天(24小时)会生成一个以当天日期为名字的审计日志,存放在/var/audit目录下,这个文件具有自己的数据结构,所以直接查看时是乱码,必须使用系统命令 praudit来查看。
# praudit /var/audit/xxxxxx.xxxxxx.log
另一个可能用到的命令是auditreduce ,这个命令允许管理员对审计日志做一些设置,例如调整审计事件集或调整审计日志生成周期等等。auditreduce和praudit是系统中BSM管理最基本的两个命令,组合起来可以完成相当多的功能:
用管道联合两个命令,会显示系统中所有的历史审计事件。
# auditreduce | praudit
再加上lp,将把所有审计事件直接打印出来。
# auditreduce | praudit | lp
如果系统中有相当多的审计信息的话,查找将是非常困难的事情,这条命令可以按照yymmdd的时间格式显示目标时间段内的审计事件,范例为显示April 13, 1990, 用户fred的 登录类别 审计事件集。
# auditreduce -d 900413 -u fred -c lo | praudit
过滤目标时间所有的登录日志信息(Class:lo),并且输出到一个单独的日志文件中:
# auditreduce -c lo -d 870413 -O /usr/audit_summary/logins
auditreduce的 -b 和 -a 选项允许用户按照 yyyymmdd00:00:00 的时间格式制定一个时间段(Before & After)。
# auditreduce -a 91071500:00:00 | praudit
# auditreduce -b 91071500:00:00 | praudit
5)管理工具:
eXpert-BSMTM
一个很强大的商业BSM分析工具,不过目前也可以免费使用,支持Solaris 7/8 (Sparc|Intel)平台,可以在下面地址下载。
Sun WBEM
Solaris内置的图形界面管理工具,也就是AdminConsole,在WBEM 2.3之后的版本支持对BSM信息的管理。可以用下面命令开启:
# /usr/sadm/bin/wbemadmin(第一次运行时会安装一系列的管理脚本)
# /usr/sadm/bin/smc(开启管理终端)
以上,对Solaris审计系统进行了配置,相信大部分用户行为和入侵行为都被记录下来了,并且对日志自身也进行了一定保护。如果管理员能及时分析日志,相信可以捕获大部分入侵企图和行为。