[内容] auditd 使用 (监控文件或目录的变化)

内容一:auditd 的管理

1.1 启动 auditd

1.1.1 启动 auditd
# service auditd restart
1.1.2 查看 auditd 状态
# auditctl -s
1.1.3 设置 auditd 开机自启
# chkconfig auditd on
1.1.4 查看 auditd 开机自启状态
# chkconfig --list auditd

1.2 查看 auditd 的规则

# auditctl -l

1.3 删除 auditd 的规则

1.3.1 永久删除 auditd 的所有规则
1.3.1.1 清空 /etc/audit/audit.rules 文件里的所有内容
# vi /etc/audit/audit.rules

删除里面的所有内容

1.3.1.2 让刚刚的设置生效
# service auditd restart

或者:

# augenrules
1.3.2 临时删除 auditd 的规则
1.3.2.1 临时删除 auditd 的所有规则
# auditctl -D

(补充:此操作重启后失效)

1.3.2.2 临时删除 auditd 的普通规则 (以 -w 开头的规则)
# auditctl -W <policy>

(补充:此操作重启后失效)

1.3.2.3 临时删除 auditd 的使用系统调用和过滤条件的监控规则 (以 -a 开头的规则)
# auditctl -d <policy>

(补充:此操作重启后失效)

1.4 显示 auditd 日志

1.4.1 显示 auditd 的所有日志
# cat /var/log/audit/audit.log
1.4.2 显示某文件或目录的日志
# ausearch -f <file/directory>
1.4.3 显示某关键词的日志
# ausearch -k <key_name>

1.5 生成 auditd 日志报告

# aureport -k

内容二:auditd 的规则

2.1 普通监控规则

2.1.1 普通监控规则的格式
2.1.1.1 普通监控规则的格式
-w <file/directory> -p <previlege> -k <key_name>


补充:
1) 文件名或目录名,需要绝对路径
2) 监控的权限,可以是 rwxa 其中的任意 1 个或多个,r 代表读权限、w 代表写权限,x 代表执行权限,a 代表文件类型
3) 此类日志的关键词

2.1.1.2 添加普通监控规则的格式
2.1.1.2.1 临时添加普通监控规则的格式
# auditctl -w <file/directory> -p <previlege> -k <key_name>
2.1.1.2.2 永久添加普通监控规则的格式
# vim /etc/audit/audit.rules

添加以下内容:

......
-w <file/directory> -p <previlege> -k <key_name>


注意:永久添加的规则后要重启 auditd 服务后才会生效

# service auditd restart

或者:

# augenrules

2.1.2 添加普通监控规则的案例
2.1.2.1 案例一:添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化的规则
# auditctl -w /etc/nginx/nginx.conf

(补充:这里以临时添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化的规则为例)

2.1.2.2 案例二:添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化,并设置关键词为 nginx 的规则
# auditctl -w /etc/nginx/nginx.conf -p rwxa -k 'nginx'

(补充:这里以临时添加监控 /etc/nginx/nginx.conf 文件的读、写、执行和文件属性变化,并设置关键词为 nginx 的规则为例)

2.2 使用系统调用和过滤条件的监控规则

2.2.1 使用系统调用和过滤条件的监控规则的格式
2.2.1.1 使用系统调用和过滤条件的监控规则的格式
-a <action>,<filter> -S <system_call> -F <field>=<value> -k <key_name>


补充:
1) 和 用于确定事件被记录, 的值可以是 always 或者 never, 的值可以是 task、exit、user 或者 exclude
2) 是系统调用,Linux 系统调用的名称在 /usr/include/asm/unistd_64.h 文件中,可以将多个系统调用放在一个规则里,例:-S <system_call> -S <system_call> ……,或者 -S <system_call>,<system_call>……
3) 和 是过略条件,可以将多个过略条件放在一个规则里,-F <field>=<value> -F <field>=<value> ……
4) 是此类日志的关键词

2.2.1.2 添加使用系统调用和过滤条件的监控规则的格式
2.2.1.2.1 临时添加使用系统调用和过滤条件的监控规则的格式
# auditctl -a <action>,<filter> -S <system_call> -F <field>=<value> -k <key_name>
2.2.1.2.2 永久添加使用系统调用和过滤条件的监控规则的格式
# vim /etc/audit/audit.rules

