文章目录
日志管理的意义
日志对于安全来说,非常重要,他记录了系统每天发生的各种各样的事情,你可以通过他来检查错误发生的原因,或者受到攻击时攻击者留下的痕迹。
日志主要的功能有:审计和监测。他还可以实时的监测系统状态,监测和追踪侵入者等等
一般情况下我们的日志主要放在哪里?
[root@localhost ~]# ls /var/log/
anaconda.ifcfg.log ConsoleKit mysqld.log sssd
anaconda.log cron ntpstats tallylog
anaconda.program.log cups pm-powersave.log tomcat6
anaconda.storage.log dmesg ppp wpa_supplicant.log
anaconda.syslog dracut.log prelink wtmp
anaconda.xlog gdm sa Xorg.0.log
anaconda.yum.log httpd samba Xorg.9.log
audit lastlog secure yum.log
boot.log maillog spice-vdagent.log
btmp messages spooler
[root@localhost ~]#
常用的日志文件:
btmp 记录登录失败的信息
lastlog 记录最近几次登录事件和最后一次不成功的登录
messages 从syslog 记录信息(有的链接到syslog文件)
utmp 记录当前登录的每一个用户
whmp 系统登录情况: 登入登出
登录信息查看
last 查看登录日志内容
[root@localhost ~]# last
root pts/1 192.168.148.1 Sat Sep 28 02:08 still logged in
root pts/0 :0.0 Sat Sep 28 02:07 still logged in
root pts/0 :0.0 Sat Sep 28 02:04 - 02:06 (00:02)
清空日志文件
[root@localhost ~]# > /var/log/wtmp
[root@localhost ~]# last
wtmp begins Sat Sep 28 02:18:35 2019
[root@localhost ~]#
/var/log/lastlog 查看最后登录信息
记录的是所有的用户什么时候登录过系统
[root@localhost ~]# lastlog
用户名 端口 来自 最后登陆时间
root pts/1 192.168.148.1 六 9月 28 02:08:16 +0800 2019
bin **从未登录过**
daemon **从未登录过**
adm **从未登录过**
lp **从未登录过**
/var/log/btmp 用户登录系统的错误信息
[root@localhost ~]# lastb //查看登录失败的信息
root ssh:notty 192.168.148.1 Sat Sep 28 02:26 - 02:26 (00:00)
root ssh:notty 192.168.148.1 Sat Sep 28 02:26 - 02:26 (00:00)
root ssh:notty 192.168.148.1 Sat Sep 28 02:26 - 02:26 (00:00)
btmp begins Sat Sep 28 02:26:24 2019
[root@localhost ~]#
备注: 巡检 , 发现/var/log/btmp 变得很大。说明有人在对你的服务器进行暴力破解
怎么查看一个文件的大小
[root@localhost ~]# ll -h /var/log/btmp
-rw-------. 1 root utmp 1.2K 9月 28 02:26 /var/log/btmp
又模拟一下输错命令之后,查看文件大小
[root@localhost ~]# ll -h /var/log/btmp
-rw-------. 1 root utmp 2.3K 9月 28 02:30 /var/log/btmp
日志的记录方式
日志的种类:
daemon 后台进程相关
kern 内核产生的信息
lpr 打印系统产生的
authpriv 安全认证
cron 定时相关
mail 邮件相关
syslog 日志服务本身的
news 新闻系统
local0~7 自定义的日志设备
local 0->local 7 8个系统保留的类, 供其它的程序使用 /或者是用户自定义
日志级别: 重–轻
0. emery 紧急, 内核崩溃等严重的信息
1. alert 警报: 需要立刻修改的信息
2. crit 关键的错误,已经影响到了整个的系统或者软件不能正常工作的信息
3. err 错误,阻止某个模块或者程序的功能不能正常使用
4. warning 警告
5. notice 注意,正常但是重要的信息
6. info 正常的信息,一般的信息,最常用的
7. debug 调试级的信息,日志信息最多
日志服务:
rhel5
服务名称: syslog
配置文件: /etc/syslog.conf
RHEL6-RHEL7
服务名称: rsyslog
配置文件: /etc/syslog.conf
打开文件 /etc/syslog.conf
配置文件:
MODULES 日志的模块
$ModLoad imuxsock 支持本地系统日志的模块
$ModLoad imklog 支持内核日志的模块
$ModLoad immark 支持日志标记
$ModLoad imudp 支持upd协议
$UDPServerRun 514 允许514端口接收使用udp和tcp协议转发过来的日志
$ModLoad imtcp 支持tcp协议
[root@localhost ~]# vim /etc/rsyslog.conf
#### RULES ####
# Log all kernel messages to the console.
# Logging much else clutters up the screen.
#kern.* /dev/console
// 内核类型的所有级别的日志 存放到 ——> /dev/consloe
# Log anything (except mail) of level info or higher.
# Don't log private authentication messages!
*.info;mail.none;authpriv.none;cron.none /var/log/messages
// 所有类型的级别是info以上,除了mail,authpiv, cron,
mail , authpiv ,cron放在哪里
authpriv.* 认证的信息–>存放–> /var/log/secure
mail.* 邮件相关的信息->存放–> -/var/log/maillog
cron.* 计划任务相关的信息–>存放–> /var/log/cron
local7.* 开机时显示的信息–>存放–> /var/log/boot.log
日志输入的规则:
-info 高于info级别的信息全部都记录到某个文件里去
.= 级别 仅记录等于某个级别的日志
举例: .=info 只记录 info 级别的日志
.! 级别 除了某个级别意外,记录所有级别信息
举例: .!err 除了err级别,别的级别都记录
.none 指的是排除某个类别
实战案例:
自定义ssh 服务的日志
1) 编辑rsyslog的配置文件
# Save boot messages also to boot.log
local7.* /var/log/boot.log
local0.* /var/log/sshd.log
# ### begin forwarding rule ###
# The statement between the begin ... end define a SINGLE forwarding
2) 定义ssh服务的日志级别
[root@192 ~]# vim /etc/ssh/sshd_config
添加
# ForceCommand cvs server
SyslogFacility local0
3) 启动rsyslog和sshd服务
[root@192 ~]# systemctl restart rsyslog
[root@192 ~]# systemctl restart sshd
[root@192 ~]#
4)查看日志
[root@192 log]# cd /var/log/
[root@192 log]# more sshd.log
[root@192 log]# more sshd.log
Feb 28 15:29:08 centos7-xinsz08 sshd[22837]: Server listening on 0.0.0.0 port 2
2.
Feb 28 15:29:08 centos7-xinsz08 sshd[22837]: Server listening on :: port 22.
备注: 对应信息: 时间 - 主机-服务-进程ID -监听的相关信息