等保2.0测评深入理解 — Linux操作系统(下)

admin 2024年6月6日20:58:02评论4 views字数 15370阅读51分14秒阅读模式

知识宝库在此藏,一键关注获宝藏

付费文章均会免费移至知识星球,有需要的的朋友可星球内自取,点击此处查看详情。加入我的知识星球,开启知识学习之旅!

续上文等保2.0测评深入理解 — Linux操作系统(上)

三、安全审计

a)应启用安全审计功能,审计覆盖到每个用户,对重要的用户行为和重要安全事件进行审计

一、 查看审计进程是否正常运行

进程运行正常,默认覆盖到每个用户
service rsyslog(auditd) status
等保2.0测评深入理解 — Linux操作系统(下)
等保2.0测评深入理解 — Linux操作系统(下)
使用auditctl -s 查看内核状态
enabled=1 时为启动状态

等保2.0测评深入理解 — Linux操作系统(下)

二、确认对哪些事件进行了审计,是否包含重要用户行为和重要安全事件

1.  rsyslog日志

1.1 基本规则
配置文件,查看 /etc/rsyslog.conf 文件:
这个文件规定了
①什么服务 ②什么等级信息 ③需要被记录在哪里(设备或文件)
等保2.0测评深入理解 — Linux操作系统(下)
● 服务名称
rsyslogd 主要还是通过Linux内核提供的 syslog 相关规范来设置数据的分类,Linux的syslog本身有规范一些服务信息,可以通过这些服务来存储系统的信息。Linux系统内核的syslog支持的服务类型主要有下面这些。
相对序号 服务类别 说明
等保2.0测评深入理解 — Linux操作系统(下)

ps:16~23 保留给本机用户使用的一些日志文件信息,较常与终端互动。

● 信息等级
同一个服务所产生的信息也是有差别的,有启动时仅通知系统而已的一般信息(information),有出现还不至于影响到正常运行的警告信息(warn),还有系统硬件发生严重错误时,所产生的重大问题信息(error)。基本上,Linux内核的syslog将信息分为8个主要的等级,根据syslog.h定义,信息名称与数值的对应如下:
8 none:不记录
7 debug:用来debug(除错)时产生的数据
6 info:仅是一些基本的信息说明而已
5 notice:虽然是正常信息,但比info还需要被注意到的一些内容
4 warning(warn):警示的信息,可能有问题,但是还不至于影响到某个daemon运行的信息
3 err(error):一些重大的错误信息,例如配置文件的某些设置值造成该服务无法启动的信息说明,通常借由err的错误告知,应该可以了解到该服务无法启动的问题
2 crit:比error还要严重的错误信息,这个crit是临界点(critcal)的缩写,这个错误已经很严重了
1 alert:警告,已经很有问题的等级,比crit还要严重
0 emerg(panic):疼痛等级,意指系统已经几乎要宕机的状态,很严重的错误等级。通常大概只有硬件出问题,导致整个内核无法顺利运行,就会出现这样的等级信息。
[.=!]连接符号含义:
. :代表记录比该等级(含该等级)还要严重的等级信息
.=:代表所需要的等级就是后面接的等级而已,其他的不要

.!:代表不等于,即除了该等级外的其他等级都记录

● 信息记录的文件名或设备或主机
文件的绝对路径:通常就是放在/var/log 里面的文件
打印机或其他:例如 /dev/lp0 这个打印机设备
用户名称:显示给用户
远程主机:需要对方主机支持,例如@study.vbird.tsai

*:代表【目前在线的所有人】,类似wall这个命令的意义