添加以下内容:

......
-a <action>,<filter> -S <system_call> -F <field>=<value> -k <key_name>


注意:永久添加的规则后要重启 auditd 服务后才会生效

# service auditd restart

或者:

# augenrules

2.2.2 使用系统调用和过滤条件的监控规则的案例
2.2.2.1 案例一:监控所有 UID 大于 1000 的用户的删除操作,并设置关键词为 delete
# auditctl -a always,exit -S rmdir -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=unset -F auid!=4294967295 -k delete

(补充:这里以临时监控所有 UID 大于 1000 的用户删除操作为例)

(注意:这里的 -F auid!=4294967295 是为了排除 login UID 没有被设置的用户)

2.2.2.2 案例二:监控所有 UID 大于 1000 的用户的文件删除操作,并设置关键词为 delete
# auditctl -a always,exit -S unlink -S unlinkat -S rename -S renameat -F auid>=1000 -F auid!=unset -F auid!=4294967295 -k delete

(补充:这里以临时监控所有 UID 大于 1000 的用户删除操作为例)

(注意:这里的 -F auid!=4294967295 是为了排除 login UID 没有被设置的用户)

2.2.2.3 案例三:监控所有网络连接
# auditctl -a always,exit -F arch=b64 -S socket
# auditctl -a always,exit -F arch=b64 -S connect
# auditctl -a always,exit -F arch=b64 -S sendmmsg
# auditctl -a always,exit -F arch=b64 -S sendmsg
# auditctl -a always,exit -F arch=b64 -S bind
# auditctl -a always,exit -F arch=b64 -S recvmsg
# auditctl -a always,exit -F arch=b64 -S close

(补充:这里以监控所有网络连接为例)

[内容] Linux 常用的功能文件 (/dev/null、/dev/zero、/dev/urandom)

内容一:/dev/null 文件

1.1 /dev/null 文件的作用

空设备,任何进入此文件的数据都会被删除,一般用于删除输出内容

1.2 /dev/null 文件的修复

# rm -f /dev/null;mknod /dev/null c 1 3;chmod 666 /dev/null

内容二:/dev/zero 文件

2.1 /dev/zero 文件的作用

二进制的零流,可以连续不断地产生二进制零流,一般用于对设备和文件进行初始化

2.2 /dev/zero 文件的修复

# rm -f /dev/zero;mknod /dev/zero c 1 5;chmod 666 /dev/zero

内容三:/dev/urandom 文件

3.1 /dev/urandom 文件的作用

随机数流,可以连续不断地产生随机数流,一般用于清除机密数据,用随机的数据完全覆盖磁盘

3.2 /dev/urandom 文件的修复

# rm -f /dev/random;mknod /dev/random c 1 8;chmod 666 /dev/random

[命令] Linux 命令 locate (查找文件)

内容一:locate 命令的安装

1.1 安装 locate 命令

# dnf install mlocate

1.2 更新 locate 数据库

# updatedb


注意:如果不更新 locate 数据库,在使用 locate 命令后可能会报错

locate: can not stat () `/var/lib/mlocate/mlocate.db': No such file or directory

内容二:locate 命令的选项

1) -b 或者 –basename 只显示使用指定模式匹配名称的条目
2) -c 或者 –count 只显示找的数量
3) -e 或者 –existing 只显示存在的条目
4) -i 或者 –ignore-case 查找时忽略大小写
5) -r 或者 –regexp 使用正则表达式
6) –regex 使用扩展正则表达式

内容三:locate 命令的案例

3.1 案例一:查找包含 passwd 的文件

# locate passwd

3.2 案例二:在 /etc/ 目录下查找以 sh 开头的文件

# locate /etc/sh

3.3 案例三:在当前目录下查找以 r 开头的文件并忽略大小写

# locate -i ~/r

3.4 案例四:使用正则表达式超找包含 1.txt 或 2.txt 的文件

# locate -r [1-2].txt