Centos7 服务器基线检查处理汇总

news2024/11/24 20:02:58

1、服务器超时设置

  • 问题描叙
    TMOUT的值大于 k e y 2 且小于等于 {key2}且小于等于 key2且小于等于{key1}视为合规
    查看命令:export
  • 检测结果
    超时时间:0
  • 处理方式
  1. 备份/etc/profile文件
cp /etc/profile /etc/profile_bak
  1. 编辑profile文件
vim /etc/profile

修改/新增

TMOUT=3600
export TMOUT

export TMOUT=3600

保存退出
3. 执行source /etc/profile 命令使修改生效。

2、关闭所有不需要的共享目录

  • 问题描叙
    人工确认展示出的目录是否必须,应及时关闭所有不需要的共享目录
    查看命令:showmount -e
  • 检测结果
clnt_create: RPC: Program not registered
  • 处理方式

    启动rpcbind和nfs服务:

systemctl start rpcbind.service
systemctl start nfs-server.service

停服务:

systemctl stop rpcbind.socket
systemctl stop rpcbind.service
systemctl stop nfs-server.socket
systemctl stop nfs-server.service

查看NFS使用的端口:

rpcinfo -p

3、修改系统默认账号

未处理

4、修改密码长度限制

  • 整改方式:

方法一(使用pam_cracklib.so模块):
1.备份需要编辑的文件/etc/pam.d/system-auth或/etc/pam.d/passwd
cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
或cp /etc/pam.d/passwd /etc/pam.d/passwd_bak
2.修改配置文件system-auth或passwd,将minlen值修改为大于等于 k e y 1 p a s s w o r d r e q u i r e d p a m c r a c k l i b . s o m i n l e n = {key1} password required pam_cracklib.so minlen= key1passwordrequiredpamcracklib.sominlen={key1}
3.保存退出。

方法二(使用pam_pwquality.so模块):
1.备份需要编辑的文件/etc/pam.d/system-auth或/etc/pam.d/passwd,和cat /etc/security/pwquality.conf
cp /etc/security/pwquality.conf /etc/security/pwquality.conf_bak
cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak
或cp /etc/pam.d/passwd /etc/pam.d/passwd_bak
2.修改配置system-auth或passwd文件,将minlen值修改为大于等于 k e y 1 首先配置 p a s s w o r d r e q u i r e d p a m p w q u a l i t y . s o 然后在 p a s s w o r d r e q u i r e d p a m p w q u a l i t y . s o 后添加 m i n l e n = {key1} 首先配置password required pam_pwquality.so 然后在password required pam_pwquality.so后添加minlen= key1首先配置passwordrequiredpampwquality.so然后在passwordrequiredpampwquality.so后添加minlen={key1}
password required pam_pwquality.so minlen= k e y 1 或在 p w q u a l i t y . c o n f 中修改 m i n l e n = {key1} 或在pwquality.conf中修改 minlen= key1或在pwquality.conf中修改minlen={key1}
3.保存退出。

注:/etc/pam.d/system-auth和/etc/pam.d/passwd修改一个即可。均在passwd段中首行添加。
此处,我采用的方法一修改中修改的 passwd 文件

vim /etc/pam.d/passwd
password required pam_cracklib.so minlen=8

在这里插入图片描述

5、查看所有用户名

10.0.5.6 和.5 服务器

cat /etc/passwd |cut -f 1 -d :

修改用户名(usermod -l <新用户> <旧用户>)

此处修改用户名需要谨慎修改,有些用户名为系统用户,会提示有进程占用,切不可强制杀死进程,强制修改用户名。

6、AllowAgentForwarding 的值为no 视为合规

查看命令:

cat /etc/ssh/sshd_config
AllowAgentForwarding : 是否允许ssh-agnet 转发:yes

整改方式:

1.备份sshd_config文件

cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

2.编辑sshd_config文件

vi /etc/ssh/sshd_config

3.添加或修改如下行 (重启SSH服务后生效)

AllowAgentForwarding no
MaxAuthTries 6

在这里插入图片描述
注:我这里原先是被注释的。
同理,修改最大登陆次数限制:6

7、文件中应包含* hard core 0配置

问题背景:

查看命令:cat /etc/security/limits.conf

解决方式

1.备份文件/etc/security/limits.conf

cp /etc/security/limits.conf /etc/security/limits.conf_bak

2.编辑文件,添加或修改如下行

vim /etc/security/limits.conf

* hard core 0
在这里插入图片描述
* hard core 0:禁止所有用户(除root)创建core文件

同理:文件中应包含* soft core 0配置,整改建议为:编辑文件,添加或修改如下行
* soft core 0


8、查看别名文件/etc/aliases(或/etc/mail/aliases、/etc/postfix/aliases)配置

问题描叙

查看/etc/aliases或/etc/mail/aliases或/etc/postfix/aliases中内容,应不存在如下行

games: root 
ingres: root 
system: root 
toor: root 
uucp: root 
manager: root 
dumper: root 
operator: root 
decode: root 
root: marc 

查看命令:cat /etc/aliases /etc/mail/aliases

整改建议

1.备份需要修改的文件

cp /etc/aliases /etc/aliases_bak

2.编辑文件

vi /etc/aliases/etc/mail/aliases/etc/postfix/aliases

删除或者注释如下行,如:

#games: root 
#ingres: root 
#system: root 
#toor: root 
#uucp: root 
#manager: root 
#dumper: root 
#operator: root 
#decode: root 
#root: marc 

注:此处我是采用注释的方法整改。
3.执行命令使修改生效

/usr/bin/newaliases