1.2 具体规则内容
等保2.0测评深入理解 — Linux操作系统(下)
1.#kern.*:只要是内核产生的信息,全部都送到console(终端)去。console 通常是由外部设备连接到系统而来,举例来说,很多封闭型主机(没有键盘、屏幕的系统)可以通过链接RS232接口将信息传输到外部系统中,例如以笔记本电脑连接到封闭主机的RS232插口。这个项目通常应该是用在系统出现严重问题而无法使用默认的屏幕观察系统时,可以通过这个项目来连接获取内核信息。
等保2.0测评深入理解 — Linux操作系统(下)
2.*info;mail.none;authpriv.none;cron.none:由于mail、authpriv、cron等类别产生的信息较多,且已写入到下面的对应文件内,除此之外的其他信息均写入到/var/log/messages文件中,所以这也是messages文件很重要的原因。
3.authpriv.*:认证方面的信息均写入/var/log/secure文件。
4.mail.*:邮件方面的信息均写入/var/logmaillog文件。
5.cron.*:计划任务均写入/var/log/cron文件。
6.*.emerg:当产生最严重的错误等级时,将该等级的信息以wall的方式广播给所有系统登录的账号,要这么做的原因是希望在线的用户能够赶紧通知系统管理员来处理这么可怕的错误问题。
7.uucp,news.crit:uucp是早起UNIX-like系统进行数据传递的通讯协议,后来常用在新闻组,news则是新闻组。当新闻组方面的信息有严重错误时,就写入/var/log/spooler文件中。
8.local7.*:将本机启动时应该显示到屏幕的信息写入到/var/log/boot.log文件中
(日志设备) 首先有服务记录日志到特定的local设备,然后再通过rsyslog存储到特定的文件中去

mail.* -/var/log/maillog :-表示 由于邮件所产生的信息比较多,因此我们希望邮件产生的信息先存储在速度较快的内存缓冲区中,等到数据量够大了再一次性地将所有数据都写入磁盘,这样有助于日志文件的读取性能。

测试emerg日志(好像注释了也没用,改成其他级别的日志也不行 )
可以使用 logger -p 参数
等保2.0测评深入理解 — Linux操作系统(下)
logger -p mail.emerg "你号没了!"
等保2.0测评深入理解 — Linux操作系统(下)
在所有终端上会显示此消息

等保2.0测评深入理解 — Linux操作系统(下)

2. audit日志

2.1 查看audit服务状态
① 使用auditctl -s 查询audit状态
等保2.0测评深入理解 — Linux操作系统(下)

当enabled为1时表示开启,0为关闭

②使用s ervice auditd status 命令查看

等保2.0测评深入理解 — Linux操作系统(下)

2.2 audit审计规则
①查看规则
使用auditctl -l 命令(可能为临时生效规则)
等保2.0测评深入理解 — Linux操作系统(下)
查看/etc/audit/audit/audit.rules 文件(永久生效)

等保2.0测评深入理解 — Linux操作系统(下)

● 扩展学习

一、syslog-ng

1.  简介
syslog-ng作为syslog的替代工具,可以完全替代syslog的服务,并且通过定义规则,实现更好的过滤功能。作为syslog的下一代产品,功能肯定比syslog强大的多,如高性能、可靠的传输、支持多平台、高可靠性、众多的用户群体、强大的日志过滤及排序、事件标签和关联性……

开源版本的主页 https://www.syslog-ng.com/

2.  配置文件详解
2.1 文件位置
一般在 /etc/syslog-ng/syslog-ng.conf 内:
实例:more syslog-ng.conf 

@version: 3.0

#

# syslog-ng.conf for Alibaba groups.

# v20141223

# [email protected]

#

options {

flush_lines (0);

time_reopen (10);

log_fifo_size (1000);

long_hostnames (off);

chain_hostnames (no);

use_dns (no);

use_fqdn (yes);

keep_hostname (yes);

create_dirs (yes);

dir_perm(0755);

owner("root");

group("adm");

perm(0640);

stats_freq(0);

};

source s_sys {

file ("/proc/kmsg" program_override("kernel: "));

unix-stream ("/dev/log");

internal();

};

include /etc/syslog-ng/conf.d;

include /etc/syslog-ng/remote_server.conf;

