rsyslog:
日志:历史事件日志
历史事件:
时间,事件
事件级别(日志级别):事件的关键性程度;
事件:系统引导启动、应用程序启动、应用程序尤其是服务类应用程序运行过程中的一些事件;
系统日志服务:
syslog:
syslogd: system
klogd:kernel
事件格式较为简单时,可统一由syslog进行记录:
事件产生的日期时间 主机 进程[pid] :事件内容
支持C/S架构:可通过UDP或TCP协议提供日志记录服务;
rsyslog:
rsyslogd
特性:
多线程;
UDP,TCP,SSL,TLS,RELP;
存储日志信息于MySQL、PGSQL、Oracle等数据管理系统;
强大的过滤器,实现过滤日志信息中任何部分的内容;
自定义输出格式;
elk stack:elasticsearch, logstash, kibana
rsyslog日志收集器重要术语:
facility:设施,从功能或程序上对日志收集进行分类;
auth, authpriv, cron, daemon, kern, lpr, mail, mark, news, security, user, uucp, local0-local7, syslog
priority:优先级,日志级别
debug, info, notice, warn(warning), err(error), crit(critical), alert, emerg(panic)
指定级别:
*:所有级别;
none:没有级别;
priority:此级别以高于此级别的所有级别;
=priorty:仅此级别;
……
程序环境:
主程序:rsyslogd
主配置文件:/etc/rsyslog.conf,/etc/rsyslog.d/*.conf
服务脚本(centos6):/etc/rc.d/init.d/rsyslog
Unit File(CentOS 7):/usr/lib/systemd/system/rsyslog.service
配置文件格式rsyslog.conf
主要由三部分组成:
MODULES
GLOBAL DRICTIVES
RULES
RULES:
facilty.priority target
target:
文件:记录日志事件于指定的文件中;通常应该位于/var/log目录下;文件路径之前的”-“表示异步写入;
用户:将日志事件通知给指定的用户;是通过将信息发送给登录到系统上的用户的终端进行的;
日志服务器:@host,把日志送往指定的服务器主机;
host:即日志服务器地址,监听在tcp或udp协议的514端口以提供服务;
管道: | COMMAND
其它日志文件:
/var/log/wtmp:当前系统成功登录系统的日志;
需要使用last命令查看
/var/log/btmp:当前系统尝试登录系统失败相关的日志;
需要使用lastb命令查看
lastlog:显示当前系统上的所有用户最近一次登录系统的时间;
/var/log/dmesg:系统引导过程中的日志信息;
也可以使用dmesg命令进行查看;
rsyslog服务器:
# Provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# Provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
记录日志于mysql中:
(1) 于MySQL服务器:准备好MySQL服务器,创建用户,授权对Syslog数据库拥有全部访问权限;
(2) 于rsyslog主机:安装rsyslog-mysql程序包;
(3) 于rsyslog主机:通过导入createDB.sql脚本创建依赖到的数据库及表;
mysql -uUSER -hHOST -pPASSWORD < /usr/share/doc/rsyslog-mysql-VERSION/createDB.sql
(4) 配置rsyslog使用ommysql模块
### MODULES ####
$ModLoad ommysql
#### RULES ####
facility.priority :ommysql:DBHOST,DB,DBUSER,DBUSERPASS
注意:重启rsyslog服务;
(5) web展示接口:loganalyzer
(a) 配置lamp组合
httpd, php, php-mysql, php-gd
(b) 安装loganalyzer
# tar xf loganalyzer-3.6.5.tar.gz
# cp -r loganalyzer-3.6.5/src /var/www/html/loganalyzer
# cp -r loganalyzer-3.6.5/contrib/*.sh /var/www/html/loganalyzer/
# cd /var/www/html/loganalyzer/
# chmod +x *.sh
# ./configure.sh
# ./secure.sh
# chmod 666 config.php
通过URL访问
http://HOST/loganalyzer
nsswitch and pam:
nsswitch:name service switch
名称解析:用户名、组名、主机、服务名、…
解析:根据已知的信息(key)查找某存储库,获取其它信息的过程;
存储:文件、SQL、NoSQL、LDAP、dns、…
文件系统接口:系统调用
SQL:
NoSQL:
通用框架:承上启下
承上:提供统一的配置与调用接口;
启下:用于与各种存储进行交互;
实现:/usr/lib64/libnss*, /lib64/libnss*
框架:libnss
驱动:libnss_files-
为每一种用到解析库的应用通过配置定义其位置:
/etc/nsswitch.conf
文件格式:
db: store1 store2 …
例如:
passwd: files
hosts: files dns
解析库:
文件、关系型数据管理系统(MySQL)、NIS、LDAP、DNS
每种存储中根据查找键进行查找的结果状态:
STATSU => success | notfound | unavail | tryagain
对应于每种状态结果的行为(action):
return | continue
例子:
hosts: files nis [NOTFOUND=return] dns
getent命令:
getent DATABASE [key]
pam:pluggable authentication module
认证库:存储
多种类型的存储:文件、关系型数据管理系统、LDAP、NIS
pam:通用框架,提供了与各种类型存储进行交互的公共实现、以及多种辅助类的功能:
/lib64/security/*
配置文件:为各种调用了pam的应用提供其专用配置;
通用配置文件:/etc/pam.conf,可为每一种调用pam完成认证功能的应用程序提供配置;
专用配置文件:/etc/pam.d/*,通常专用于为某种特定的应用程序提供配置;
通常每个应用会使用一个单独的配置文件;
配置文件格式:
通用配置文件:
application typecontrol module-path module-arguments
专用配置文件:
typecontrol module-path module-arguments
type:检查的功能类别
auth:账号的认证和授权;
account:与账号管理相关的非认证类的功能;
password:用户修改密码时密码复杂度检查机制;
session:用户获取到服务之前或使用服务完成之后需要进行一些附加性操作;
control:同一种功能的多个检查之间如何进行组合;
两种实现机制:
(1) 简单机制:使用一个关键词来定义
(2) 详细机制:使用一个或多个“status=action”
简单机制:
required:必须成功通过检查;否则,即为失败;无论成功还是失败,都需继续由后续同种功能的其它模块进行检查;
requisite:一票否决;检测失败就直接返回失败;检测成功,则由由后续同种功能的其它模块进行检查;
sufficient:一票通过,检测成功就直接返回成功;检测失败,则由由后续同种功能的其它模块进行检查;
optional:可选的,参考性控制机制;
include:调用其它配置文件中的同种功能的检测机制;
详细机制:
[status1=action1, status2=action2, …]
status:检查结果返回状态:
action:采取的行为,比如ok, done, die, bad, ignore,reset
module-path:模块文件路径;
相对路径:相对于/lib64/security/目录而言;
绝对路径:可位于任何可访问路径;
module-arguments:模块的专用参数;
模块示例:
pam_shells.so:检查用户的shell程序;
/etc/pam.d/sshd
在auth栈的第一行添加:
pam_limits.so:系统资源分配及控制的模块;
在用户级别实现对其可使用的资源的限制,例如可打开的文件数量,可同时运行的最大进程数,可用内存空间等等;
修改限制的实现方式:
(1) ulimit命令
(2) 配置文件:/etc/security/limits.conf, /etc/security/limits.d/*.conf
配置文件:每行一个定义;
<domain> <type> <item> <value>
<domain>:应用于哪些对象
username:单个用户
@group:组内的所有用户
*:所有用户,设定默认值
<type>:限制的类型
soft:软限制,普通用户自己可以修改;
hard:硬限制,由root用户设定,且通过kernel强制生效;
-:软硬使用相同限制;
<item>:限制的资源类型
nofile:所能够同时打开的最大文件数量;默认为1024;
nproc:所能够同时运行的进程的最大数量;默认为1024;
ulimit命令:用于临时调整资源的软硬限制或查看,仅root用户能执行;
-a 显示当前的所有限制
-n 最多的打开的文件描述符个数
-u 最大用户进程数
-S 使用 `soft’(软)资源限制
-H 使用 `hard’(硬)资源限制
本文来自投稿,不代表Linux运维部落立场,如若转载,请注明出处:http://www.178linux.com/100532