9、查看日志存储的时间配置

问题背景

推荐配置最少为1年,即日志轮转周期设置为 weekly (默认)则建议修改rotate值大于等于 k e y 3 且小于等于 {key3} 且小于等于 key3且小于等于{key4}
,同理若周期为daily则建议修改rotate值大于等于 k e y 5 且小于等于 {key5} 且小于等于 key5且小于等于{key6},表示 365 天一年,若周期为 monthly 则建议设置rotate值大于等于 k e y 1 且小于等于 {key1}且小于等于 key1且小于等于{key2}

查看命令:cat /etc/logrotate.conf&& cat /etc/logrotate.d/*

整改建议:


1.备份需要修改的配置文件
2.编辑配置文件。此处配置文件可为/etc/logrotate.conf或/etc/logrotate.d下的文件,如:
vi /etc/logrotate.conf
添加或修改如下行,保证日志的存储时间最少为1年。如果日志轮转周期设置为weekly(默认)则建议修改rotate值为53,表示53周一年,同理若周期为daily则建议rotate设置为365,表示365天一年,若周期为monthly则建议设置为12,表示12个月一年
weekly
rotate ${key3}

补充说明:
在/etc/logrotate.conf最外层的配置为默认配置,在/etc/logrotate.d下的文件或/etc/logrotate.conf中指定路径的配置会覆盖默认配置


此处我的整改方式:

cp /etc/logrotate.conf /etc/logrotate.conf_bak
vim /etc/logrotate.conf

修改 rotate 53
在这里插入图片描述

10、文件权限777

问题背景

表示当前用户、它所在的组和其他人都拥有读、写、执行权限,该权限为最高权限。环境变量目录下不应该存在该权限文件(软连接除外)
查看命令:find echo $PATH | tr ':' ' ' -type f ( -perm -002 -o -perm -020 ) -ls

整改建议

人工查看列出的目录是否必须,若不为必须,则修改相关文件权限
执行命令 chmod 644 filename 修改目录权限,按照对应的要求设置,默认一般大多数情况为644,filename为要修改权限的文件名


注:此处我未做整改,查询没有发现有 777 的。有 777 权限的不适合修改。

11、umask值为027视为合规

查看命令:cat /etc/csh.login

问题背景

umask值:[未配置]

整改建议

  1. 备份csh.login文件
    cp -p /etc/csh.login /etc/csh.login_bak
  2. 编辑csh.login文件
    注释掉原有umask值或循环函数
    在文件末尾添加umask值为027
    umask 027

umask 介绍


一、umask介绍

在linux系统中,我们创建一个新的文件或者目录的时候,这些新的文件或目录都会有默认的访问权限,umask命令与文件和目录的默认访问权限有关。若用户创建一个文件,则文件的默认访问权限为 -rw-rw-rw- ,创建目录的默认权限 drwxrwxrwx ,而umask值则表明了需要从默认权限中去掉哪些权限来成为最终的默认权限值。

二、umask值的含义

可以使用命令 umask 来查看umask值

hadoop@sench-pc:~$ umask 
0002

可以看到umask值为0002,其中第一个0与特殊权限有关,可以暂时不用理会,后三位002则与普通权限(rwx)有关,其中002中第一个0与用户(user)权限有关,表示从用户权限减0,也就是权限不变,所以文件的创建者的权限是默认权限(rw),第二个0与组权限(group)有关,表示从组的权限减0,所以群组的权限也保持默认权限(rw),最后一位2则与系统中其他用户(others)的权限有关,由于w=2,所以需要从其他用户默认权限(rw)减去2,也就是去掉写(w)权限,则其他人的权限为rw - w = r,则创建文件的最终默认权限为 -rw-rw-r-- 。同理,目录的默认权限为 drwxrwxrwx ,则d rwx rwx rwx - 002 = (d rwx rwx rwx) - (- --- --- -w-) = d rwx rwx r-x,所以用户创建目录的默认访问权限为drwxrwxr-x。我们通过下面的例子验证一下:

hadoop@sench-pc:~$ umask 
0002
hadoop@sench-pc:~$ touch test.txt
hadoop@sench-pc:~$ ls -l test.txt 
-rw-rw-r-- 1 hadoop hadoop 0 4月  24 20:31 test.txt
hadoop@sench-pc:~$ mkdir test
hadoop@sench-pc:~$ ls -al test
总用量 8
drwxrwxr-x  2 hadoop hadoop 4096 4月  24 20:32 .
drwxr-xr-x 52 hadoop hadoop 4096 4月  24 20:32 ..

可以看到文件test.txt的权限为-rw-rw-r--,目录test的权限为 drwxrwxr-x ( . 代表当前目录,也就是test目录的属性)。

umask 命令显示的为umask的数字值,还可以使用命令umask -S 来显示umask的符号值:

hadoop@sench-pc:~$ umask -S
u=rwx,g=rwx,o=rx

可以看出(rwx rwx rwx) - (rwx rwx r-x) = (— — -w-) = 002 。

三、更改umask值

可以通过命令 umask 值 的方式来更改umask值,比如我要把umask值改为027,则使用命令 umask 027 即可。改成027后,用户权限不变,群组权限减掉2,也就是去掉写(w)权限,其他用户减7,也就是去掉读写执行权限(rwx),所以其他用户没有访问权限。

hadoop@sench-pc:~$ umask 027
hadoop@sench-pc:~$ umask
0027
hadoop@sench-pc:~$ touch test.txt
hadoop@sench-pc:~$ ls -l test.txt
-rw-r----- 1 hadoop hadoop 0 4月  24 20:49 test.txt
hadoop@sench-pc:~$ mkdir test
hadoop@sench-pc:~$ ls -al test
总用量 8
drwxr-x---  2 hadoop hadoop 4096 4月  24 20:49 .
drwxr-xr-x 52 hadoop hadoop 4096 4月  24 20:49

可以看到文件的默认访问权限变为了-rw-r----- ,目录test的默认访问权限变为了 drwxr-x--- 。这种方式并不能永久改变umask值,只是改变了当前会话的umask值,打开一个新的terminal输入umask命令,可以看到umask值仍是默认的002。要想永久改变umask值,则可以修改文件/etc/bashrc,在文件中添加一行 umask 027

四、总结

当我们想改变创建文件和目录时的默认访问权限,则可以通过umask命令来实现。


整改方式


  • 首先查看原来的权限
[root@localhost ~]# umask
0022
  • 查看现有的文件符号值
[root@localhost ~]# umask -S
u=rwx,g=rx,o=rx
  • 修改 umask
  1. 备份csh.login文件
    cp -p /etc/csh.login /etc/csh.login_bak
  2. 编辑csh.login文件
    vim /etc/csh.login
    
  3. 注释掉原有umask值或循环函数
    在文件末尾添加umask值为027
    umask 027
    注:此处我采用在文件末尾添加 umask 027
    在这里插入图片描述
    修改完未生效,采用命令行 umask 027 修改

12、min后的值为前两位为disabled,最后两位存在大于等于${key23}的值视为合规

查看命令:
cat /etc/pam.d/system-auth;cat /etc/pam.d/common-password;cat /etc/security/pwquality.conf;cat /etc/pam.d/passwd

问题背景

未配置

整改建议

1.备份需要编辑的文件/etc/pam.d/system-auth或/etc/pam.d/passwd

cp /etc/pam.d/system-auth /etc/pam.d/system-auth_bak

cp /etc/pam.d/passwd /etc/pam.d/passwd_bak

2.修改配置文件system-auth或passwd,将min后的前两位修改为 disabled,最后两位存在大于等于${key23}的值视为合规
password required pam_passwdqc.so min=disabled,disabled,12,8,8
3.保存退出

整改方式

1、备份/etc/pam.d/passwd文件

cp /etc/pam.d/passwd /etc/pam.d/passwd_bak

这里我已经备份过了,所以不再重复操作。
2、修改/etc/pam.d/passwd 文件,增加如下配置信息

password required  pam_passwdqc.so min=disabled,disabled,12,8,8

在这里插入图片描述
3、保存退出

12、使用命令查看RPC服务运行状态,如不是特殊需要,不运行此服务

问题背景:

查看命令:

LANG="en_us-utf-8" service portmap status>/tmp/rpc.txt;

Unit portmap.service could not be found.
在这里插入图片描述

LANG="en_us-utf-8" service rpcbind status >>/tmp/rpc.txt;

在这里插入图片描述

cat /tmp/rpc.txt;

在这里插入图片描述

rm -rf /tmp/rpc.txt

整改建议

根据实际情况停止此服务
停止服务命令:
service rpcbind stop 或 service postmap stop

补充说明:
启动服务命令:
service rpcbind start 或 service postmap start

整改方式

未整改,经人工核验,没有postmap服务,rpcbind为系统业务需要。

13、检查密码长度及复杂度

以下四个参数中至少存在三个且值小于等于-1视为合规
dcredit、credit、ucredit、ocredit
查看命令:

cat /etc/pam.d/system-auth;
cat /etc/pam.d/common-password;
cat /etc/security/pwquality.conf;
cat /etc/pam.d/passwd

整改方式

方法一(使用pam_cracklib.so模块):
1.备份需要编辑的文件/etc/pam.d/passwd

cp /etc/pam.d/passwd /etc/pam.d/passwd_bak

此处,我之前已经复制过了
2.修改配置文件 passwd,将dcredit,lcredit,ucredit,ocredit的值中至少三项修改为小于等于-1

vim /etc/pam.d/passwd
password required pam_cracklib.so dcredit=-1 lcredit=-1 ucredit=-1 ocredit=-1

3.保存退出。
在这里插入图片描述

14、系统umask设置

  • /etc/profile

问题背景

查看profile文件的umask值是否为027,为027视为合规。
查看命令:cat /etc/profile
umask值:002

整改方式

1、执行备份:

cp -p /etc/profile /etc/profile_bak

2、修改umask设置:
vi /etc/profile
注释掉原有umask值或循环函数
在文件末尾添加umask值为027
umask 027
保存退出
3.执行source /etc/profile 使修改生效


  • /etc/csh.cshrc

查看文件csh.cshrc的umask值,为027视为合规。
查看命令:cat /etc/csh.cshrc
整改方式:

  1. 备份csh.cshrc文件
    cp -p /etc/csh.cshrc /etc/csh.cshrc_bak
    
  2. 编辑csh.cshrc文件
    vim /etc/csh.cshrc
  3. 注释掉原有umask值或循环函数
    在文件末尾添加umask值为027
    umask 027

  • /etc/bashrc

查看文件的umask值为027视为合规。
查看命令:cat /etc/bashrc
整改方式:
4. 执行备份:
cp -p /etc/bashrc /etc/bashrc_bak
5. 修改umask设置:
vi /etc/bashrc
6. 注释掉原有umask值或循环函数。
在文件末尾添加umask值为027
umask 027


  • /root/.bashrc

查看/root/.bashrc的umask值,为027视为合规。
查看命令:cat /root/.bashrc
整改方式:
7. 备份配置文件
cp -p /root/.bashrc /root/.bashrc_bak
8. 修改配置文件
vim /root/.bashrc
9. 注释掉原有umask值或循环函数。
在文件末尾添加umask值为027
umask 027


  • /root/.cshrc

查看/root/.cshrc文件的umask值,为027视为合规
查看命令:cat /root/.cshrc
整改方式:

  1. 备份文件
cp /root/.cshrc /root/.cshrc_bak
  1. 编辑文件
vi /root/.cshrc
  1. 注释掉原有umask值或循环函数在文件末尾添加umask值为027
    umask 027

  • /etc/login.defs

查看login.defs中是否存在UMASK 027,存在视为合规。
查看命令:cat /etc/login.defs
现状:权限掩码:077
整改方式:
设置默认权限:
备份文件

cp /etc/login.defs /etc/login.defs_bak

编辑文件

vi /etc/login.defs 

在末尾增加UMASK 027或者编辑修改(若之前存在UMASK循环函数,则需要先将整段循环注释),将缺省访问权限设置为750。
补充说明:
UMASK 的默认设置一般为022,这给新创建的文件默认权限755(777-022=755),这会给文件所有者读、写权限,但只给组成员和其它用户读权限。

15、存在HISTTIMEFORMAT配置视为合规

问题背景

具体日期记录格式准确性需人工查看
查看命令:export
未配置

整改方式

  • 备份文件
cp /root/.bashrc /root/.bashrc_bak
  • 编辑文件
vi /root/.bashrc 

添加或修改如下行

export HISTTIMEFORMAT="%Y-%m-%d %H:%M:%S"       //具体日期格式根据可根据实际需要修改

执行source /root/.bashrc 生效


16、账户口令安全符合要求

问题背景

PASS_MAX_DAYS的值大于0且小于等于${key2}视为合规
查看命令:cat /etc/login.defs
现状如下:
密码最大有效期:99999(代表永久有效)

/etc/login.defs详解:
PASS_MAX_DAYS 99999 #密码的最大有效期, 99999:永久有期
PASS_MIN_DAYS 0 #是否可修改密码,0可修改,非0多少天后可修改
PASS_MIN_LEN 5 #密码最小长度,使用pam_cracklib module,该参数不再有效
PASS_WARN_AGE 7 #密码失效前多少天在用户登录时通知用户修改密码

整改方式

1.执行命令备份需要修改的配置文件

cp /etc/login.defs  /etc/login.defs_bak

2.编辑配置文件 login.defs

vim /etc/login.defs

添加或修改 PASS_MAX_DAYS 为小于等于${key2},且大于0的值

PASS_MAX_DAYS ${key2}

注:若在shadow文件中设置相应限制信息,则shadow文件配置优先生效。
此处我修改为:2000


同理,密码过期告警时间 ,原本默认是 7 天,这里我们修改 PASS_WARN_AGE 为 30 天。

PASS_MAX_DAYS 2000
PASS_MIN_DAYS   7
PASS_MIN_LEN    12
PASS_WARN_AGE 30

17、账户锁定策略

问题背景

看是否包含以下auth required pam_tally.so onerr=fail deny=${key2} no_magic_root even_deny_root。包含视为合规(deny的具体标准值以正则为准)。
查看命令:

cat /etc/pam.d/common-auth
cat /etc/pam.d/system-auth
cat /etc/pam.d/sshd

当前未配置

整改方法

1.备份/etc/pam.d/sshd 文件

cp /etc/pam.d/sshd /etc/pam.d/sshd_bak

2.编辑 vi /etc/pam.d/sshd
添加或修改如下行(这里我设置密码尝试10次)no_magic_root #表示连root用户也在限制范围内(暂时去掉)
auth required pam_tally2.so onerr=fail deny=6 unlock_time=20 no_magic_root
简要说明:普通帐户和 root 的帐户登录连续 3 次失败,就统一锁定 20 秒, 20 秒后可以解锁。
如果不想限制 root 帐户,可以把 even_deny_root 和root_unlock_time这两个参数去掉。
root_unlock_time 表示 root 帐户的 锁定时间,onerr=fail 表示连续失败,deny=6,表示 超过6 次登录失败即锁定。
很危险的,我自己在设置的时候不小心就把root给锁了。建议还是移除吧。

auth required pam_tally2.so onerr=fail deny=6 unlock_time=20 no_magic_root

在这里插入图片描述
这里我又重新修改了下登录连续失败次数为 6,所以截图和实际不一样。
(pam_tally.so模块需根据实际情况配置,一般使用pam_tally.so或pam_tally2.so模块。配置前可以先用find / -name pam_tally.so命令查看模块是否存在)
find / -name pam_tally.so 此命令运行报错,权限不足(find: ‘/run/user/1000/gvfs’: 权限不够)
在这里插入图片描述

umount /run/user/1000/gvfs // 卸载该文件
rm -rf /run/user/1000/gvfs // 删除该文件

*注:此处我未做删除和卸载处理*
find / -name pam_tally2.so

在这里插入图片描述
发现有这个,就用这个吧。
注:只需修改/etc/pam.d/system-auth或/etc/pam.d/sshd文件中的一个即可。修改/etc/pam.d/sshd只限制ssh方式登录的用户。


18、存在password required pam_passwdqc.so enforce=everyone视为合规

整改方式

编辑文件

vim /etc/pam.d/passwd

在这里插入图片描述
这里发现我已经配置过 pam_passwdqc.so ,只需要增加enforce=everyone配置项即可。
增加配置项

password required pam_passwdqc.so enforce=everyone

在这里插入图片描述


19、设置Ntp服务开机自启

问题背景

使用命令查看 ntpd 服务,应开启
查看命令:
systemctl is-enabled ntp > /tmp/ntpenable.txt 2>/dev/null;
systemctl is-enabled ntpd >> /tmp/ntpenable.txt 2>/dev/null;
chkconfig --list >> /tmp/ntpenable.txt 2>/dev/null;
cat /tmp/ntpenable.txt;
rm -rf /tmp/ntpenable.txt;

整改方式

执行如下命令设置ntp服务开机启动,

systemctl enable ntpd
chkconfig  ntpd on
systemctl enable ntp
chkconfig  ntp on

这里提示没有 ntp 服务

服务 ntp 信息读取出错:没有那个文件或目录

配置完成后,可利用 date 命令查看系统当前时间,与监控终端时间比较,若相差超过 1000s,可用 ntpdate 命令与时间服务器强制同步


20、限制SSH登录后使用图形化界面

问题背景

执行命令cat /etc/ssh/sshd_config查看 X11Forwarding值是否为no,为no或者没有配置视为合规
查看命令:cat /etc/ssh/sshd_config
当前现状:启用图形化状态:yes

整改方式

将值设置为X11Forwarding设置为 no

X11Forwarding no

21、防syn攻击优化

问题背景

查看返回结果net.ipv4.tcp_max_syn_backlog的值为2048视为合规。
查看命令:sysctl net.ipv4.tcp_max_syn_backlog > /tmp/backlog.txt && cat /tmp/backlog.txt
rm -f /tmp/backlog.txt

当前结果为:值:1024

整改方式

  1. 备份sysctl.conf文件
cp -p /etc/sysctl.conf /etc/sysctl.conf_bak
  1. 编辑sysctl.conf文件
vim /etc/sysctl.conf

找到以下行net.ipv4.tcp_max_syn_backlog(若没有自行添加),将其值修改为2048

net.ipv4.tcp_max_syn_backlog=2048

执行/sbin/sysctl -e -p /etc/sysctl.conf立即生效


22、对root为ls、rm设置别名

问题背景

存在alias ls='ls -aol’和alias rm='rm -i’视为合规
查看命令:cat /root/.bashrc

当前现状:ls别名:[未配置],rm别名:rm -i

整改方式

备份/root/.bashrc文件

cp /root/.bashrc /root/.bashrc_bak

编辑/root/.bashrc文件

vi /root/.bashrc

添加或修改如下行

alias ls='ls -aol'
alias rm='rm -i'

执行source /root/.bashrc 使修改生效


23、记录历史密码次数

问题背景

存在password required pam_unix.*so remember=${key3}视为合规
查看命令:cat /etc/pam.d/system-auth;cat /etc/pam.d/common-password;cat /etc/pam.d/passwd
当前现状:未配置

整改方式

  1. 备份/etc/pam.d/passwd文件
cp /etc/pam.d/passwd /etc/pam.d/passwd_bak

如已经备份,请忽略
2. 编辑配置文件

vim /etc/pam.d/passwd

添加或修改如下行

password required pam_unix.so remember=6

24、检查是否对登录进行日志记录—LASTLOG_ENAB

问题背景

  • 检测方式:
    存在 LASTLOG_ENAB yes 视为合规
    查看命令:cat /etc/login.defs

  • 当前现状:没有配置

整改方式

1.备份文件(如已有备份,请忽略此步骤)
cp /etc/login.defs /etc/login.defs_bak
2.编辑文件
vi /etc/login.defs
3.添加或修改如下行
LASTLOG_ENAB yes
4.保存退出


25、系统登录超时设置

问题背景

autologout的值等于${key2}视为合规
查看命令:cat /etc/csh.cshrc
现状:登录超时:[未配置]

整改方式

  1. 备份csh.cshrc文件(如已备份,请忽略此步骤)
    cp -p /etc/csh.cshrc /etc/csh.cshrc_bak
  2. 编辑csh.cshrc文件
    vi /etc/csh.cshrc
  3. 添加或修改如下参数
    set autologout=3600

26、系统日志权限控制

问题背景

查看 /var/log 文件夹日志权限,按账户分配日志文件读取、修改和删除权限
如:messagessecuremaillogcronspoolerboot.log文件权限是否合规
查看命令:

ls -la /var/log | grep -E "messages$|secure$|maillog$|cron$|spooler$|boot.log$" --color=never

在这里插入图片描述
整改方式:
1、备份需要修改的文件,messages、secure、maillog、cron、spooler、boot.log文件
样例:cp /var/log/fileName (此处fileName依次替换为messages、secure、maillog、cron、spooler、boot.log文件)

cp /var/log/messages /var/log/messages_bak
cp /var/log/secure /var/log/secure_bak
cp /var/log/maillog /var/log/maillog_bak
cp /var/log/cron /var/log/cron_bak
cp /var/log/spooler /var/log/spooler_bak
cp /var/log/boot.log /var/log/boot.log_bak

2、设置文件权限。
样例:chmod 644 fileName (此处fileName依次替换为messages、secure、maillog、cron、spooler、boot.log文件)

chmod 644 messages
chmod 644 secure
chmod 644 maillog
chmod 644 cron
chmod 644 spooler
chmod 644 boot.log

3、再次查看文件权限

ls -la /var/log | grep -E "messages$|secure$|maillog$|cron$|spooler$|boot.log$" --color=never

结果如下:

-rw-r–r–. 1 root 0 2月 25 03:43 boot.log
-rw-r–r–. 1 root 78134 3月 2 10:40 cron
-rw-r–r–. 1 root 0 2月 26 03:42 maillog
-rw-r–r–. 1 root 192060 3月 2 10:40 messages
-rw-r–r–. 1 root 13057 3月 2 08:46 secure
-rw-r–r–. 1 root 0 2月 26 03:42 spooler


27、加固主机解析文件

问题背景

查看是否存在nospoof on,存在视为合规。
查看命令:cat /etc/host.conf
样例:
1.备份文件/etc/host.conf

cp /etc/host.conf /etc/host.conf_bak

2.编辑文件,添加或修改如下行
nospoof on #关闭IP伪装

查看是否存在multi off,存在视为合规。
查看命令:cat /etc/host.conf
样例:
1.备份文件/etc/host.conf
2.编辑文件,添加或修改如下行
multi off #关闭多IP绑定

28、SSH 协议使用SSH2

漏洞背景

查看sshd_config中是否包含Protocol 2,包含视为合规。
查看命令:cat /etc/ssh/sshd_config

整改方式

样例:
1.备份需要编辑的文件(已有备份,忽略):

cp /etc/ssh/sshd_config /etc/ssh/sshd_config_bak

2.编辑文件

vi /etc/ssh/sshd_config

添加Protocol 2或者取消Protocol 2前的#号注释
Protocol 2
(重启SSH服务后生效)


Mysql 从数据库(版本8.0.27)

1、配置用户使用ssl连接

人工查看展示的可远程用户的ssl_type值 是否合理(所有网络请求必须走SSL/TLS访问数据库。SSL提供多种算法,其中一些算法安全性并不高不能帮助用户杜绝网络劫持和网络拦截。建议设置ssl_type为高安全类型的加密算法。但这其中有一个隐患,如果客户端使用较低加密算法,会由于算法无法匹配导致链接失败)
查看命令:

mysql -P@{dbport} -h@{dbhost} -u@{dbusername} -p'@{dbpassword}' -t -e "SELECT user, host, ssl_type FROM mysql.user WHERE NOT HOST IN ('::1', '127.0.0.1', 'localhost') \G"

注:暂未做调整

2、开启 mysql 查询日志

默认未开启

mysql> show variables like '%general%';
+------------------+--------------------------------------------+
| Variable_name    | Value                                      |
+------------------+--------------------------------------------+
| general_log      | OFF                                        |
| general_log_file | /usr/local/mysql-8.0.27/data/localhost.log |
+------------------+--------------------------------------------+
2 rows in set (0.00 sec)

整改方式:

cd /usr/local/mysql-8.0.27/log/
mkdir general_log

开启查询日志
关于查询日志的配置详解,请参考我另一篇博文:
关于查询日志的配置详解

vim /etc/my.cnf

log_output = FILE 这个选项如果已经存在,无需再次配置

[mysqld]
general_log = 1
general_log_file = /usr/local/mysql-8.0.27/log/general_log/general_statement.log
log_output = FILE

修改配置后需要重启 Mysql 服务。

service mysqld restart;

同时修改日志权限(先确认目录位置是否在 (cd /usr/local/mysql-8.0.27/log/general_log)

chmod 660 general_statement.log

查看slow_query_log_file文件权限

命令行登录 mysql 查看 Mysql 慢查询日志的位置

show variables like '%slow%';
+-----------------------------+--------------------------------------+
| Variable_name               | Value                                |
+-----------------------------+--------------------------------------+
| log_slow_admin_statements   | OFF                                  |
| log_slow_extra              | OFF                                  |
| log_slow_replica_statements | OFF                                  |
| log_slow_slave_statements   | OFF                                  |
| slow_launch_time            | 2                                    |
| slow_query_log              | ON                                   |
| slow_query_log_file         | /usr/local/mysql-8.0.27/log/slow.log |
+-----------------------------+--------------------------------------+

执行修改权限命令

chmod 660 /usr/local/mysql-8.0.27/log/slow.log

同理修改 log_error 日志的权限

chmod 660 /usr/local/mysql-8.0.27/log/mysqld.log

查看relay_log_basename文件权限

登录mysql 命令行查看:

show variables like 'relay_log_basename';
mysql> show variables like '%relay_log_basename%';
+--------------------+--------------------------------------------------+
| Variable_name      | Value                                            |
+--------------------+--------------------------------------------------+
| relay_log_basename | /usr/local/mysql-8.0.27/data/localhost-relay-bin |
+--------------------+--------------------------------------------------+
1 row in set (0.00 sec)

找到相关文件修改权限

chmod 660 /usr/local/mysql-8.0.27/data/localhost-relay-bin.index
chmod 660 /usr/local/mysql-8.0.27/data/localhost-relay-bin.000002
chmod 660 /usr/local/mysql-8.0.27/data/localhost-relay-bin.000003
chmod 660 /usr/local/mysql-8.0.27/data/localhost-relay-bin.000004

查看log_bin_basename文件权限配置

show variables like 'log_bin_basename';

mysql> show variables like 'log_bin_basename';
+------------------+-------------------------------------------+
| Variable_name    | Value                                     |
+------------------+-------------------------------------------+
| log_bin_basename | /usr/local/mysql-8.0.27/log/mysql3307_bin |
+------------------+-------------------------------------------+
1 row in set (0.00 sec)

找到相关文件修改权限

cd /usr/local/mysql-8.0.27/log/
chmod 660 mysql3307_bin.index
chmod 660 mysql3307_bin.000001
chmod 660 mysql3307_bin.000002
chmod 660 mysql3307_bin.000003

查看 Mysql 所有用户信息

SELECT user FROM mysql.user;
mysql> SELECT user FROM mysql.user;
+------------------+
| user             |
+------------------+
| root             |
| mysql.infoschema |
| mysql.session    |
| mysql.sys        |
+------------------+
4 rows in set (0.00 sec)

当前查看并无其他用户。


设置 mysql 登录失败次数
登录 mysql 查看当前设置

show variables like '%connection_control%';

整改方式:

1.以mysql用户登录系统

msyql -uroot -p

2.切换到mysql命令行
3.执行如下命令安装插件

install plugin CONNECTION_CONTROL soname 'connection_control.so';
install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';

4.备份/etc/my.cnf文件
5.编辑文件,在[mysqld]标签下,增加如下内容

connection-control-failed-connections-threshold= 6

在这里插入图片描述
6.重启mysql后生效


show variables like '%connection_control%';

+-------------------------------------------------+------------+
| Variable_name                                   | Value      |
+-------------------------------------------------+------------+
| connection_control_failed_connections_threshold | 6          |
| connection_control_max_connection_delay         | 2147483647 |
| connection_control_min_connection_delay         | 1000       |
+-------------------------------------------------+------------+

配置密码策略:

查看当前配置:

show global variables like 'validate%';

整改方式:
用组件方式:
1.以有mysql权限的用户登录
2.切换到mysql命令行,使用如下命令安装插件,一般默认已安装无需重复安装
INSTALL COMPONENT 'file://component_validate_password';
3.备份/etc/my.cnf文件
4.编辑文件,在[mysqld]下添加如下内容,

  • 设置密码中特殊字符的最小个数为${key1}
    validate_password.special_char_count=1
  • 检验密码强度等级
    validate_password.policy=1
    注:参数说明
    0/LOW:只检查长度
    1/MEDIUM:检查长度、数字、大小写、特殊字符
    2/STRONG:检查长度、数字、大小写、特殊字符字典文件
  • 限制密码中大小写字符最小个数
    validate_password.mixed_case_count=1
  • 限制密码中最小数字的个数
    validate_password.number_count=1
  • 密码最小长度设置
    validate_password.length=8

5.重启Mysql服务生效


命令历史记录保护

1.以管理员权限用户登录
2.查找.mysql_history和.bash_history是否存在,默认在用户家目录下
find / .mysql_history
find / .bash_history
3.查看展示结果,应不存在.mysql_history和.bash_history文件

整改建议:
1.以管理员权限用户登录
2.查找.mysql_history和.bash_history是否存在,默认在用户家目录下

/root/.mysql_history
/root/.bash_history
rm .mysql_history
rm .bash_history

3.根据找到的路径结果,删除.mysql_history和.bash_history文件
4.使用以下命令防止文件再次创建

ln -s /dev/null /root/.mysql_history
ln -s /dev/null /root/.bash_history

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/383894.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Spring Cloud(微服务)学习篇(三)

Spring Cloud(微服务)学习篇(三) 1 nacos中使用openFeign(调用方式)实现短信发送 1.1 在shop-sms-api中创建com.zlz.shop.sms.api.service/vo/dto/util,目录结构如下所示 1.2 在pom.xml(shop-sms-api)中加入如下依赖 <dependencies><dependency><groupId>…

西电算法分析与设计核心考点汇总(期末真题,教材算法导论)

文章目录前言一、历年考题1.1 判断题1.2 单选题1.3 复杂度计算1.4 分治1.5 算法设计&#xff08;01背包&#xff0c;最短路径&#xff09;1.6 最大子数组问题1.7 算法设计&#xff08;最长回文串&#xff09;二、核心考点2.1 概述部分考点2.1.1 循环不变式loop-invariants2.1.2…

绪论 基本概念

数据结构 第一章 绪论 概念 数据data&#xff1a;是对客观事物的符号表示。在计算机科学中是指所有能输入到计算机中并被计算机程序处理的符号的总称。 数据元素(data element:是数据的基本单位&#xff0c;在计算机程序中通常作为一个整体进行考虑和处理。 数据对象(data …

软件测试面试题和简历模板(面试前准备篇)

一、问题预测 1、让简单介绍下自己&#xff08;这个不用说了每次面试开场&#xff09; 面试官&#xff0c;你好&#xff0c;我叫xxx&#xff0c;xx年本科毕业&#xff0c;从事软件测试将近3年的时间。在此期间做过一些项目也积累过一些经验&#xff0c;能够独立地完成软件测试…

经典的卷积神经网络(VGG,GoogLeNet等)

LeNet LeNet原文地址&#xff1a;https://ieeexplore.ieee.org/abstract/document/726791 Lenet是一个 7 层的神经网络&#xff08;不包含输入层&#xff09;&#xff0c;包含 3 个卷积层&#xff0c;2 个池化层&#xff0c;2 个全连接层。它的网络结构图如下所示&#xff1a…

广州华锐互动:VR虚拟课件互动教学平台在学校教育中的影响和作用

VR虚拟课件互动教学平台是广州华锐互动为各大高校开发的一款基于VR虚拟现实技术的教学工具&#xff0c;VR虚拟课件互动教学平台中包含了各类VR互动课件以及相关教学资源&#xff0c;学生可以自主进入平台汇总进行沉浸式的学习体验&#xff0c;帮助学生更好地理解学习相关教学内…

自动化实战-对个人博客系统实现web自动化测试

基于selenium和JUnit5实现的自动化测试用例 一、使用脑图编写web自动化测试用例 下图就是根据博客系统创建的自动化测试用例脑图 二、创建自动化项目&#xff0c;根据用例来实现脚本 Common包底下放着的是所有测试用例共用的方法&#xff0c;公共类&#xff1b; Test包底下就是…

BERT学习

非精读BERT-b站有讲解视频&#xff08;跟着李沐学AI&#xff09; &#xff08;大佬好厉害&#xff0c;讲的比直接看论文容易懂得多&#xff09; 写在前面 在计算MLM预训练任务的损失函数的时候&#xff0c;参与计算的Tokens有哪些&#xff1f;是全部的15%的词汇还是15%词汇中真…

浅谈babel原理

1. babel简介 Babel 的前身是 6to5&#xff0c;6to5 是 2014 年 发布的&#xff0c;主要功能是 就是 ES6 转成 ES5。后改名babel。 2. Babel用途 转译 esnext、typescript 等到目标环境支持的 js 高级语言到到低级语言叫编译&#xff0c;高级语言到高级语言叫转译代码转换 tar…

MySQL 上亿大表如何优化?

背景XX 实例&#xff08;一主一从&#xff09;xxx 告警中每天凌晨在报 SLA 报警&#xff0c;该报警的意思是存在一定的主从延迟。&#xff08;若在此时发生主从切换&#xff0c;需要长时间才可以完成切换&#xff0c;要追延迟来保证主从数据的一致性&#xff09;XX 实例的慢查询…

李群李代数求导-常用求导公式

参考 A micro Lie theory for state estimation in robotics manif issues 116 常用求导公式 Operation左雅克比右雅克比X−1\mathcal{X}^{-1}X−1JXX−1−I\mathbf{J}_{\mathcal{X}}^{\mathcal{X}^{-1}}\mathbf{-I}JXX−1​−IJXX−1−AdX\mathbf{J}_{\mathcal{X}}^{\mathc…

Go中sync 包的 Cond 使用

文章目录背景Cond 简介使用示例Signal的使用场景Broadcast的使用场景注意事项背景 编写代码过程中&#xff0c; 通常有多个主协程和多个子协程进行协作的过程&#xff0c;比如通过 WaitGroup 可以实现当所有子协程完成之后&#xff0c; 主协程再继续执行&#xff0c; 具体可参…

【ns-3】VS Code开发环境配置

文章目录前言1. 安装VS Code2. 安装CMake和C插件3. 配置环境3.1 配置代码智能提示3.2 配置build3.3 配置gdb调试后记参考文献前言 正所谓“工欲善其事必先利其器”&#xff0c;本篇总结一下ns-3在VS Code开发环境下的配置。 版本信息如下&#xff1a; Ubuntu 22.10ns-3.37VS…

用户难增,广告营收下跌,微博还能“高飞”吗?

微博2022年的业绩再次“变脸”。 图源&#xff1a;微博 2023年3月1日&#xff0c;微博公布了2022年Q4及全年财报。2022年营收18.4亿美元&#xff0c;剔除汇率因素同比下跌15%&#xff1b;2022年Q2以来&#xff0c;微博坚持降本增效策略&#xff0c;提升了运营效率&#xff0c;…

Jquery实现增删改除

文章目录一.关于增加部分区别&#xff1a;二.关于删除部分关于在表格中实现增删改1.首先我们需要创建基本的HTML项目2.相关的css和js的引用3.呈上源代码&#xff08;1&#xff09;.HTML源代码&#xff08;2&#xff09;.js源代码&#xff08;自己创建的&#xff09;3.效果图&am…

大数据技术——Scala语言基础

Scala基础知识控制结构if条件表达式有一点与Java不同的是&#xff0c;Scala中的if表达式的值可以赋值给变量while循环for循环基本语法其中,“变量<-表达式”被称为“生成器(generator).”“守卫(guard)"的表达式:过滤出一些满足条件的结果。基本语法:for (变量<-表达…

Sandstorm 建设者亮点——2023 年 2 月

隆重推出 Sandstorm 建设者亮点——2023 年 2 月版&#xff0c;这是由最厉害的 Sandstorm 社区制作的独一无二的 NFT 系列。 从突破性的兔子机器人到神奇的蒸汽朋克海盗船&#xff0c;Sandstorm 建设者亮点 NFT 系列展示了一系列独一无二的创作。 19 项新资产将添加至 Sandstor…

提升内部客户服务的 13 个最佳实践攻略!

客户服务包含两个方面的内容&#xff1a;一个是内部服务&#xff1b;一个是外部服务。每一个企业在发展过程中都有内部客户和外部客户&#xff0c;内部服务是针对内部客户的&#xff0c;自己公司的部门与部门之间互为内部客户&#xff1b;外部服务是针对公司之外的外部客户的。…

MySQL数据库存储引擎【InnoDB/MyISAM/MEMORY 】

1.InnoDB存储引擎InnoDB给MySQL的表提供了事务处理、回滚、崩溃修复能力和多版本并发控制的事务安全。在MySQL从3.23.34a开始包含InnnoDB。它是MySQL上第一个提供外键约束的表引擎。而且InnoDB对事务处理的能力&#xff0c;也是其他存储引擎不能比拟的。靠后版本的MySQL的默认存…

你没用过工业智能网关?它已经在远程监控行业很热门了,足不出户远程控制设备。

一、项目背景 钢铁企业作为一个能量消耗比较大&#xff0c;污水排放比较多的工业&#xff0c;只有对技术进行不断的改革才能够实现节能减排的目的。这就需要相应的钢铁企业厂能够应用新的技术&#xff0c;实现污水的安全无污染处理&#xff0c;不断地改善环境&#xff0c;提高相…