destination d_sys_cons { file("/dev/console"); };

destination d_sys_mesg { file("/var/log/messages"); };

destination d_sys_auth { file("/var/log/secure"); };

destination d_sys_mail { file("/var/log/maillog" flush_lines(10)); };

destination d_sys_spol { file("/var/log/spooler"); };

destination d_sys_boot { file("/var/log/boot.log"); };

destination d_sys_cron { file("/var/log/cron"); };

destination d_sys_kern { file("/var/log/kern"); };

destination d_sys_mlal { file("/dev/tty0"); };

filter f_sys_snoopy { program("snoopy"); };

filter f_sys_app { facility(local0,local1,local2,local3,local4); };

filter f_sys_auth { facility(auth,authpriv); };

filter f_sys_kernel { facility(kern); };

filter f_sys_mail { facility(mail); };

filter f_sys_boot { facility(local7); };

filter f_sys_cron { facility(cron); };

filter f_sys_emergency { level(emerg); };

filter f_sys_news { facility(uucp) or (facility(news) and level(crit..emerg)); };

filter f_sys_message { level(info..emerg); };

log { source(s_sys); filter(f_sys_app); flags(final); };

log { source(s_sys); destination(d_sys_loghost); };

log { source(s_sys); filter(f_sys_snoopy); flags(final); };

log { source(s_sys); filter(f_sys_auth); destination(d_sys_auth);};

log { source(s_sys); filter(f_sys_kernel); destination(d_sys_kern);};

log { source(s_sys); filter(f_sys_mail); destination(d_sys_mail);};

log { source(s_sys); filter(f_sys_cron); destination(d_sys_cron);};

log { source(s_sys); filter(f_sys_emergency); destination(d_sys_mlal);};

log { source(s_sys); filter(f_sys_boot); destination(d_sys_boot);};

log { source(s_sys); filter(f_sys_news); destination(d_sys_spol);};

log { source(s_sys); filter(f_sys_message); destination(d_sys_mesg); flags(final);};
2.2 基本架构
配置文件基于以下架构:
options{…} #全局选项,多个选项时,用分号隔开。
log { source(); filter(); destination();};
#通过关联数据源、过滤规则、目标操作组成一个完整的消息路径。
#数据源、过滤规则、目标操作分别定义。
① 选项定义 options:
optinos {…}
可用参数:
chain_hostname(yes|no) #是否打开主机名链功能,打开后可在多网络段转发日志时有效
long_hostname(yes|no) #是chain_hostnames的别名,已不建议使用
keep_hostname(yes|no) #是否保留日志消息中保存的主机名称
use_dns(yes|no) #是否打开DNS查询功能
use_fqdn(yes|no) #是否使用完整的域名
check_hostname(yes|no) #是否检查主机名有没有包含不合法的字符
bad_hostname(regexp)    # 可通过正规表达式指定某主机的信息不被接受 
dns_cache(yes|no)         # 是否打开DNS缓存功能 
dns_cache_expire(n)          #DNS缓存功能打开时,一个成功缓存的过期时间 
dns_cache_expire_failed(n)   # DNS缓存功能打开时,一个失败缓存的过期时间 
dns_cache_size(n)         # DNS缓存保留的主机名数量 
create_dirs(yes|no)       # 当指定的目标目录不存在时,是否创建该目录 
dir_owner(uid)              # 目录的UID 
dir_group(gid)             # 目录的GID 
dir_perm(perm)           # 目录的权限,使用八进制方式标注,例如0644 
owner(uid)                   # 文件的UID 
group(gid)                   # 文件的GID 
perm(perm)                   # 文件的权限,同样,使用八进制方式标注  gc_busy_threshold(n)         # 当syslog-ng忙时,其进入垃圾信息收集状态的时间一旦分派的对象达到这个数字,syslog-ng就启动垃圾信息收集状态。默认值是:3000。 
gc_idle_threshold(n)         # 当syslog-ng空闲时,其进入垃圾信息收集状态的时间一旦被分派的对象到达这个数字,syslog-ng就会启动垃圾信息收集状态,默认值是:100
log_fifo_size(n)            # 输出队列的行数 
log_msg_size(n)          # 消息日志的最大值(bytes) 
mark(n)     # 多少时间(秒)写入两行MARK信息供参考,目前没有实现 
stats(n)            # 多少时间(秒)写入两行STATUS信息,默认值是:600 
sync(n)                 # 缓存多少行的信息再写入文件中,0为不缓存,局部参数可以覆盖该值。 
time_reap(n)        # 在没有消息前,到达多少秒,即关闭该文件的连接 
time_reopen(n)               # 对于死连接,到达多少秒,会重新连接 
use_time_recvd(yes|no)       # 宏产生的时间是使用接受到的时间,还是日志中记录的时间;建议使用R_的宏代替接收时间,S_的宏代替日志记录的时间,而不要依靠该值定义
应用示例:

