文章目录
- 加固文件说明
- 【重启auditd服务后/etc/audit/audit.rules文件内容消失怎么处理】
- 【用户的的本地登录和远程登录默认都会被审计; 2,可配置对chown、chmod、chcon等命令的执行进行审计;
- 【ssh会话默认会被审计;】
- 【可添加审计规则(/etc/audit/rules.d/*.rules),对指定用户(包括管理员)的相关操作进行审计】
- 【通过审计日志记录事务类型、时间及状态等;】
- 【对于本地登录,审计记录中会包含“tty=ttyN”;】
- 【对于远程登录,审计记录中会包含“addr=IP_ADDRESS ”;】
- 【在这类审计事件中会记录如下信息:name="/some/path" inode=NNN dev=XX:YY obj=XXX_u:YYY_r:ZZZ_t】
- 【ssh会话的审计记录样例:$ ausearch -m USER_LOGOUT】
- 【如何通过ossec入侵检测工具实现 潜在侵害分析:设置审计日志累积或组合的规则, 使用这些规则去监测已经生成的审计事件,并根据这些规则指示出对系统安全运行的潜在侵害;】
- 【通过审计配置文件/etc/audit/auditd.conf 实现审计日志存储管理,有关的设置有:... space_left_action 审计记录所在文件系统的剩余磁盘空间低于最低阈值时采取的动作,一般是rotate;】
- 【1.?可创建文件/forcefsck或者配置内核命令行参数("fsck.mode=force fsck.repair=yes ")以强制启动时做文件系统检查和恢复;】
- 【对于ext2/3/4文件系统,可通过命令tune2fs -c 1 】
- 【/dev/sda1设置成每次mount前都对/dev/sda1做文件系统检查和恢复;】
- 【可使用命令badblocks手动检查磁盘状态、恢复或标记磁盘坏块。】
- 【1,对文件的加解密(示例,需输入口令):]
- 【2,通过内核模块ecryptfs和软件包ecryptfs-utils,可实现目录的加密;同时也支持用户选择SM4、AES等算法进行加密。】
- 【openssh实现基于SSH协议的通讯,可使用国密算法进行通讯数据加密和保护数据完整性】
- 【安装程序和包管理器在安装文件的同时,会设置相关文件的各种安全属性;】
- 【备份管理员的登录SHELL为自动备份工具,即,他登录后会自动启动备份/恢复,且无法进行备份/恢复之外的任何工作。】
- 【系统在文件/etc/profile中设置了公共的安全相关属性, 比如TMOUT和UMASK。用户也可通过自己的配置文件进行调整;】
- 【默认审计规则保存在文件】
- 附件1.服务器操作系统安全加固要求及配置建议【下】
加固文件说明
文件中整改是下图这样式的。
【重启auditd服务后/etc/audit/audit.rules文件内容消失怎么处理】
-
如果重启 auditd 服务后 /etc/audit/audit.rules 文件的内容消失了,可能是因为系统存在其他的规则文件,这些文件的规则优先级比 /etc/audit/audit.rules 文件高,导致 /etc/audit/audit.rules 文件的规则被覆盖了。
-
解决方法是查找并整合所有的规则文件,将其中的规则整合到 /etc/audit/audit.rules 文件中,然后再次重启 auditd 服务。
首先,使用如下命令查找所有规则文件:
find / -type f -name "*.rules"
找到后,使用 cat 命令将所有规则文件的内容输出到一个文件中:
cat /path/to/first/rules/file /path/to/second/rules/file > /path/to/merged/rules/file
- 然后,在 /etc/audit/audit.rules 文件中添加并合并所有规则。
最后,使用命令 service auditd restart 重启 auditd 服务使新的规则文件生效。
另外,建议在配置 auditd 服务时尽量使用 /etc/audit/audit.rules 文件,这样可以避免由于各种规则文件的冲突而导致的问题。 - 解决:下面2个文件中内容保持一致即可
cat /etc/audit/audit.rules
cat /etc/audit/rules.d/audit.rules
【用户的的本地登录和远程登录默认都会被审计; 2,可配置对chown、chmod、chcon等命令的执行进行审计;
- 可对系统调用(如open、creat、mkdir、rmdir、unlink)等进行审计,可覆盖各类客体的创建和删除;
对系统调用(如socket、bind)等进行审计;】 - 要启用本地登录和远程登录审计,需要对Linux系统进行一些配置。具体步骤如下:
使用命令vi /etc/audit/audit.rules
和vi /etc/audit/rules.d/audit.rules
打开审计规则文件。
分别添加以下内容到审计规则文件中:
#用户的的本地登录和远程登录默认都会被审计;
-w /var/log/faillog -p wa -k logins
-w /var/log/lastlog -p wa -k logins
-w /var/run/faillock/ -p wa -k logins
-w /var/log/tallylog -p wa -k logins
#2,可配置对chown、chmod、chcon等命令的执行进行审计;
-a exit,always -F arch=b64 -S chown -S fchown -S fchownat -F auid>=1000 -F auid!=4294967295 -k chown
-a exit,always -F arch=b64 -S chmod -F auid>=1000 -F auid!=4294967295 -k chmod
-a exit,always -F arch=b64 -S chcon -F auid>=1000 -F auid!=4294967295 -k chcon
#可对系统调用(如open、creat、mkdir、rmdir、unlink)等进行审计,可覆盖各类客体的创建和删除;
-a exit,always -F arch=b64 -S creat -S open -S openat -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S creat -S open -S openat -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S mkdir -S mknod -S mkfifo -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S mkdir -S mknod -S mkfifo -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S rmdir -S unlink -S rename -S symlink -S link -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S rmdir -S unlink -S rename -S symlink -S link -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
#对系统调用(如socket、bind)等进行审计;
-a exit,always -F arch=b64 -S socket -F auid>=1000 -F auid!=4294967295 -k socket
-a exit,always -F arch=b64 -S bind -F auid>=1000 -F auid!=4294967295 -k bind
-a exit,always -F arch=b64 -S listen -F auid>=1000 -F auid!=4294967295 -k listen
-a exit,always -F arch=b64 -S connect -F auid>=1000 -F auid!=4294967295 -k connect
- 保存并退出审计规则文件。
- 使用命令
service auditd restart
重启审计服务。
【ssh会话默认会被审计;】
-
在很多 Linux 发行版中,sshd 服务默认会开启审计功能,记录所有的 ssh 会话信息。如果没有开启审计功能,可以按照以下步骤进行配置:
-
编辑
/etc/ssh/sshd_config
文件,找到下列设置,将注释 # 去掉:
#SyslogFacility AUTHPRIV
#LogLevel INFO
#AuthorizedKeysFile .ssh/authorized_keys
- 接着,在文件中添加以下设置:
# Enable auditing for SSH sessions
UsePAM yes
-
保存并关闭文件。
-
重启 sshd 服务以使配置生效,可以使用以下命令:
systemctl restart sshd
-
完成上述配置后,所有的 ssh 会话信息都会被记录到审计日志中,可以使用如下命令查看 ssh 会话相关的审计事件:
- (暂不做)
ausearch -c sshd -ts recent
- 注意:在使用以上方法配置 ssh 审计功能时,可能会产生大量的日志信息,需要适当的配置审计策略和日志轮转策略来管理审计日志,以免影响系统性能和存储空间。
- (暂不做)
-
/etc/pam.d/sshd下添加下列内容 (注意看,已经配置有,不要重复配置)
session required pam_loginuid.so
【可添加审计规则(/etc/audit/rules.d/*.rules),对指定用户(包括管理员)的相关操作进行审计】
-
要对指定用户(包括管理员)的相关操作进行审计,可以在 /etc/audit/rules.d/ 目录下新建一个 .rules 文件,并在其中添加指定的审计规则。
-
以下是一个例子,将审计规则添加到
/etc/audit/rules.d/user.rules
文件中,目的是对用户名为“exampleuser”的用户的操作进行审计:
# Add rules to audit Example User's actions
-a always,exit -F arch=b64 -F euid=exampleuser -F auid=exampleuser -k exampleuser_actions
-
以上规则的含义是:对于用户名为“exampleuser”、操作架构为 b64、可执行密码为“exampleuser”的操作都进行审计,并在审计日志中记录关键字“exampleuser_actions”。
-
添加完成后,(暂不做)需使用命令
auditctl -R /etc/audit/rules.d/user.rules
重启审计服务生效。 -
另外,需要注意的是,以上方法只适用于指定明确的用户。如果要对管理员的所有操作进行审计,可以使用下面这个规则:
# Add rules to audit all administrator actions
-a always,exit -F arch=b64 -F euid=0 -F auid>=1000 -F auid!=4294967295 -k admin_actions
- 以上规则的含义是:对于所有管理员操作(EUID 为 0,并且 AUID 大于等于 1000 且不等于 4294967295,这个数是用于未知用户的标识),记录关键字“admin_actions”。
【通过审计日志记录事务类型、时间及状态等;】
- 要通过审计日志记录事务类型、时间及状态等信息,需要编写相应的审计规则,并将其添加到审计规则文件中。以下是一个例子:将审计规则添加到
/etc/audit/rules.d/myrule.rules
文件中
-a always,exit -F arch=b64 -S execve -k shell_audit
- 以上的规则的含义是:当有一个 execve 系统调用发生时,将记录该操作的时间、执行结果、执行者等信息,并将其关联到 shell_audit 关键字。具体来说,以上规则会记录所有的命令执行行为、时间、执行结果等信息。
- (暂不做)添加完成后,使用命令
auditctl -R /etc/audit/rules.d/myrule.rules
重启审计服务生效。 - 审计日志将会记录关于规则中指定的事件的所有详细信息,包括操作类型(例如,文件、网络等),发生的事件时间,是谁发起了事件,事件是否成功,以及所涉及的文件、进程等其他相关信息。这些信息可以通过查看 /var/log/audit/audit.log 文件来获取,例如:
type=SYSCALL msg=audit(1629855505.081:59): arch=c000003e syscall=59 success=yes exit=0 a0=55a33d5bd600 a1=55a33d6059f0 a2=55a33d5ff570 a3=55a33d5bd850 items=2 ppid=9918 pid=10012 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts0 ses=9 comm="bash" exe="/usr/bin/bash" key="shell_audit"
以上日志记录了一个发生在 2021 年 8 月 24 日 12:45:05(audit(1629855505.081:59))的 execve 系统调用(type=SYSCALL),执行这个调用的进程是 bash(comm="bash",exe="/usr/bin/bash"),调用成功(success=yes),并被记录在关键字为 shell_audit 的审计日志中(key="shell_audit")。
【对于本地登录,审计记录中会包含“tty=ttyN”;】
-
对于本地登录,以及在终端上执行的命令,审计记录中会包含“tty=ttyN”信息,其中“ttyN”表示登录的终端设备名称。
-
要对终端设备名称进行审计记录,可以使用以下规则:将审计规则添加到
/etc/audit/rules.d/myrule.rules
文件中
-a exit,always -S execve -F auid>=500 -F auid!=4294967295 -F arch=b64 -F success=1 -F key=local_login -k local_login
-
以上规则的含义是:当有一个 execve 系统调用发生时,若操作者 auid 大于等于 500 且不为“4294967295”,并且该调用在64位操作架构上成功执行,将记录该事件的时间、执行结果、执行者、终端信息等,并将其关联到 local_login 关键字。
-
审计日志将会记录关于规则中指定的事件的所有详细信息,包括操作类型、发生的事件时间、是谁发起了事件、事件是否成功、终端信息等其他相关信息。这些信息可以通过查看 /var/log/audit/audit.log 文件来获取,例如:
type=SYSCALL msg=audit(1630739800.127:3006): arch=c000003e syscall=59 success=yes exit=0 a0=55e24b68c170 a1=55e24b6d0040 a2=55e24b6cfe20 a3=55e24b68c640 items=2 ppid=8111 pid=8189 auid=1000 uid=1000 gid=1000 euid=1000 suid=0 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts/0 ses=2 comm="sudo" exe="/usr/bin/sudo" key="local_login"
以上日志记录了一个发生在 2021 年 9 月 4 日 15:43:20(audit(1630739800.127:3006))的 execve 系统调用(type=SYSCALL),执行该调用的进程为 sudo(comm="sudo",exe="/usr/bin/sudo"),调用成功(success=yes),并被记录在关键字为 local_login 的审计日志中(key="local_login")。同时,该审计记录还包含了相关用户信息(auid、uid、gid、euid、suid、fsuid、egid、sgid、fsgid)、终端设备信息(tty=pts/0)等。
【对于远程登录,审计记录中会包含“addr=IP_ADDRESS ”;】
- 对于远程登录,审计记录中会包含“addr=IP_ADDRESS”信息,其中“IP_ADDRESS”表示登录的远程主机 IP 地址。
- 要对远程登录进行审计记录,可以使用以下规则:将审计规则添加到
/etc/audit/rules.d/myrule.rules
文件中
-a exit,always -F arch=b64 -S execve -F success=1 -F auid>=500 -F auid!=4294967295 -k remote_login
-
以上规则的含义是:当有一个 execve 系统调用发生时,若操作者 auid 大于等于 500 且不为“4294967295”,并且该调用在64位操作架构上成功执行,将记录该事件的时间、执行结果、执行者、远程主机 IP 地址等,并将其关联到 remote_login 关键字。
-
审计日志将会记录关于规则中指定的事件的所有详细信息,包括操作类型、发生的事件时间、是谁发起了事件、事件是否成功、远程主机 IP 地址等其他相关信息。这些信息可以通过查看 /var/log/audit/audit.log 文件来获取,例如:
type=USER_AUTH msg=audit(1630862591.49:217): pid=95686 uid=0 auid=1000 \
ses=229 subj==unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 \
msg='op=PAM:authentication grantors=pam_unix acct=exampleuser \
exe=/usr/sbin/sshd (hostname=example.com,addr=192.168.1.100,port=60616) \
result=Success'
以上日志记录了一个发生在 2021 年 9 月 5 日 22:16:31(audit(1630862591.49:217))的远程登录认证事件(type=USER_AUTH),通过 sshd 进程(exe=/usr/sbin/sshd)对一个名为“exampleuser”的用户进行认证授权,并且来自 IP 地址 192.168.1.100(addr=192.168.1.100)。审计日志中还包含了关于该事件的其他详细信息,例如执行该事件的进程 ID(pid)、执行该事件的用户 ID(uid)、创建该事件的会话 ID(ses)、认证结果(result)等信息。
【在这类审计事件中会记录如下信息:name=“/some/path” inode=NNN dev=XX:YY obj=XXX_u:YYY_r:ZZZ_t】
-
在审计事件中,
name="/some/path" inode=NNN dev=XX:YY obj=XXX_u:YYY_r:ZZZ_t
记录了文件或目录信息,可以通过这些信息确定事件所发生的文件或目录,并追踪相关的权限和安全策略等。 -
其中,name=“/some/path” 表示文件或目录的路径名为 /some/path;inode=NNN 表示文件或目录的 inode 编号为 NNN;dev=XX:YY 表示文件或目录所在的设备号为 XX:YY;obj=XXX_u:YYY_r:ZZZ_t 表示文件或目录的安全属性为 XXX_u:YYY_r:ZZZ_t。
- 在审计记录中,还可能包含其他与文件或目录相关的信息,例如文件或目录的创建、修改、删除时间等。这些信息可以通过审计记录中的不同字段进行访问和查看,具体取决于所应用的审计规则和审计日志格式等配置。
- 要确定一个文件或目录是否为安全威胁的来源,可以分析与该文件或目录相关的访问、权限等操作。例如,若某个文件的属性被修改或者未经授权被访问,则可能存在安全威胁,需要及时进行调查和应对。同时,还需要根据具体情况进行安全性评估,确定适当的安全策略和控制措施,以防止类似事件再次发生。
-
在审计记录中记录文件或目录信息需要在审计规则中添加相应的选项。可以使用以下规则来记录文件或目录相关信息:将审计规则添加到
/etc/audit/rules.d/myrule.rules
文件中
#name="/some/path"
-a exit,always -F arch=b64 -S open,openat -F dir=/some/path -F success=1 -F auid>=500 -F auid!=4294967295 -k file_access
# inode=NNN dev=XX:YY obj=XXX_u:YYY_r:ZZZ_t
-a exit,always -F arch=b64 -S open,openat -F success=1 -F auid>=500 -F auid!=4294967295 \
-F subj_role=object_r:ZZZ_t -F subj_user=XXX_u -F subj_user!=unconfined_u \
-F subj_user!=system_u -F subj_user!=root -F subj_user!=sshd_t \
-F subj_user!=syslogd_t -F subj_user!=dbus-daemon \
-k file_access
- 上面配置代码说明:
-a exit,always -F arch=b64 -S open,openat -F dir=/some/path -F success=1 -F auid>=500 -F auid!=4294967295 -k file_access
以上规则的含义是:当有一个 open 或 openat 系统调用发生时,若打开的文件满足以下条件:
位于路径名为 /some/path 的目录下(-F dir=/some/path);
在 64 位模式下成功打开(-F arch=b64,-F success=1);
并且被有效用户 ID 大于或等于 500 且不等于 “4294967295” 的用户打开(-F auid>=500,-F auid!=4294967295)。
则将记录该事件的时间、执行结果、执行者、相关文件信息等,并将其关联到 file_access 关键字。
要启用审计规则,可以使用 auditctl 工具,在命令行中执行以下命令:
(暂不做)auditctl -w /some/path -p wa -k file_access
以上命令的含义是:在 /some/path 目录下监视所有在此目录中的文件和目录的写和访问(-p wa),并在审计日志中记录相关事件,并使用 "file_access" 作为关键字(-k file_access)。
当系统执行该规则所监控的访问或操作时,相关的审计事件将记录在审计日志中。审核人员可以查看审计日志,确定是否存在未经授权的文件或目录访问或操作,及时进行调查并采取适当的安全控制措施。在不需要记录这些事件时,可以使用 auditctl -d watch /some/path 命令在运行时删除规则。
-a exit,always -F arch=b64 -S open,openat -F success=1 -F auid>=500 -F auid!=4294967295 \
-F subj_role=object_r:ZZZ_t -F subj_user=XXX_u -F subj_user!=unconfined_u \
-F subj_user!=system_u -F subj_user!=root -F subj_user!=sshd_t \
-F subj_user!=syslogd_t -F subj_user!=dbus-daemon \
-k file_access
以上规则的含义是,当有一个 open 或 openat 系统调用发生时,若打开的文件满足以下条件:
在 64 位模式下成功打开(-F arch=b64,-F success=1);
并且被有效用户 ID 大于或等于 500 且不等于 “4294967295” 的用户打开(-F auid>=500,-F auid!=4294967295);
并且该文件的安全上下文满足:对象角色为 ZZZ_t(-F subj_role=object_r:ZZZ_t),用户为 XXX_u(-F subj_user=XXX_u);
并且该文件的用户不为 unconfined_u、system_u、root、sshd_t、syslogd_t 和 dbus-daemon(-F subj_user!=unconfined_u,-F subj_user!=system_u,-F subj_user!=root,-F subj_user!=sshd_t,-F subj_user!=syslogd_t,-F subj_user!=dbus-daemon)。
则将记录该事件的时间、执行结果、执行者、相关文件信息等,并将其关联到 file_access 关键字。
- (暂不做)要启用审计规则,可以使用 auditctl 工具,在命令行中执行以下命令:
auditctl -a always,exit -F arch=b64 -S open,openat \
-F subj_user!=unconfined_u \
-F subj_user!=system_u \
-F subj_user!=root \
-F subj_user!=sshd_t \
-F subj_user!=syslogd_t \
-F subj_user!=dbus-daemon \
-F auid>=500 \
-F auid!=4294967295 \
-F subj_role=object_r:ZZZ_t \
-k file_access
- 以上命令的含义是:监控所有在系统中打开的文件,满足以下条件时记录审计记录:
打开文件的用户不为 unconfined_u、system_u、root、sshd_t、syslogd_t 和 dbus-daemon(-F subj_user!=unconfined_u,-F subj_user!=system_u,-F subj_user!=root,-F subj_user!=sshd_t,-F subj_user!=syslogd_t,-F subj_user!=dbus-daemon);
打开文件的用户 ID 大于或等于 500 且不等于“4294967295”(-F auid>=500 且 -F auid!=4294967295);
被打开的文件的角色为 ZZZ_t(-F subj_role=object_r:ZZZ_t);
在 64 位模式下成功打开文件。
并且记录关键字为 file_access(-k file_access)。
当系统执行该规则所监控的访问或操作时,相关的审计事件将记录在审计日志中。审核人员可以查看审计日志,确定是否存在未经授权的文件或目录访问或操作,及时进行调查并采取适当的安全控制措施。在不需要记录这些事件时,可以使用 auditctl -d always,exit -F arch=b64 -S open,openat -F subj_user!=unconfined_u -F subj_user!=system_u -F subj_user!=root -F subj_user!=sshd_t -F subj_user!=syslogd_t -F subj_user!=dbus-daemon -F auid>=500 -F auid!=4294967295 -F subj_role=object_r:ZZZ_t -k file_access 命令在运行时删除规则。
【ssh会话的审计记录样例:$ ausearch -m USER_LOGOUT】
- 要记录 SSH 会话的审计记录,需要在审计规则中添加相应的选项。。可以使用以下规则来记录文件或目录相关信息:将审计规则添加到
/etc/audit/rules.d/myrule.rules
文件中 - 以下规则可以记录 sshd 会话的连接、断开和认证事件:
-w /var/log/lastlog -p wa -k ssh_login
-w /var/log/utmp -p wa -k ssh_login
-w /var/log/wtmp -p wa -k ssh_login
-a exit,always -F arch=b64 -S connect -S accept -F success=1 -F auid>=500 -F auid!=4294967295 \
-k ssh_connect
-a exit,always -F arch=b64 -S setresuid,setreuid,setuid -F auid>=500 \
-F auid!=4294967295 -F exe=/usr/sbin/sshd -k ssh_auth
-a exit,always -F arch=b64 -S disconnect -F success=1 -F auid>=500 -F auid!=4294967295 \
-k ssh_disconnect
- 以上规则的含义是,将会监控以下事件:
/var/log/lastlog、/var/log/utmp、/var/log/wtmp 的任何更改和访问(-w /var/log/lastlog -p wa,-w /var/log/utmp -p wa,-w /var/log/wtmp -p wa),并关联到 ssh_login 关键字中(-k ssh_login);
执行成功的 connect 和 accept 系统调用,并且被有效用户 ID 大于或等于 500 且不等于 4294967295 的用户所触发(-S connect,-S accept,-F success=1,-F auid>=500,-F auid!=4294967295),并关联到 ssh_connect 关键字中(-k ssh_connect);
/usr/sbin/sshd 进程执行时的 setresuid、setreuid 和 setuid 系统调用,被有效用户 ID 大于或等于 500 且不等于 4294967295 的用户所触发(-S setresuid,-S setreuid,-S setuid,-F auid>=500,-F auid!=4294967295,-F exe=/usr/sbin/sshd),并关联到 ssh_auth 关键字中(-k ssh_auth);
断开的 sshd 会话,并且断开的用户是有效用户 ID 大于或等于 500 且不等于 4294967295 的用户(-S disconnect,-F success=1,-F auid>=500,-F auid!=4294967295),并关联到 ssh_disconnect 关键字中(-k ssh_disconnect)。
(暂不做)要启用审计规则,可以使用 auditctl 工具,在命令行中执行以下命令:
auditctl -w /var/log/lastlog -p wa -k ssh_login
auditctl -w /var/log/utmp -p wa -k ssh_login
auditctl -w /var/log/wtmp -p wa -k ssh_login
auditctl -a always,exit -F arch=b64 -S connect -S accept -F success=1 -F auid>=500 -F auid!=4294967295 -k ssh_connect
auditctl -a always,exit -F arch=b64 -S setresuid,setreuid,setuid -F auid>=500 -F auid!=4294967295 -F exe=/usr/sbin/sshd -k ssh_auth
auditctl -a always,exit -F arch=b64 -S disconnect -F success=1 -F auid>=500 -F auid!=4294967295 -k ssh_disconnect
当 SSH 会话连接、断开或认证时,相关的审计事件将记录在审计日志中。可以使用 ausearch 工具来检索审计日志,例如:
ausearch -m USER_LOGIN
以上命令用于检索与 SSH 会话相关的登录事件的审计记录。在不需要记录这些事件时,可以使用 auditctl -d watch /var/log/lastlog -p wa -k ssh_login,auditctl -d watch /var/log/utmp -p wa -k ssh_login,auditctl -d watch /var/log/wtmp -p wa -k ssh_login,auditctl -d always,exit -F arch=b64 -S connect -S accept -F success=1 -F auid>=500 -F auid!=4294967295 -k ssh_connect,auditctl -d always,exit -F arch=b64 -S setresuid,setreuid,setuid -F auid>=500 -F auid!=4294967295 -F exe=/usr/sbin/sshd -k ssh_auth,auditctl -d always,exit -F arch=b64 -S disconnect -F success=1 -F auid>=500 -F auid!=4294967295 -k ssh_disconnect 命令在运行时删除规则。
【如何通过ossec入侵检测工具实现 潜在侵害分析:设置审计日志累积或组合的规则, 使用这些规则去监测已经生成的审计事件,并根据这些规则指示出对系统安全运行的潜在侵害;】
-
要安装工具,没做。
-
OSSEC 入侵检测工具支持通过设置规则来监测已经生成的审计事件并进行潜在侵害分析。具体实现步骤如下:
-
配置 OSSEC 日志文件收集器,以便收集审计日志文件。可以在 OSSEC 客户端上添加以下规则来收集审计日志文件:
<localfile>
<log_format>syslog</log_format>
<location>/var/log/audit/audit.log</location>
</localfile>
- 在 OSSEC 规则文件中增加相关规则,以监控已生成的审计事件。规则可以根据不同的需求进行定制,例如,在分析 sshd 会话的潜在侵害方面,可以使用以下规则:
<rule id="100001" level="10">
<program_name>sshd</program_name>
<if_matched_sid>expires</if_matched_sid>
<description>Multiple sshd logins by single user</description>
</rule>
<rule id="100002" level="10">
<program_name>sshd</program_name>
<if_matched_sid>setgroups</if_matched_sid>
<description>Attempting to abuse ssh session by calling setgroups</description>
</rule>
<rule id="100003" level="10">
<program_name>sshd</program_name>
<if_matched_sid>setgid</if_matched_sid>
<description>Attempting to abuse ssh session by calling setgid</description>
</rule>
<rule id="100004" level="10">
<program_name>sshd</program_name>
<if_matched_sid>setuid</if_matched_sid>
<description>Attempting to abuse ssh session by calling setuid</description>
</rule>
-
以上规则用于监控 sshd 会话中出现的多次登录、调用 setgroups、setgid 和 setuid 的情况,并根据规则描述进行相应的提示。
-
在 OSSEC 管理界面中启用新规则,并开始分析监控日志。可以使用 ossec-logtest 命令进行测试以确保规则能够正常工作。
-
根据 OSSEC 中生成的警报报告来进行潜在侵害分析。可以使用 OSSEC 的管理界面或命令行工具来查看生成的警报。
-
通过设置审计日志累积或组合的规则,使用这些规则去监测已经生成的审计事件,并根据这些规则指示出对系统安全运行的潜在侵害,可以帮助系统管理员及时发现潜在的侵害并进行处理。
【通过审计配置文件/etc/audit/auditd.conf 实现审计日志存储管理,有关的设置有:… space_left_action 审计记录所在文件系统的剩余磁盘空间低于最低阈值时采取的动作,一般是rotate;】
- 其他都有,将
space_left_action=SYSLOG
改为space_left_action=ROTATE
- 内容解释:/etc/audit/auditd.conf 文件中的 SYSLOG 和 rotate 参数分别表示以下内容:
- SYSLOG
该参数用于指定日志记录文件是否发送到系统的 syslog 服务。其有效值为 yes 或 no。如果将该值设置为 yes,则这些日志记录将传递给 /var/log/messages 文件中的 syslog 服务。当 SYSLOG 参数设置为 no 时,日志记录将仅写入本地日志文件中。默认值为 yes。 - rotate
rotate 参数用于设置最大日志文件大小。该参数指定旧日志文件在被删除之前可以增长到的最大大小。默认值为 0,表示不限制日志文件大小。如果设置了 max_log_file 选项,该选项将覆盖 rotate 选项。
在实践中,应结合操作系统的日志记录策略,选择合适的 SYSLOG 选项设置。如果 SYSLOG 设置为 yes,并且 max_log_file 和 rotate 选项都设置为适当的值,则可以在本地和远程记录存储之间平衡审计数据的存储。如果 SYSLOG 选项设置为 no,则建议设置 rotate 和 max_log_file 参数,以确保日志文件大小处于可管理的范围。
- SYSLOG
【1.?可创建文件/forcefsck或者配置内核命令行参数("fsck.mode=force fsck.repair=yes ")以强制启动时做文件系统检查和恢复;】
-
可以通过创建 /forcefsck 文件或配置内核命令行参数来强制执行系统下一次启动时的文件系统检查。
-
创建 /forcefsck 文件
在 Linux 系统中,如果存在 /forcefsck 文件,则会在下一次开始引导时强制执行文件系统检查。如果 /forcefsck 文件不存在,则系统通常不会执行 fsck 检查。
为了创建 /forcefsck 文件,请确保具有 root 用户访问权限,并执行以下命令:
touch /forcefsck
-
这是一种通过配置内核命令行参数来强制进行文件系统检查和修复的方式。
fsck.mode=force
表示在下一次启动时强制执行文件系统检查,fsck.repair=yes
表示自动修复检测到的问题。 -
以下是设置 fsck.mode=force fsck.repair=yes 参数的步骤:
打开/etc/default/grub
文件:
vi /etc/default/grub
# 在 GRUB_CMDLINE_LINUX 行中添加 fsck.mode=force fsck.repair=yes:
GRUB_CMDLINE_LINUX="fsck.mode=force fsck.repair=yes"
-
保存并关闭文件。
-
重新生成 GRUB 配置:
update-grub
- 重启系统以使新配置生效。
- 在下一次启动时,将强制执行文件系统检查,并自动修复检测到的问题。请注意,这可能需要一段时间来完成,具体取决于文件系统的大小和状态。在检查完成之后,系统将正常引导。
- 请注意,在某些情况下,自动修复可能无法修复所有问题,并可能导致数据丢失。因此,在执行此操作之前,请务必备份您的重要数据。
【对于ext2/3/4文件系统,可通过命令tune2fs -c 1 】
- 先查看有没有ext2/3/4文件系统,如果有,继续做下面操作,没有则跳过
[root@controller01 ~]# df -Th
Filesystem Type Size Used Avail Use% Mounted on
/dev/sda3 xfs 1.5T 16G 1.5T 2% /
devtmpfs devtmpfs 252G 0 252G 0% /dev
tmpfs tmpfs 252G 0 252G 0% /dev/shm
tmpfs tmpfs 252G 4.1G 248G 2% /run
tmpfs tmpfs 252G 0 252G 0% /sys/fs/cgroup
/dev/sda1 xfs 492M 120M 373M 25% /boot
[root@controller01 ~]#
- tune2fs 命令可以用于设置 ext2/3/4 文件系统的各种参数,包括强制执行文件系统检查的计数器。
- -c 选项用于指定下一次引导时执行 fsck 文件系统检查的计数器值。将该值设置为 1 将导致强制在下一次启动时执行文件系统检查。因此,执行以下命令将设置文件系统检查计数器为 1:
tune2fs -c 1 /dev/[filesystem]
#将 /dev/[filesystem] 替换为您要设置计数器的实际文件系统设备。
请注意,这种方法不会立即强制执行文件系统检查,而是在下一次引导时强制执行。
【/dev/sda1设置成每次mount前都对/dev/sda1做文件系统检查和恢复;】
-
要在每次安装或挂载时都对 sda1 文件系统进行检查和修复,可以在 /etc/fstab 文件中添加一个 fsck 选项。
-
下面是如何编辑 /etc/fstab 文件以添加 fsck 选项:
#找到 sda1 文件系统的行,然后在该行中添加 fsck 选项。该行应该类似于以下内容:
[root@controller01 ~]# cat /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun Jan 7 12:49:59 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
UUID=e371dd69-5c99-4a0c-9d05-a1d126bcd69b / xfs defaults 0 0
UUID=12142df1-e896-42aa-ba5c-1304b0135811 /boot xfs defaults 0 0
UUID=cebf9a93-8834-4120-887d-c8791383a8cf swap swap defaults 0 0
[root@controller01 ~]#
[root@controller01 ~]# blkid
/dev/sda1: UUID="12142df1-e896-42aa-ba5c-1304b0135811" TYPE="xfs"
/dev/sda2: UUID="cebf9a93-8834-4120-887d-c8791383a8cf" TYPE="swap"
/dev/sda3: UUID="e371dd69-5c99-4a0c-9d05-a1d126bcd69b" TYPE="xfs"
[root@controller01 ~]#
# 在 defaults 参数之后添加 fsck 选项。
[root@controller01 ~]# cat /etc/fstab | grep fsck
UUID=12142df1-e896-42aa-ba5c-1304b0135811 /boot xfs defaults,fsck 0 0
[root@controller01 ~]#
-
现在,每次挂载 sda1 文件系统时,系统都会强制执行文件系统检查和修复。
请注意,每次检查都会花费一定的时间,并且可能会导致一些问题的修复。在检查时,文件系统将被挂载为只读,这意味着您无法写入或修改文件系统,直到检查完成并系统被重新引导。 -
在 /etc/fstab 文件中,每个文件系统都有一个对应的条目。该条目包含六个标记,每个标记用空格分隔。这些标记的含义如下:
- 文件系统的设备或UUID:这是文件系统的标识符,用于指示 mount 命令将其安装到哪个设备或分区上。
- 文件系统挂载点:这是文件系统在文件系统树中的位置,它将被 mount 命令挂载到该位置。
- 文件系统类型:这是文件系统的类型,例如 ext4 或 ntfs。
- 挂载选项:此选项用于指定文件系统应如何挂载。通常使用 defaults 指定默认挂载选项。其他选项如 noatime、ro 等也可以在此处指定。
- dump:该值控制备份程序是否应该备份该文件系统。通常将其设置为 0 (不备份)。
- fsck:该值指定了在启动时系统应检查哪些文件系统。 0 表示不检查(因此通常适用于文件系统已经应用了日志或其他检查机制的情况),而 1 表示应检查。如果该值被设置为 2(例如 fsck.passno=2),则将迫使文件系统在其它文件系统之后进行检查。
- 在这里 fsck 的值设置为 2,这意味着在 /etc/fstab 中的所有文件系统都应该被检查并修复。大多数Linux发行版通常将根文件系统设置为 fsck.passno=1,将其他文件系统设置为 fsck.passno=2。
【可使用命令badblocks手动检查磁盘状态、恢复或标记磁盘坏块。】
-
不做操作【有badblocks命令就行】
-
badblocks 命令可以用于手动检查磁盘状态、恢复或标记磁盘坏块。
下面是 badblocks 命令的一些常用选项:-
-n 选项用于指定要检查的块数。
sudo badblocks -n 100 /dev/[device]
上面的命令将检查设备 /dev/[device] 上的前 100 个块。 -
-w 选项用于执行写入模式,可以将磁盘上所有已知坏块标记为不良块并将其写入。如果您准备重建文件系统,请使用这个选项。
sudo badblocks -w /dev/[device]
上面的命令将标记 /dev/[device] 上所有已知的坏块。 -
-p 选项用于显示磁盘上的所有已知坏块。
sudo badblocks -p /dev/[device]
上面的命令将显示设备 /dev/[device] 上的所有已知坏块。 -
请注意,badblocks 命令执行非常慢,因为它需要扫描整个磁盘表面以检测坏块。如果您要运行该命令,请确保您拥有足够的时间和耐心等待结果。
-
【1,对文件的加解密(示例,需输入口令):]
-
1,对文件的加解密(示例,需输入口令):
“openssl enc -d -sm4 -in CLEAR_FILE -out CRYPTED_FILE”
openssl enc -e -sm4 -in CRYPTED_FILE -out
CLEAR_FILE -
openssl命令是用 OpenSSL 工具执行的对称加密及解密操作。具体来说,它使用 SM4 算法加密/解密输入文件。
下面是您的命令中选项的含义:-
-d:表示使用解密模式。
-
-e:表示使用加密模式。
-
-sm4:表示使用 SM4 对称加密算法。
-
-in CLEAR_FILE:表示明文输入文件名。
-
-out CRYPTED_FILE:表示密文输出文件名。
-
所以,您的第一个命令将使用 SM4 加密算法解密 CRYPTED_FILE 文件内容,并将结果输出到 CLEAR_FILE 文件中。您需要在命令执行后输入所选密码/口令来进行解密操作。
-
而第二个命令则相反,它将使用 SM4 对称加密算法加密 CLEAR_FILE 内容,并将结果输出到 CRYPTED_FILE 文件中。同样,您需要在命令执行后输入所选密码/口令来进行加密操作。
-
-
要使用 OpenSSL 对文件进行加解密,您可以按照以下步骤操作:
-
1.安装 OpenSSL 程序,例如在 Ubuntu/Mint 中使用以下命令:
sudo apt-get install openssl
-
2.使用以下命令对明文文件进行加密:
openssl enc -aes-256-cbc -salt -in plaintext.txt -out encrypted.enc
在此命令中,plaintext.txt 是要加密的输入明文文件的路径,encrypted.enc 是加密后的输出文件的路径。-aes-256-cbc 表示使用 AES 加密算法,使用 CBC 模式进行加密;-salt 选项将随机生成一个 salt,并将其附加到加密输出中。 -
3.在进行加密操作后,系统将提示您输入加密口令。请记住此口令,以便解密该文件。
-
4.使用以下命令对加密的文件进行解密:
openssl enc -aes-256-cbc -d -in encrypted.enc -out decrypted.txt
此命令会解密 encrypted.enc 文件并将其输出到 decrypted.txt 文件中。-d 参数表示使用解密模式。 -
您需要在使用加密和解密命令时输入相同的密码口令。否则您将无法解密文件。
-
请注意,此方法执行加密和解密操作时需要输入密码,因此适合用于加密小型文档或保密文件。如果您要加密大量机密数据,请使用更强大的全盘加密系统,例如 LUKS 或 dm-crypt。
-
-
实例1 错误使用【会导致文件内容丢失,慎用】
[root@computer07 ~]# cat test1.txt
123
[root@computer07 ~]#
[root@computer07 ~]# cat test2.txt
222
[root@computer07 ~]# openssl enc -e -aes-256-cbc -in test1.txt -out test2.txt
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[root@computer07 ~]#
[root@computer07 ~]# #加密后test2中文件丢失
[root@computer07 ~]# cat test2.txt
Salted__&root@computer07 ~]#
[root@computer07 ~]# # 解密后test2文件内容依然丢失
[root@computer07 ~]# openssl enc -d -aes-256-cbc -in test2.txt -out test1.txt
enter aes-256-cbc decryption password:
[root@computer07 ~]#
[root@computer07 ~]# cat test2.txt
Salted__&root@computer07 ~]#
[root@computer07 ~]## 且因为解密后test1中的内容也没了
[root@computer07 ~]# cat test1.txt
[root@computer07 ~]#
- 实例2 正确使用
[root@computer07 ~]# cat test1.txt
111
this is test
this is test1.txt
666
[root@computer07 ~]#
[root@computer07 ~]# #下面开始加密,将test1.txt的文件加密到test1.enc中
[root@computer07 ~]# openssl enc -e -aes-256-cbc -in test1.txt -out test1.enc
enter aes-256-cbc encryption password:
Verifying - enter aes-256-cbc encryption password:
[root@computer07 ~]# test1.txt是原文,实际上可以删除了,后面通过test1.enc来恢复
[root@computer07 ~]# cat test1.enc
Salted__!KYws6,
wwoot@computer07 ~]#
[root@computer07 ~]#
[root@computer07 ~]# rm test1.txt
rm: remove regular file ‘test1.txt’? y
[root@computer07 ~]# # 下面开始恢复
[root@computer07 ~]# openssl enc -d -aes-256-cbc -in test1.enc -out test1huifu.
txt
enter aes-256-cbc decryption password:
[root@computer07 ~]#
[root@computer07 ~]# openssl enc -d -aes-256-cbc -in test1.enc -out test1huifu.
txt
enter aes-256-cbc decryption password:
[root@computer07 ~]#
[root@computer07 ~]# cat test1huifu.txt
111
this is test
this is test1.txt
666
[root@computer07 ~]#
[root@computer07 ~]#
【2,通过内核模块ecryptfs和软件包ecryptfs-utils,可实现目录的加密;同时也支持用户选择SM4、AES等算法进行加密。】
-
通过内核模块ecryptfs和软件包ecryptfs-utils,可以实现目录的加密,并且支持用户选择加密算法,包括SM4和AES等。
-
ecryptfs是一个开源的加密文件系统,可以在Linux中实现透明的目录加密。它使用AES或者其他加密算法来加密用户的文件和目录,同时也支持多种密钥管理技术,比如以用户口令作为加密密钥等。
-
下面是一个示例,使用 ecryptfs 工具对指定目录进行加密:
-
首先,我们需要安装 ecryptfs-utils 软件包:
sudo apt-get install ecryptfs-utils
-
然后,使用
/sbin/mount.ecryptfs
工具来创建一个加密目录:
sudo mount -t ecryptfs /path/to/source/dir /path/to/encrypted/dir
在这里,/path/to/source/dir
是需要加密的目录,/path/to/encrypted/dir
是输出的加密目录。当您运行该命令时,系统将提示您输入加密口令。 -
在您输入口令后,系统会自动将
/path/to/source/dir
目录中的所有文件和子目录加密到/path/to/encrypted/dir
中。 -
如果您想要卸载该加密目录,可以使用以下命令:
sudo umount /path/to/encrypted/dir
-
请注意,加密过程中会使用占用大量计算资源的加密算法。因此,如果您对文件进行频繁的读写操作,可能会导致一些性能问题。如果您需要保护的是整个系统或者根分区,建议使用Linux的全磁盘加密技术,如dm-crypt。
-
-
这玩意其实安装一个ecryptfs包就可以了,使用原理和上面一个一样。
【openssh实现基于SSH协议的通讯,可使用国密算法进行通讯数据加密和保护数据完整性】
-
OpenSSH 工具可以使用 SSH 协议来加密和保护通信数据的完整性,并且可以使用国密算法进行加密和保护数据的完整性。
-
SSH 是一种在网络中安全地远程连接和数据传输的协议,而 OpenSSH 是 SSH 的一个开源实现。OpenSSH 使用公钥加密和对称加密来加密和保护连接的数据,它在数据传输和验证身份方面非常安全和可靠。
-
国密算法是中国自主研发的密码算法,其安全性得到了国际认可。OpenSSH 从版本 7.4 开始支持国密算法(SM2、SM3、SM4)用于 SSH 安全连接。
-
以下是一个使用国密算法的 OpenSSH 示例:
生成密钥
使用以下命令生成服务端和客户端密钥:
ssh-keygen -t ecdsa -b 256 -m sm2p256v1 -f sm-key
这将生成 sm-key 和 sm-key.pub 两个文件。将 sm-key.pub 文件添加到服务端的 authorized_keys 文件中,用于客户端身份验证。 -
启用国密算法
在服务端 sshd 配置文件 /etc/ssh/sshd_config 中添加以下行:
KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp256,ecdh-sha2-nistp384,ecdh-sha2-nistp521,diffie-hellman-group-exchange-sha256,diffie-hellman-group14-sha1,sm2p256v1
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes256-ctr,sm4-cbc
这将启用 Curve25519、SM2p256v1 等算法的密钥交换和 chacha20-poly1305、AES256 等算法的加密算法。
-
SSH 连接
在客户端上,使用以下命令连接到服务端:
ssh -i sm-key user@server
参照您的实际情况进行相应的修改。运行此命令后,OpenSSH 将使用 SM2 和 SM4 算法加密和保护数据传输,并使用 SM4 算法保证数据的完整性。 -
请注意,由于国密算法的使用可能需要依赖特殊的软件支持,因此在使用国密算法时,请务必确保相关软件的安装和配置。
-
我们其实也是有限制的,跳过
[root@computer07 ~]# tail -n1 /etc/ssh/sshd_config
Ciphers aes128-ctr,aes192-ctr,aes256-ctr
[root@computer07 ~]#
【安装程序和包管理器在安装文件的同时,会设置相关文件的各种安全属性;】
-
是的,安装程序和包管理器在安装文件的同时,通常会自动设置相关文件的各种安全属性,如权限、所有权、SELinux 标签、AppArmor 或其他安全策略设置等。这些安全属性可以确保系统的安全性和稳定性,防止不必要的风险和漏洞。
-
下面是一些例子:
-
权限
安装程序和包管理器会自动为安装的文件设置适当的权限。这可以确保只有具有适当权限的用户才能访问和修改文件。 -
所有权
安装程序和包管理器通常会自动设置文件的所有权,以确保只有具有适当权限的用户才能访问和修改文件。 -
SELinux 标签
如果您的 Linux 系统使用 SELinux(Security-Enhanced Linux),则安装程序和包管理器可能会自动设置文件的 SELinux 标签。这可以确保文件在 SELinux 政策下被安全地使用。 -
AppArmor 或其他安全策略设置
类似地,如果您的 Linux 系统使用 AppArmor 或其他安全策略设置,安装程序和包管理器也可能会自动设置文件的相关安全属性,以确保它们在运行时受到适当的保护。 -
在使用安装程序或包管理器时,您应该确保它们能够操作和访问文件系统中的文件,并且要特别关注其对安全性的影响。如果您要手动设置文件的权限、所有权或其他安全属性,请确保您对相关设置有足够的了解,以避免不必要的风险和漏洞。
-
-
这些玩意系统自带的功能即可实现。
【备份管理员的登录SHELL为自动备份工具,即,他登录后会自动启动备份/恢复,且无法进行备份/恢复之外的任何工作。】
-
为了确保管理员的登录 Shell 在登录后自动启动备份/恢复操作,并且无法进行备份/恢复之外的任何操作,您可以使用系统权限控制工具来实现这个目标。
-
以下是一个可能的实现方法:
-
首先,您需要为管理员用户创建一个新的登录 Shell。您可以使用 chsh 命令来更改 Shell。例如,您可以将管理员的 Shell 更改为一个自定义的 Shell,例如
/usr/sbin/backups.sh
。 -
创建一个名为
backups.sh
的 Shell 脚本,该脚本能够启动备份/恢复操作。在这个脚本中,您可以使用 shell 函数或其他实现方式来实现备份/恢复操作,具体方式取决于您的自动备份工具。 -
在
backups.sh
脚本中,将其他所有文件和目录的权限设置为只读。这可以确保管理员无法进行其他任何操作,而只能进行备份/恢复操作。 -
最后,将
backups.sh
脚本添加到管理员用户的登录文件中,例如~/.profile
、~/.bash_profile
或~/.bashrc
。这将确保每次管理员登录时都会启动备份/恢复操作,且无法进行备份/恢复之外的其他工作。 -
请注意,这是一个简单的示例实现,具体实现方式可能因使用的自动备份工具和系统设置而有所不同。建议在实现前先充分测试,确保系统的安全和稳定性。
-
-
注:上面不是一个成品,而是一个思路。
【系统在文件/etc/profile中设置了公共的安全相关属性, 比如TMOUT和UMASK。用户也可通过自己的配置文件进行调整;】
-
系统在文件 /etc/profile 中设置了许多公共的安全相关属性,包括 TMOUT 和 UMASK 变量。
-
TMOUT 变量用于定义在用户空闲一段时间后,系统自动注销用户的时间限制(秒)。设定 TMOUT 可以避免用户长时间不活动,造成安全隐患。默认情况下,TMOUT 变量为 300 秒,即 5 分钟。
-
UMASK 变量用于定义新建文件和目录的默认权限掩码。权限掩码决定了文件所属组和其他用户能否读/写/执行该文件。设置 UMASK 可以帮助管理员控制默认文件/目录权限,从而提高系统的安全性。
-
-
同时,用户也可以通过自己的配置文件进行调整。对于 bash Shell,用户可以在
~/.bashrc
或~/.bash_profile
中设置和修改这些变量。例如,下面的命令可以将 TMOUT 设置为 600 秒:
export TMOUT=600
-
这将在用户空闲 10 分钟后自动注销用户。类似地,下面的命令可以将 UMASK 设置为 022,即所有新建文件/目录的权限掩码为 755,新建目录的权限为 644:
umask 022
-
请注意,需要管理员和用户了解变量的含义和取值范围,并根据实际需求进行设置和调整,以确保系统的安全性和稳定性。同时,建议管理员加强权限控制,例如通过限制用户对敏感文件和系统资源的访问,以避免潜在的安全问题。
-
上面是解释,我们其实已经做过了,跳过
[root@computer07 ~]# tail -n 5 /etc/profile
unset i
unset -f pathmunge
umask 027
TMOUT=180
export TMOUT
[root@computer07 ~]#
【默认审计规则保存在文件】
-
默认审计规则保存在文件
/etc/audit/audit.rules
。在大多数基于 Linux 的系统中,该文件存储了审计框架的规则和策略,用于记录系统上的重要事件和操作。它包含了一系列规则,比如何种事件应该被记录、记录哪些文件、记录哪些用户或组之类。 -
在
/etc/audit/audit.rules
文件中配置了审计规则一个常见的配置如下:
# This file contains the auditctl rules that are loaded
# whenever the audit daemon is started via the initscripts.
# The rules are simply the parameters that would be passed
# to auditctl.
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320
# Feel free to add below this line. See auditctl man page
-
这些默认规则可能会根据不同的 Linux 发行版和系统版本而有所不同。管理员可以根据实际需要添加、修改和删除规则,以满足特定的审核需求和目的。
- 可以使用 auditctl 工具来实现审计规则的添加、修改和删除。例如,下面的命令可以添加一个新规则,以记录所有对 /etc/passwd 文件的更改:
# auditctl -w /etc/passwd -p wa -k passwd_changes
- 此命令告诉审计框架监视 /etc/passwd 文件,并在执行 write 或 attribute 更改操作时记录相关事件,事件类型为 “passwd_changes”。
- 请注意,审计规则的设置和配置需要管理员对 Linux 系统和安全的深入了解,以确保正确地配置规则,并确保所记录的事件满足其审核和安全目的。
- 可以使用 auditctl 工具来实现审计规则的添加、修改和删除。例如,下面的命令可以添加一个新规则,以记录所有对 /etc/passwd 文件的更改:
-
在
/etc/audit/audit.rules
和/etc/audit/rules.d/audit.rules
文件中添加下面内容,之前存在的, 被删了,现在添加回去
# First rule - delete all
-D
# Increase the buffers to survive stress events.
# Make this bigger for busy systems
-b 320
- 使用命令
service auditd restart
重启 auditd 服务使新的规则文件生效。
[root@computer07 ~]# service auditd restart
Stopping logging: [ OK ]
Redirecting start to /bin/systemctl start auditd.service
[root@computer07 ~]#
[root@computer07 ~]# cat /etc/audit/audit.rules
## This file is automatically generated from /etc/audit/rules.d
-D
-b 320
-w /var/log/faillog -p wa -k logins
-w /var/log/lastlog -p wa -k logins
-w /var/run/faillock/ -p wa -k logins
-w /var/log/tallylog -p wa -k logins
-a exit,always -F arch=b64 -S chown -S fchown -S fchownat -F auid>=1000 -F auid!=4294967295 -k chown
-a exit,always -F arch=b64 -S chmod -F auid>=1000 -F auid!=4294967295 -k chmod
-a exit,always -F arch=b64 -S chcon -F auid>=1000 -F auid!=4294967295 -k chcon
-a exit,always -F arch=b64 -S creat -S open -S openat -S open_by_handle_at -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S creat -S open -S openat -S open_by_handle_at -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S mkdir -S mknod -S mkfifo -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S mkdir -S mknod -S mkfifo -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S rmdir -S unlink -S rename -S symlink -S link -F exit=-EACCES -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S rmdir -S unlink -S rename -S symlink -S link -F exit=-EPERM -F auid>=1000 -F auid!=4294967295 -k access
-a exit,always -F arch=b64 -S socket -F auid>=1000 -F auid!=4294967295 -k socket
-a exit,always -F arch=b64 -S bind -F auid>=1000 -F auid!=4294967295 -k bind
-a exit,always -F arch=b64 -S listen -F auid>=1000 -F auid!=4294967295 -k listen
-a exit,always -F arch=b64 -S connect -F auid>=1000 -F auid!=4294967295 -k connect
-a always,exit -F arch=b64 -S execve -k shell_audit
-a exit,always -S execve -F auid>=500 -F auid!=4294967295 -F arch=b64 -F success=1 -F key=local_login -k local_login
-a exit,always -F arch=b64 -S execve -F success=1 -F auid>=500 -F auid!=4294967295 -k remote_login
-a exit,always -F arch=b64 -S open,openat -F dir=/some/path -F success=1 -F auid>=500 -F auid!=4294967295 -k file_access
-a exit,always -F arch=b64 -S open,openat -F success=1 -F auid>=500 -F auid!=4294967295 \
-F subj_role=object_r:ZZZ_t -F subj_user=XXX_u -F subj_user!=unconfined_u \
-F subj_user!=system_u -F subj_user!=root -F subj_user!=sshd_t \
-F subj_user!=syslogd_t -F subj_user!=dbus-daemon \
-k file_access
-w /var/log/lastlog -p wa -k ssh_login
-w /var/log/utmp -p wa -k ssh_login
-w /var/log/wtmp -p wa -k ssh_login
-a exit,always -F arch=b64 -S connect -S accept -F success=1 -F auid>=500 -F auid!=4294967295 \
-k ssh_connect
-a exit,always -F arch=b64 -S setresuid,setreuid,setuid -F auid>=500 \
-F auid!=4294967295 -F exe=/usr/sbin/sshd -k ssh_auth
-a exit,always -F arch=b64 -S disconnect -F success=1 -F auid>=500 -F auid!=4294967295 \
-k ssh_disconnect
-a always,exit -F arch=b64 -F euid=exampleuser -F auid=exampleuser -k exampleuser_actions
-a always,exit -F arch=b64 -F euid=0 -F auid>=1000 -F auid!=4294967295 -k admin_actions
[root@computer07 ~]#
附件1.服务器操作系统安全加固要求及配置建议【下】
链接如下
附件1.服务器操作系统安全加固要求及配置建议【下】