当前位置: 首页 > news >正文

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

1、服务器超时设置

  • 问题描叙
    TMOUT的值大于key2且小于等于{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值修改为大于等于key1passwordrequiredpamcracklib.sominlen={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值修改为大于等于key1首先配置passwordrequiredpampwquality.so然后在passwordrequiredpampwquality.so后添加minlen={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=key1或在pwquality.conf中修改minlen={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值大于等于key3且小于等于{key3} 且小于等于key3且小于等于{key4}
,同理若周期为daily则建议修改rotate值大于等于key5且小于等于{key5} 且小于等于key5且小于等于{key6},表示 365 天一年,若周期为 monthly 则建议设置rotate值大于等于key1且小于等于{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

相关文章:

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

1、服务器超时设置 问题描叙 TMOUT的值大于key2且小于等于{key2}且小于等于key2且小于等于{key1}视为合规 查看命令&#xff1a;export检测结果 超时时间:0处理方式 备份/etc/profile文件 cp /etc/profile /etc/profile_bak编辑profile文件 vim /etc/profile修改/新增 TMO…...

PaddleOCR遇到 lanms-neo问题处理

在window环境中安装PaddleOCR依赖是真的蛋疼&#xff0c;关键官方论坛里也都没有具体的解决方案。吐槽。。。吐槽。。。 我在 “windows安装lanms-neo问题处理”文章中看到lanms-neo问题全过程解决。个人觉得文档说明不是很细致&#xff0c;导致我按步骤执行&#xff0c;还是安…...

coreldraw2023安装包下载及新功能介绍

对于广告标识业来说 coreldraw这个软件&#xff0c;对我们来说绝对不陌生&#xff0c;我从2008年开始接触到广告制作&#xff0c;到现在已经13多年了&#xff0c;从一开始的coreldraw 9红色的热气球开始。就被这个强大的软件所吸引&#xff0c;他有强大的排榜功能已经对位图的处…...

Nginx 负载均衡服务失败场景

nginx可以配置负载均衡&#xff0c;我们可以通过配置实现nginx负载均衡。这里部署了两个服务producter-one和producter-one2。 upstream proxyproducter-one {server producter-one:8080 weight1;server producter-one2:8080 weight1;}# 访问其他服务server {listen 9090…...

开学季哪个电容笔好?2023口碑最好电容笔推荐

虽说苹果原装的电容笔非常好用&#xff0c;性能也非常不错&#xff0c;但由于价格昂贵&#xff0c;普通的学生是没办法购买的&#xff0c;再加上重量比较大&#xff0c;使用时间长了&#xff0c;难免会让人感觉到疲劳。如果仅仅是为了学习记笔记&#xff0c;那就没必要再去购买…...

经验分享-如何使用http调用chatGPT-3.5-turbo模型API

今天上午&#xff0c;就在工作群里收到了关于openAI发布chatGPT官方模型的消息分享。openAI这次的动作真的很快啊&#xff0c;没想到这么快就直接发布了chatGPT目前所使用的模型api。据Open AI在官方消息&#xff0c;本次开放了ChatGPT和Whisper的模型API&#xff0c;可以供用户…...

【C#】yyyy-MM-dd HH:mm:ss 时间格式 时间戳 全面解读超详细

C# 日期转字符串 实例化一个时间字符串 DateTimeFormatInfo dfInfonew DateTimeFormatInfo(); dfInfo.ShortDatePattern "yyyy/MM/dd hh:mm:ss:ffff"; DateTime dt Convert.ToDateTime("2019/07/01 18:18:18:1818", dfInfo);日期转字符串 string dat…...

基于神经网络的滑模鲁棒控制

目录 前言 1.双关节机械手臂模型 2.神经网络自适应律设计 3. 滑模控制律设计 4. 仿真分析 4.1 仿真模型 4.2 仿真结果 4.3 小结 5 学习问题 前言 上一篇文章我介绍了神经网络补偿的机理&#xff0c;只不过控制律不同&#xff0c;本章我们结合滑模理论设计控制律&#…...

2023年融资融券研究报告

第一章 行业概况 融资融券是证券交易市场上的两种金融衍生品交易方式&#xff0c;主要用于股票、债券等证券的融资和投资。 融资是指投资者向证券公司借入资金购买证券&#xff0c;以期望股票价格上涨后卖出获得利润。融资需支付一定的利息和费用&#xff0c;利息根据借入的资…...

Nodejs环境配置 | Linux安装nvm | windows安装nvm

文章目录一. 前言二. Linux Nodejs环境配置1. 安装nvm2. 配置npm三. Windows Nodejs环境配置1. 安装nvm2. 配置npm四. nvm基本使用一. 前言 由于在实际开发中一些不同的项目需要不同的npm版本来启动&#xff0c;所以本篇文章会基于nvm这个node版本管理工具来进行Linux和Winodw…...

显示接口测试

背景需求两个显示器连接到一台PC&#xff0c;期望每台显示器可以单独显示&#xff0c;在一台显示器显示时&#xff0c;另外一台显示器同PC的连接断开&#xff0c;即系统下查看到连接状态为disconnected。同时在显示器上图形化显示当前显示器编号。如下图&#xff0c;期望当显示…...

Tcl_Init error: Can‘t find a usable init.tcl in the following directories

目录 问题 解决 小结 问题 最近在研究开源波形显示软件gtkwave时,Ubuntu18.04下编译打包完成,移植到另一个电脑上运行时,出现以下错误,如图: 擦掉的部分是一些路径信息,这个错误提示意味着您的系统中缺少所需的 Tcl 初始化文件,路径下确实没有init.tcl文…...

进程控制(详解)

进程控制上篇文章介绍了进程的相关概念&#xff0c;形如进程的内核数据结构task_struct 、进程是如何被操作系统管理的、进程的查看、进程标识符、进程状态、进程优先级、已经环境变量和进程地址空间等知识点&#xff1b; 本篇文章接着上篇文章继续对进程的控制进行展开&#x…...

瓜子大王稳住基本盘,洽洽食品做对了什么?

2月24日&#xff0c;洽洽食品披露2022年业绩快报,公司预计实现营收总收入68.82亿元&#xff0c;同比增长14.98%, 实现归母净利润9.77 亿元&#xff0c;同比增长5.21%&#xff0c;业绩基本符合市场预期。来源&#xff1a;洽洽食品2022年度业绩快报2022年&#xff0c;瓜子大王洽洽…...

【音视频安卓开发 (十一)】jni基础

要使用jni开发需要包含jni.h头文件JNIEXPORT JNI : 是一个关键字&#xff0c;不能少&#xff08;编译能通过&#xff09;&#xff0c;标记为该方法可以被外部调用jstring : 代表java中的stringJNICALL: 也是一个关键字&#xff0c;可以少的jni callJNIENV : 这是c和java相互调用…...

通过FRP搭建内网穿透,实现域名访问局域网本机

1我的目标&#xff1a;实现通过域名访问局域网tomcat服务&#xff0c;域名访问方便本地微信调试2思路&#xff1a;&#xff08;1&#xff09;用服务器搭建内网穿透利用FRP实现穿透&#xff0c;frp 是一个专注于内网穿透的高性能的反向代理应用&#xff0c;支持 TCP、UDP、HTTP、…...

Pytorch 代码复现终极指南【收藏】

修改自&#xff1a;https://zhuanlan.zhihu.com/p/532511514我在刚接触pytorch的时候搜到了这个大佬的文章&#xff0c;当时最后天坑部分没有看的太明白&#xff0c;直到今天我也遇到的相同的问题&#xff0c;特来做一点点补充&#xff0c;方便大家理解。上述大佬文章的简版内容…...

iOS 后台运行

背景&#xff1a;app有在后台运行的需求 常用的后台常驻实现方法 1.Audio&#xff08;音乐播放软件&#xff09; 应用在后台播放无声的音频文件&#xff0c;只要播放不断&#xff0c;后台可一直活着&#xff0c;苹果审核人员如果发现&#xff0c;会被拒&#xff0c;有可能会…...

软设下午题第一大题--数据流图(做题)

软设下午第一大题一、数据流图&#xff08;Data Flow Diagram,简称DFD&#xff09;1、基本图形元素元素&#xff08;1&#xff09;外部实体&#xff08;External Agent&#xff09;&#xff08;2&#xff09;数据存储&#xff08;Data Store&#xff09;&#xff08;3&#xff…...

springboot内嵌Tomcat 安全漏洞修复

漏洞扫描提示的是tomcat-embed-core[CVE-2020-1938]&#xff0c;解决方式是升级tomcat的版本。 该漏洞影响的版本&#xff1a; Apache Tomcat 9.x < 9.0.31 Apache Tomcat 8.x < 8.5.51 Apache Tomcat 7.x < 7.0.100 Apache Tomcat 6.x 其余的安全漏洞也可以通过…...

Android OTA 相关工具(三) A/B 系统之 bootctl 工具

文章目录1. bootctl 的编译2. bootctl 的帮助信息3. bootctl 的用法1. hal-info2. get-number-slots3. get-current-slot4. mark-boot-successful5. set-active-boot-slot6. set-slot-as-unbootable7. is-slot-bootable8. is-slot-marked-successful9. get-suffix10. set-snaps…...

【Flink】org.apache.flink.table.api.ValidationException: SQL validation failed

遇到问题如下 Exception in thread "main" org.apache.flink.table.api.ValidationException: SQL validation failed. From line 1, column 15 to line 1, column 17: Object aaa not found at org.apache.flink.table.planner.calcite.FlinkPlannerImpl.orgat org.…...

宏基因组鉴定病毒流程中需要的生物信息工具

谷禾健康 许多流行病的爆发都是病毒引起的&#xff0c;面对新的传染性基因组出现的最佳策略是及时识别&#xff0c;以便于在感染开始时立即实施相应措施。 目前可用的诊断测试仅限于检测新的病理因子。适用于同时检测存在的任何病原体的高通量方法可能比使用基于当前方法的大量…...

Doris入门篇-分区分桶实验

简介 测试分区分桶效果。 分区的基本操作 添加分区 ALTER TABLE v2x_olap_database.government_car ADD PARTITION p20221203 VALUES LESS THAN ("2022-12-04");动态分区表不能添加分区&#xff0c;需要转为手动分区表。 查看分区 show partitions from <表…...

Spring-Xml配置

一、Spring 简介 1.简介 文档下载地址&#xff1a;Index of /spring-framework/docs 1.简介 Spring framework 是 Spring 基础框架 学习Spring 家族产品 Spring framework SpringBoot SpringCloud Spring 能用来做什么 开发 WEB 项目 微服务 分布式系统 Spring framew…...

设计模式-工作线程 创建多少线程池合适

1、定义 让有限的工作线程(Worker Thread)来轮流异步处理无限多的任务。也可以将其归类为分工模式&#xff0c;它的典型实现就是线程池&#xff0c;也体现了经典设计模式中的享元模式&#xff08;重用对象&#xff09;。 例如&#xff0c;海底捞的服务员(线程)&#xff0c;轮流…...

【算法基础】深度优先搜索(DFS) 广度优先搜索(BFS)

一、DFS & BFS 1. 深度优先搜索DFS 深度优先搜索属于图算法的一种,英文缩写为DFS即Depth First Search.其过程简要来说是对每一个可能的分支路径深入到不能再深入为止,而且每个节点只能访问一次。 2. 广度优先搜索BFS 广度优先搜索较之深度优先搜索之不同在于,深度…...

【分布式】ProtocolBuffer平滑升级原则

原文链接&#xff1a;https://blog.csdn.net/nash_cyk/article/details/99549719 关于Protocol Buffer优势这里就不详细介绍了&#xff0c;如便于不同开发语言的交互通信&#xff0c;便于服务器上线的平滑升级等。 但Protocol Buffer的Message协议升级是需要注意一些细节&…...

第四阶段17-关于Redis中的list类型,缓存预热,关于Mybatis中的`#{}`和`${}`这2种格式的占位符

关于Redis中的list类型 Redis中的list是一种先进后出、后进先出的栈结构的数据。 在使用Redis时&#xff0c;应该将list想像为以上图例中翻转了90度的样子&#xff0c;例如&#xff1a; 在Redis中的list数据&#xff0c;不仅可以从左侧压入&#xff0c;也可以选择从右侧压入…...

stringstream用法

stringstream是 C++ 提供的另一个字串型的串流(stream)物件,和之前学过的iostream、fstream有类似的操作方式。包含在头文件sstream中(#include <sstream>)。 实例: 1、C++标准库中的<sstream>提供了比ANSI C的<stdio.h>更高级的一些功能,即单纯性、类…...

网站没有备案怎么做支付/哪里做网站便宜

前言线程池&#xff0c;故名思意&#xff0c;就是一个存放线程的池子&#xff0c;学术一点的说法&#xff0c;就是一组存放线程资源的集合。为什么有线程池这一概念地产生呢&#xff1f;想想以前我们都是需要线程的时候&#xff0c;直接自己手动来创建一个&#xff0c;然后执行…...

建设网站的政策风险分析/百度seo查询工具

前端开发校招面试问题整理【2】——HTML 写在前面&#xff1a; 全部面试问题整理已分享至GitHub&#xff0c;欢迎各位star。 地址&#xff1a;https://github.com/shadowings-zy/front-end-school-recruitment-question 1、HTML 元素&#xff08;element&#xff09; Q&am…...

wordpress网站属于什么网站吗/新闻发稿推广

英文文档&#xff1a;oct ( x )Convert an integer number to an octal string. The result is a valid Python expression. If x is not a Pythonobject,it has to define anmethod that returns an integer.说明&#xff1a;1. 函数功能将一个整数转换成8进制字符串。如果传入…...

网站建设电话客服话术/windows优化大师官方

文章目录1. 简介2. 开发工具3. 命名规范3.1. 场景3.1.1. MainScene3.1.2. SelectScene3.1.3. GameScene4. 代码仓库地址1. 简介 Antivirus is a 3d game based on Unity 2020.1.0a25.3171 Personal. 2. 开发工具 Unity官方下载与安装与使用说明 3. 命名规范 3.1. 场景 3.…...

微商货源网站源码/自己怎么做百度推广

oracle 数据库NLS_CHARACTERSET 字符集的修改修改Oracle 数据库字符集总结&#xff1a;修改方式大约有3种:方法一: (最安全的方法)数据库创建以后&#xff0c;如果需要修改字符集&#xff0c;通常需要重建数据库&#xff0c;通过导入导出的方式来转换。方法二: (最常用的方法)通…...

西宁网站制作哪里好/河南搜索引擎优化

图形学界大牛Jim Blinn对Phong模型进行了改进&#xff0c;提出了Blinn-Phong模型。Blinn-Phong模型与Phong模型的区别是&#xff0c;把dot(V,R)换成了dot(N,H)&#xff0c;其中H为半角向量&#xff0c;位于法线N和光线L的角平分线方向。Blinn-Phong模型可表示为&#xff1a; Is…...