options {

log_msg_size(8192);

create_dirs (yes);

dir_perm(0755);

owner("root");

group("adm");

perm(0640);

stats_freq(0); #消息之间间隔的时间(以秒为单位).0表示禁用发送STATS消息. 

};

意为:消息的最大值为8192byte,创建权限为755权限的目录,所有者为root,用户组为adm,文件权限为640。

② 数据源定义 source:
source <sourcename>{日志源;日志源;};
日志源可用参数:
file(filename) #从指定的文件读取日志信息
unix-dgram (filename) #从SOCK_DGRAM模式的unix套接字接收日志消息
unix-stream (filename) #从SOCK_STREAM模式的unix套接字接收日志消息
udp((ip),(port)) #从指定的UDP端口接收日志
tcp ((ip),(port)) #从指定的TCP端口接口接收日志
sun-streams (filename)          #在solaris系统中,打开一个(多个)指定的STREAM设备,从其中读取日志消息
internal() #syslog-ng内部产生的日志

pipe(filename),fifo(filename)#从指定的管道或者FIFO设备,读取日志信息

应用示例:
source s_sys {
file ("/proc/kmsg" program_override("kernel: "));
unix-stream ("/dev/log");
internal();
#表示日志来源为本机的syslog-ng内部产生的日志
};
③ 过滤参数定义:
filter <filtername> { 过滤参数; };
过滤参数可用:

facility(..) # 根据facility(设备)选择日志消息,使用逗号分割多个facility

level(..) #根据level(优先级)选择日志消息,使用逗号分割多个level,或使用“..”表示一个范围

program(regexp) #日志消息的程序名是否匹配一个正则表达式;regexp=表达式

host(regexp) #日志消息的主机名是否和一个正则表达式匹配

match(regexp) #对日志消息的内容进行正则匹配

filter() #调用另一条过滤规则并判断它的值

# 过滤参数操作式:

and 和 、or 或者、not 不包含

#facility(设备)可用消息类型

auth        用户认证

authpriv  有特权的用户认证

cron        cron守护进程

daemon 各种系统守护进程

ftp          ftp  守护进程

kern        内核消息

local0-local7     保留用于本地用法

lpr          打印机

mail        邮件

news       新闻

syslog    内部syslog

uucp      uucp系统

user      各种用户程序来的消息

# Level等级:

emerg      最严重的错误 (如system panic)

alert        需要立即处理的严重错误

crit          critical warming

err           普通错误

warn        警告信息

notice      比较不严重的信息

info         普通信息

debug      除错信息

应用示例:

filter f_sys_snoopy { program("snoopy"); };

filter f_sys_app { facility(local0,local1,local2,local3,local4); };

filter f_sys_auth { facility(auth,authpriv); };

#定义过滤规则f_sys_auth,包含auth,authpriv 用户、特权用户认证相关信息

filter f_sys_kernel { facility(kern); };

