12.日志管理
12.1.日志管理简介
1、日志服务
在CentOS 6.x中日志服务已经由rsyslogd取代了原先的syslogd服务。rsyslogd日志服务更加先进,功能更多。但是不论该服务的使用,还是日志文件的格式其实都是和syslogd服务相兼容的,所以学习起来基本和syslogd服务一致。
2、rsyslogd的新特点
基于TCP网络协议传输日志信息
更安全的网络传输方式
有日志消息的及时分析框架
后台数据库
配置文件中可以写简单的逻辑判断
与syslog配置文件相兼容
3、确定服务启动
查看服务是否启动
ps aux|grep rsyslogd
查看服务是否自动
chkconfig –list|grep rsyslog
貌似这个命令不行了,在centos7上,系统服务提示用这个命令:systemctl list-unit-files
4、常用日志的作用
日志文件 |
说明 |
/var/log/cron |
记录了定时任务相关的日志。 |
/var/log/cups |
记录打印信息的日志 |
/var/log/dmesg |
记录了系统在开机时内核自检的信息。也可以使用dmesg命令直接查看内核自检信息 |
/var/log/btmp |
记录错误登录的日志。这个文件是二进制文件,不能直接vi查看,而要使用lastb命令查看,命令如下: [root@localhost log]# lastb rot ssh:notty 192.168.1.101 Thu May 10 19:21 - 19:21 (00:00) Administ ssh:notty 192.168.1.101 Sun May 6 16:13 - 16:13 (00:00) Administ ssh:notty 192.168.1.101 Sat May 5 21:38 - 21:38 (00:00)
btmp begins Sat May 5 21:38:05 2018 [root@localhost log]# |
/var/log/lastlog |
记录系统中所有用户最后一次的登录时间的日志。这个文件是二进制文件,不能直接vi查看,而要使用lastlog命令查看。 |
/var/log/maillog |
记录了邮件信息 |
/var/log/message |
记录系统重要信息的日志,这个日志文件 中会记录Linux系统的绝大鑫数重要信息,如果系统出现问题,首先要检查的就应该是这个日志文件。 |
/var/log/secure |
记录验证和授权方面的信息,只有涉及帐户和密码的程序都会记录。例如系统的登录,ssh的登录,su切换用户,sudo授权,甚至添加用户和修改用户密码都会记录在这个日志文件中。 |
/var/log/wtmp |
永久记录所有用户的登录、注销信息、同时记录系统的启动,重启,关机事件。同样这个文件也是一个二进制文件,不能直接vi命令查看,而需要使用last命令查看。 |
/var/run/utmp |
记录当前已经登录的用户信息。这个会随着用户的登录和注销而不断变化,只记录前登录用户的信息。这个文件也不能直接用vi命令查看,而要使用w,who,users等命令来查询 |
除了系统的默认日志之外,采用RPM方式安装的系统服务也会默认把日志记录在/var/log目录中,源码包安装的服务日志是在源码包指定目录中。不过这些日志不是由rsyslogd服务来记录和管理的,而是各个服务使用自己的日志管理文档来记录自身的日志。
常见的RPM包日志:
/var/log/httpd/` apache服务
/var/log/mail/ 邮件服务
/var/log/samba/ samba服务
/var/log/sssd/ 守护进程安全服务目录
12.2.rsyslogd服务
1、日志文件格式
基本日志格式包含以下四列:
事件产生的时间
发生事件的服务器的主机名
产生事件的服务名或程序名
事件的具体信息
如下所示为secure日志格式:
[root@localhost log]# head secure
May 6 22:25:43 localhost sshd[1556]: Accepted password for root from 192.168.1.101 port 60068 ssh2
May 6 22:25:43 localhost sshd[1556]: pam_unix(sshd:session): session opened for user root by (uid=0)
May 6 23:07:52 localhost groupadd[1714]: group added to /etc/group: name=apache, GID=48
May 6 23:07:52 localhost groupadd[1714]: group added to /etc/gshadow: name=apache
May 6 23:07:52 localhost groupadd[1714]: new group: name=apache, GID=48
May 6 23:07:52 localhost useradd[1718]: new user: name=apache, UID=48, GID=48, home=/usr/share/httpd, shell=/sbin/nologin
May 6 23:08:50 localhost polkitd[643]: Registered Authentication Agent for unix-process:1753:2313559 (system bus name :1.38 [/usr/bin/pktty
2、/etc/rsyslog.conf配置文件
配置格式:
服务名称[链接符号]日志等级 日志记录位置
如下所示:
authpriv.* /var/log/secure
认证相关服务.所有日志等级 记录在/var/log/secure日志文件中
这些名称只在rsyslogd日志中有效
支持的服务名称:
服务名称 |
说明 |
auth |
安全和认证相关消息, 不推荐使用authpriv替代 |
authpriv |
安全和认证相关消息,私有的 |
cron |
系统定时任务crontab和at产生的日志 |
deamon |
和各个守护进程相关的日志 |
ftp |
ftp守护进程产生的日志 |
kern |
内核产生的日志,不是用户进程产生的 |
local0-local7 |
为本地使用预留的服务 |
lpr |
打印产生的日志 |
|
邮件收日志 |
news |
与新闻服务器相关的日志 |
syslog |
有syslogd服务产生的日志信息,虽然服务名称已经改为rsyslogd,但是很多配置都还是沿用了syslogd的,这里并没有修改服务名 |
user |
用户等级类别的日志信息 |
uucp |
uucp子系统的日志信息,uucp是早期linux系统进行数据传递的协议,后来也常用在新闻组服务中。 |
rsyslogd支持的连接符号:
连接符号 |
说明 |
* |
代表所有日志等级,例如:authpriv.*,代表authpriv认证信息服务产生的日志,所有日志等级都记录 |
. |
代表只要比后面的等级高的,包含该等级的日志都记录下来。例如:cron.info代表cron服务产生的日志,只有日志级别大于等于info级别,就会记录下来。 |
.= |
代表只记录所需等的日志,其他等级的都不记录。例如:*.=emerg,代表任何日志服务产生的日志,只有等级是emerg等级就记录。这种用法及少见,了解就好 |
.! |
代表不等于,也就是除了该等级的日志外,其他等级日志都记录。 |
syslogd支持日志等级:
日志等级 |
说明 |
debug |
一般的调试信息 |
info |
基本的通知信息 |
notice |
普通信息,但是有一定的重要性 |
warning |
警告信息,但是还不会影响到服务或系统运行 |
err |
错误信息,一般达到err等级的信息,已经影响到服务或系统的运行了 |
crit |
临界状况信息,比err等级还要严重 |
alert |
警告状态信息,比crit还要严重,必须立即采取行动 |
emerg |
疼痛待级信息,系统已经无法使用了 |
syslogd支持的日志记录位置:
类别 |
举例 |
日志文件的绝对路径 |
/var/log/secure |
系统设备文件 |
/dev/lp0 |
转发给远程主机 |
@192.168.0.210:514 |
用户名 |
root |
忽略或丢弃日志 |
~ |
12.3.日志轮替
1、日志文件的命名规则
如果配置文件中拥有dateext参数,那么日志会用日期来作为日志文件的后缀,例如secure-20180510,这样的话日志文件名不会重叠,所以也就不需要日志文件的改名,只需要保存指定的日志个数,删除多余的日志文件即可。
如果配置文件中没有dateext参数,那么日志文件就需要进行改名了。当第1次进行日志轮替时,当前的secure日志会自动改名为secure.1,然后新建secure日志,用来保存新的日志,当第2次进行日志轮替时,secure.1会自动更新为secure.2,当前的secure日志会自动改为为secure.1,然后新建secure日志,用来保存新的日志,以此类推。
2、logrotate配置文件
参数 |
参数说明 |
daily |
日志的轮替周期是每天 |
weekly |
日志的轮替周期是每周 |
monthly |
日志的轮替周期是每月 |
rotate 数字 |
保留的日志文件的个数,0指没有备份 |
compress |
日志轮替时,旧的日志进行压缩 |
create mode owner group |
建立新的日志,同时指定新日志的权限与所有者和所属组。 如:create 0600 route utmp |
mail address |
当日志轮替时,输出内容通过邮件发送到指定的邮件地址 如:mail [email protected] |
missingok |
如果日志文件不存在,则忽略该日志的警告信息 |
notifyempty |
如果日志为空文件,则不进行日志轮替 |
minsize 大小 |
日志轮替的最小值,也就是日志一定要达到这个最小值才会轮替,否则就算时间达到也不轮替 |
size 大小 |
日志只有大于指定大小才进行日志轮替,而不是按照时间轮替,如:size 100K |
dateext |
使用日期作为日志轮替文件的后缀。如:secure-20180510 |
上面半部分为全局配置,下面一部分是/var/log/wtmp和/var/log/btmp特有的配置:
[root@localhost etc]# cat /etc/logrotate.conf
# see "man logrotate" for details
# rotate log files weekly
weekly
# keep 4 weeks worth of backlogs
rotate 4
# create new (empty) log files after rotating old ones
create
# use date as a suffix of the rotated file
dateext
# uncomment this if you want your log files compressed
#compress
# RPM packages drop log rotation information into this directory
include /etc/logrotate.d
# no packages own wtmp and btmp -- we'll rotate them here
/var/log/wtmp {
monthly
create 0664 root utmp
minsize 1M
rotate 1
}
/var/log/btmp {
missingok
monthly
create 0600 root utmp
rotate 1
}
# system-specific logs may be also be configured here.
[root@localhost etc]#
3、把apache日志加入轮替
RPM包安装会自动配置。
源码包安装的服务,需要手动加入配置:
vi /etc/logrotate.conf
/var/usr/local/apache/logs/access_log{
daily
create
rotate 30
}
4、logrotate命令
语法:
logrotate [选项] 配置文件名
如果此命令没有选项,则会按照配置文件中的条件进行日志轮替。
-v:显示日志轮替过程。加了-v选项,会显示日志的轮替的过程。
-f:强制进行日志轮替。不管日志轮替的条件是否已经符合,强制配置文件中所有的日志进行轮替
12.4.启动引导程序-Grub加密与字符界面分辨率调整
在启动的时候,按下任意键盘,就可以进行Grub的选择界面
然后按下e键,就可以编辑Grub配置文件了,但是每个人都可以编辑不安全。所要设置grub密码。
1、grub加密
命令:
grub-md5-crypt
生成加密密码串
貌似centos7中没有这个命令了
设置了grub加密后,以后要编辑grub配置文件,需要使用grub密码才能编辑了。
centos7的方法已经不是上面的方式了,而且密码的加密更安全了:
设置grub密码保护:
查看grub登录用户名cat /etc/grub.d/01_users,可以看到用户名为root。通过grub2-setpasswords设置grub密码,确认密码 cat /boot/grub2/user.cfg。重启后进入grub需要用户名和密码
[root@localhost ~]# cat /etc/grub.d/01_users
#!/bin/sh -e
cat << EOF
if [ -f \${prefix}/user.cfg ]; then
source \${prefix}/user.cfg
if [ -n "\${GRUB2_PASSWORD}" ]; then
set superusers="root"
export superusers
password_pbkdf2 root \${GRUB2_PASSWORD}
fi
fi
EOF
[root@localhost ~]# grub2-setpasswords
-bash: grub2-setpasswords: command not found
[root@localhost ~]# grub2-setpassword
Enter password:
Confirm password:
[root@localhost ~]# cat /boot/grub2/user.cfg
GRUB2_PASSWORD=grub.pbkdf2.sha512.10000.44A14BB0A2FBA9511FE80754FB317AF04518F0FCB6C3D25454EB186AC7D84175C94595F5E8CC1AE127A5328CDCC5553DBB5C5C70928C0EAFDE675DC5B444D926.D45D10DF6E988AD8839EE2BAA746F5A962CFFC65C47FBF418F1A8211D890081E6619A9853586645A2E8CC69B50F7EF577308F28882574C31CA425849E78D2144
[root@localhost ~]#
重启后,在引导界面,输入e进行grub配置编辑界面前,需要输入用户名和密码,root/xx密码
2、字符界面分辨率调整
查询内核是否支持分辩率修改
[root@localhost boot]# cat config-3.10.0-693.el7.x86_64 |grep CONFIG_FRAMEBUFFER_CONSOLE
CONFIG_FRAMEBUFFER_CONSOLE=y
调整的时候,填写如下表格中的值即可,例如32位的1024x768,是792
填写哪里呢?有些版本不支持这个参数,有的支持是16进制的值,需要换算。
貌似centos7已经不是这样配置的了,网上找的参考:
正确解决方法
刚装的CentOS7.2 1511系统,正常启动,一般都是这样的,分辨率640x480
进入系统后,更改分辨率,设置如下
[root@min-base ~]# vim /etc/default/grub
将GRUB_TERMINAL_OUTPUT值由默认的"console"改为"gfxterm",并添加GRUB_GFXMODE
GRUB_TIMEOUT=2
GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
GRUB_DEFAULT=saved
GRUB_DISABLE_SUBMENU=true
GRUB_TERMINAL_OUTPUT="gfxterm"
GRUB_CMDLINE_LINUX="crashkernel=auto rd.lvm.lv=centos/root rd.lvm.lv=centos/swap rhgb quiet"
GRUB_DISABLE_RECOVERY="true"
GRUB_GFXMODE=1440x900,1024x768,640x480
这里官方手册写得很清楚,ubuntu自带grub2默认是gfxterm, 而centos默认是console,所以只设置GRUB_GFXMODE不生效!
更新grub.cfg
[root@min-base ~]# grub2-mkconfig -o /boot/grub2/grub.cfg
Generating grub configuration file ...
Found linux image: /boot/vmlinuz-3.10.0-327.el7.x86_64
Found initrd image: /boot/initramfs-3.10.0-327.el7.x86_64.img
Found linux image: /boot/vmlinuz-0-rescue-474822243f59425e80af30ff5e2b8cd4
Found initrd image: /boot/initramfs-0-rescue-474822243f59425e80af30ff5e2b8cd4.img
done
[root@min-base ~]#
新版grub2已经不再使用update-grub这个命令了,改用grub2-mkconfig
确定后重启就可以看到效果了,窗口大小是有变化的。在centos7.4上验证此方法有效。貌似只是引导界面变了一下,和Windows的修改分辨率咋感觉不是一个概念。。。