filter f_sys_mail { facility(mail); };

filter f_sys_boot { facility(local7); };

filter f_sys_cron { facility(cron); };

filter f_sys_emergency { level(emerg); };

# 定义过滤规则f_sys_emergency,包含所有emerg级别的消息

filter f_sys_news { facility(uucp) or (facility(news) and level(crit..emerg)); };

# 定义过滤规则f_sys_news,包含uccp、news中crit-emerg级别的消息

filter f_sys_message { level(info..emerg); };

# 定义过滤规则f_sys_message,包含所有info-emerg级别的消息

④ 目标操作定义 destination:
destination <name> { 目标操作; 目标操作; ... ;};
目标操作常用参数:

file (filename)    #把日志写入指定文件

unix-dgram (filename) #把日志写入SOCK_DGRAM模式的unix套接字

unix-stream (filename)  #把日志写入SOCK_STREAM模式的unix套接字

tcp (ip),(port)   #把日志发送到指定的tcp端口

udp (ip),(port)  #把日志发送到指定的udp端口

usertty(username)  #把日志消息发送到已经登录的指定用户终端

pipe(filename),fifo(filename) #把日志消息发送到指定的管道或者FIFO设备

program(parm) #启动指定的程序,并把日志消息发送到该进程的标准输入

应用示例:

destination d_sys_cons { file("/dev/console"); };

destination d_sys_mesg { file("/var/log/messages"); };

# 定义目标规则 d_sys_mesg写入到日志文件/var/log/messages

destination d_sys_auth { file("/var/log/secure"); };

# 定义目标规则 d_写入到日志文件/var/log/secure

destination d_sys_mail { file("/var/log/maillog" flush_lines(10)); };

destination d_sys_spol { file("/var/log/spooler"); };

destination d_sys_boot { file("/var/log/boot.log"); };

destination d_sys_cron { file("/var/log/cron"); };

destination d_sys_kern { file("/var/log/kern"); };

destination d_sys_mlal { file("/dev/tty0"); };

⑤ log{source(s_name); filter(f_name); destination(d_name)};
一条日志的处理流程大概如下:
首先是 “日志的来源 source s_name{…};
然后是 “过滤规则 filter f_name{…};
再然后是 “消息链 log{source(s_name;filter(f_name);destination(d_name)};
最后是 “目标动作 destination d_name{…};

这样一来一条日志就根据你的意思来处理了,需要注意的是一条日志消息过了之后,会匹配定义的所有配置,并不是匹配到以后就不再往下匹配了

应用示例:

log { source(s_sys); filter(f_sys_app); flags(final); };

log { source(s_sys); destination(d_sys_loghost); };

log { source(s_sys); filter(f_sys_snoopy); flags(final); };

log { source(s_sys); filter(f_sys_auth); destination(d_sys_auth);};

log { source(s_sys); filter(f_sys_kernel); destination(d_sys_kern);};

log { source(s_sys); filter(f_sys_mail); destination(d_sys_mail);};

log { source(s_sys); filter(f_sys_cron); destination(d_sys_cron);};

log { source(s_sys); filter(f_sys_emergency); destination(d_sys_mlal);};

log { source(s_sys); filter(f_sys_boot); destination(d_sys_boot);};

log { source(s_sys); filter(f_sys_news); destination(d_sys_spol);};

log { source(s_sys); filter(f_sys_message); destination(d_sys_mesg); flags(final);};
做等保简单能看懂syslog-ng的配置即可,不需要太过深入

二、audit审计

1.  启动audit内核模块
有些系统audit的内核模块时默认关闭。可以查看/proc/cmdline,若存在audit=0,则默认不启动audit。通过设置/boot/grub2/grub.cfg文件,使audit=1,或者去掉audit=0,然后重启系统,使audit内核模块启动。在此查看 /proc/cmdline 已修改为audit=1
即没有 audit=0 即可
等保2.0测评深入理解 — Linux操作系统(下)
如果audit的内核模块启动了,用 auditctl -s 查询enabled为1,但是用户空间的auditd守护进程没有运行(auditd进程为dead状态),审计日志无人接管,就会被写入到/var/log/messages中。(PS:自己测试centos 7.x,已证实该结论正确。)
等保2.0测评深入理解 — Linux操作系统(下)
1.1 测试enabled对应值对审计记录的影响:
1)enabled为0的情况
此时auditd,rsyslog进程正常运行
等保2.0测评深入理解 — Linux操作系统(下)
观察audit.log、messages文件不再记录audit日志

结论:当enable值为0时,不记录任何事件

2) 当enabled为1时
①此时auditd,rsyslog进程正常运行
结论:audit日志将写入audit.log文件
②此时auditd进程关闭,rsyslog进程正常运行
等保2.0测评深入理解 — Linux操作系统(下)
等保2.0测评深入理解 — Linux操作系统(下)
经测试,使用passwd test命令,结果如下
等保2.0测评深入理解 — Linux操作系统(下)
/var/log/messages日志:
等保2.0测评深入理解 — Linux操作系统(下)

结论:audit日志将记录在messages文件中,audit.log文件中将不再记录相应日志信息

③ 此时audit、rsyslog进程均关闭

messages、audit.log文件均不再记录相应日志信息,audit日志

2. 启动auditd守护进程
我们习惯使用systemctl start xxx来启动一个服务,但是auditd手册中,明确指出使用service命令是唯一一个正确开启auditd守护进程的方式。
测试:①停止服务
systemctl stop auditd.service 无法关闭
等保2.0测评深入理解 — Linux操作系统(下)
service auditd stop 即可

等保2.0测评深入理解 — Linux操作系统(下)

② 开启服务
systemctl start auditd.service 可以开启
等保2.0测评深入理解 — Linux操作系统(下)
先确认服务为关闭状态
等保2.0测评深入理解 — Linux操作系统(下)
service audit start 虽然显示要你用systemctl 但是还是启动成功了

等保2.0测评深入理解 — Linux操作系统(下)

正常一个服务,我们使用 service xx start 时都会显示 Redirecting to /bin/systemctl start xxx.service。我们可以通过which service来查看这个命令的源文件,/usr/sbin/service。这里对于不同的情况,有不同的处理。

1)  /etc/init.d目录下有这个服务;

2)  /usr/libexec/initscripts/legacy-actions目录下有这个服务;

3)  除了以上两种情况,其他情况下会定向到systemctl cmd xxx.service。
auditd属于第二种情况,/usr/libexec/initscripts/legacy-actions目录有auditd目录,如下:

等保2.0测评深入理解 — Linux操作系统(下)

① 设置开机启动/不启动
systemctl enable auditd
systemctl disable auditd

等保2.0测评深入理解 — Linux操作系统(下)

② stop

service auditd stop

③ reload
service auditd reload
systemctl reload auditd.service
两个命令均生效,重新加载auditd的配置文件/etc/audit/auditd.conf
虽然提示,然是仍生效

等保2.0测评深入理解 — Linux操作系统(下)

④ rotate
service auditd rotate
强制立即循环日志文件,老的日志文件将被命名为audit.log.N

等保2.0测评深入理解 — Linux操作系统(下)

⑤ resume
service auditd resume
当日志记录停止时,用于恢复日志记录(暂不清楚什么情况下用的)。

等保2.0测评深入理解 — Linux操作系统(下)

⑥ condrestart
service auditd condrestart
condrestart是conditional restart(条件重新启动)的意思,如果服务当前已经是运行的话,它可以重启这个服务,但是如果服务没有运行,condrestart是无法启动这个服务的,而restart都可以。
但好像对于centos 7.x这块好像都一样,condrestart也能启动未启动的服务。

等保2.0测评深入理解 — Linux操作系统(下)

3. auditd服务文件
可通过service auditd status 查看服务路径
等保2.0测评深入理解 — Linux操作系统(下)
查看具体内容:

等保2.0测评深入理解 — Linux操作系统(下)

4.auditctl -s

通过 auditctl -s 查询可以看到 audit 的状态,这个是查询audit内核模块的状态

等保2.0测评深入理解 — Linux操作系统(下)

其中“enabled”这个选项很重要,如果值为0,贼代表audit不工作,看不到任何审计日志,哪怕是系统日志messages。无论是使用auditctl临时配置规则、还是用/etc/audit/audit.rules文件永久配置规则,所有规则设定都要在enabled为1时才可以生效。

当enabled为2时,则表示规则锁定,所有设置都不起作用。

服务和enable:

服务是服务,enable是enable,这两者没有关系,服务启动或停止是针对auditd这个守护进程。auditctl -s 查询的 enabled的状态为audit内核模块的状态。内核模块主要用来获取审计信息,用户态的守护进程主要用来收集信息和记录日志。enabled为1,服务停止,日志会记录在messages中;enable为0,服务启动,没有任何审计信息,不会记录日志。也就是auditd服务是否启动,决定日志记录在哪里,启动了,日志记录在配置文件指定的路径,没有启动,记录在messages日志中。enable决定内核是否开始审计,为0,不启动,为1,启动。
5. auditd守护进程配置文件
通过/etc/audit/auditd.conf 文件进行配置,默认的auditd配置文件可以满足大多数环境要求。
等保2.0测评深入理解 — Linux操作系统(下)
#日志存放路径
log_file = /var/log/audit/audit.log
#写日志时要使用的格式。
#当设置为RAW时,数据会以从内核中检索到的格式写到日志文件中。
#当设置为NOLOG时,数据不会写到日志文件中,但是如果用dispatcher选项指定了一个,则数据仍然会发送到审计事件调度程序中
log_format = RAW
#日志所属组
log_group = root
#审计应采用多少优先级推进守护进程。必须是非负数。0表示没有变化。
priority_boost = 4
#多长时间向日志文件中写一次数据。值可以是NONE、INCREMENTAL、DATA和SYNC之一。
#如果设置为NONE,则不需要做特殊努力来将数据刷新到日志文件中。
#如果设置为INCREMENTAL,则用freq选项的值确定多长时间发生一次向磁盘的刷新。
#如果设置为DATA,则审计数据和日志文件一直是同步的。
#如果设置为SYNC,则每次写到日志文件时,数据和元数据是同步的
flush = INCREMENTAL
#如果flush设置为INCREMETNAL,审计守护进程在写到日志文件中前从内核中接收的记录数
freq = 20
#max_log_file_action设置为ROTATE时要保存的日志文件数目。必须是0~99之间的数。如果设置为小于2,则不会循环日志。如果递 增了日志文件的数目,就可能有必要递增/etc/audit/audit.rules中的内核backlog设置值,以便留出日志循环的时间。如果没有设 置num_logs值,它就默认为0,意味着从来不循环日志文件。
num_logs = 5
#控制调度程序与审计守护进程之间的通信类型。有效值为lossy和lossless。
#如果设置为lossy,若审计守护进程与调度程序之间的缓冲区已满 (缓冲区为128千字节),则发送给调度程序的引入事件会被丢弃。然而,只要log_format没有设置为nolog,事件就仍然会写到磁盘中。如果设置为lossless,则在向调度程序发送事件之前和将日志写到磁盘之前,调度程序会等待缓冲区有足够的空间。
disp_qos = lossy
dispatcher =/sbin/audispd
name_format = NONE
name = mydomain
#以兆字节表示的最大日志文件容量。当达到这个容量时,会执行max_log_file _action指定的动作
max_log_file = 6
#当达到max_log_file的日志文件大小时采取的动作。值必须是IGNORE、SYSLOG、SUSPEND、ROTATE和KEEP_LOGS之一。
#如果设置为IGNORE,则在日志文件达到max_log_file后不采取动作。
#如果设置为SYSLOG,则当达到文件容量时会向系统日志/var /log/messages中写入一条警告。
#如果设置为SUSPEND,则当达到文件容量后不会向日志文件写入审计消息。
#如果设置为ROTATE,则当达到指定文件容量后会循环日志文件,但是只会保存一定数目的老文件,这个数目由num_logs参数指定。老文件的文件名将为audit.log.N,其中 N是一个数字。这个数字越大,则文件越老。
#如果设置为KEEP_LOGS,则会循环日志文件,但是会忽略num_logs参数,因此不会删除日志文件。
max_log_file_action = ROTATE
#以兆字节表示的磁盘剩余空间。当达到这个水平时,会采取space_left_action参数中的动作
space_left = 75
#当磁盘空间量达到space_left中的值时,采取这个动作。有效值为IGNORE、SYSLOG、EMAIL、SUSPEND、SINGLE和 HALT。
#如果设置为IGNORE,则不采取动作。
#如果设置为SYSLOG,则向系统日志/var/log/messages写一条警告消息,停止记录日志。
#如果设置为EMAIL,则从action_mail_acct向这个地址发送一封电子邮件向/var/log/messages中写一条警告消息。
#如果设置为SUSPEND,则不再向审计日志文件中写警告消息。
#如果设置为SINGLE,则系统将在单用户模式下运行,让管理员释放磁盘空间。
#如果设置为SALT,则系统会关闭。
space_left_action = SYSLOG
#负责维护审计守护进程和日志的管理员的电子邮件地址。如果地址没有主机名,则假定主机名为本地地址,比如root。
#必须安装sendmail并配置为向指定电子邮件地址发送电子邮件
action_mail_acct = root
#以兆字节表示的磁盘空间数量。用这个选项设置比space_left_action更多的主动性动作,以防万一space_left_action没有让管理员释放任何磁盘空间。这个值应小于space_left_action。如果达到这个水平,则会采取admin_space_left_ action所指定的动作。
admin_space_left = 50
#如果含有这个审计文件的分区已满,则采取这个动作。可能值为IGNORE、SYSLOG、SUSPEND、SINGLE和HALT。与这些值关联的动作,与space_left_action中的相同。
admin_space_left_action = SUSPEND
disk_full_action = SUSPEND
disk_error_action = SUSPEND
这是在范围1、65535,一个数字值
tcp_listen_port =
tcp_listen_queue = 5
这是一个数字值,该值表示一个地址允许有多少个并发连接。默认为1,最大为1024。设置过大可能会允许拒绝服务攻击的日志服务器。
tcp_max_per_addr = 1
tcp_client_ports = 1024-65535
tcp_client_max_idle = 0
如果设置为“yes”,Kerberos 5将用于认证和加密。默认是“no”
enable_krb5 = no
krb5_principal = auditd

krb5_key_file = /etc/audit/audit.key

6. audit 审计规则配置
audit可以配置审计规则,这个规则主要是给内核模块下发的,内核audit模块会按照这个规则获取审计信息,发送给auditd来记录日志。
规则类型可以分为:

控制规则:控制audit系统的规则。

文件系统规则:也可以认为是文件监控,可以监控一个特定文件或者一个路径。

系统调用规则:可以记录特定程序的系统调用。

audit规则可以通过auditctl,在命令行里输入,这些设置的规则为临时的,当系统重启后就不存在了。可以通过配置/etc/audit/audit.rules文件,当每次audit服务启动后,都会从这个文件来加载规则。

原文始发于微信公众号(等保不好做啊):等保2.0测评深入理解 — Linux操作系统(下)

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年6月6日20:58:02
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   等保2.0测评深入理解 — Linux操作系统(下)https://cn-sec.com/archives/2823470.html

发表评论

匿名网友 填写信息