0


Centos7十五项安全加固标准配置(结合等保3)

写在前面:由于所有操作均涉及系统文件,建议所有操作前备份文件及做好相关记录

一、检查系统空密码账户 | 身份鉴别

描述

检查是否存在空口令和root权限的账号

加固建议

对无口令并且可登录的账户,进行密码设置:(注意密码不能包含用户名,也不能少于7位)

具体操作命令和步骤

1、检查空口令账户

awk -F: '$2=="!!" {print $1}' /etc/shadow

2、检查空口令账户哪些可以登录

 grep -v "/sbin/nologin" /etc/passwd

PS: /bin/bash的为可登录账户

3、加固可登录的空口令账户或注销空口令账户

4、检测root权限账号

awk -F: '($3==0)' /etc/passwd

确保uid为0的账号只能是root账号

操作时建议做好记录或备份

二、SSH安全加固 | SSH服务配置

描述

加固SSH远程访问安全策略,限制可登录用户及来源地址

加固建议

编辑文件/etc/ssh/sshd_config,将一应配置修改

具体操作命令和步骤

1、编辑文件/etc/ssh/sshd_config

vim /etc/ssh/sshd_config

2、修改配置

Port = ***

--修改默认端口

AllowUsers 用户名[email protected] 用户名[email protected]

--设置允许登录用户,多个用户可空格添加

AllowGroup ***

--设置允许登录用户组

ListenAddress 0.0.0.0

--设置SSH指定的本地地址,多网卡可用

Protocol 2

--强制使用 V2安全协议 ,SSH1存在漏洞与缺陷

MaxAuthTries = 3 

--修改允许密码错误次数

PermitRootLogin no

--禁止使用root远程登录

RSAAuthentication yes

--设置用户密钥登录,只针对SSH1,此功能另开一篇记录

PubkeyAuthentication yes

--设置是否开启公钥验证

PermitEmptyPasswords

no --是否允许空密码

ClientAliveInterval 300

--设置SSH空闲超时退出时间,单位:秒

ClientAliveCountMax 0

--设置允许超时的次数 0即表示不允许超时

LogLevel INFO

– 开通登录日志的详细记录

AllowAgentForwarding no

AllowTcpForwarding no

--设置是否允许允许tcp端口转发,保护其他的tcp连接

UseDNS no

--设置不使用dns反向解析

MaxStartups 5

--设置同时允许5尚未登入的联机,当用户连上ssh但并未输入密码即为所谓的联机

3、记录所有用户的登录和操作日志

通过脚本代码实现记录所有用户的登录操作日志,防止出现安全事件后无据可查。

vim /etc/profile

修改配置文件,在配置文件中输入以下内容:

history
 USER=`whoami`
 USER_IP=`who -u am i 2>/dev/null| awk '{print $NF}'|sed -e 's/[()]//g'`
 if [ "$USER_IP" = "" ]; then
 USER_IP=`hostname`
 fi
 if [ ! -d /var/log/history ]; then
 mkdir /var/log/history
 chmod 777 /var/log/history
 fi
 if [ ! -d /var/log/history/${LOGNAME} ]; then
 mkdir /var/log/history/${LOGNAME}
 chmod 300 /var/log/history/${LOGNAME}
 fi
 export HISTSIZE=4096
 DT=`date +"%Y%m%d_%H:%M:%S"`
 export HISTFILE="/var/log/history/${LOGNAME}/${USER}@${USER_IP}_$DT"
 chmod 600 /var/log/history/${LOGNAME}/*history* 2>/dev/null

PS1: 记得执行命令:

source /etc/profile

让配置生效

PS2:

/var/log/history

是日志记录位置,可自定义。

通过上述脚本,可以在 /var/log/history 目录下以每个用户为名新建一个文件夹,每次用户退出后都会产生以用户名、登录IP、时间的日志文件,包含此用户本次的所有操作。

三、设置密码失效时间 | 身份鉴别

描述

设置密码失效时间,强制定期修改密码,减少密码被泄漏和猜测风险,使用非密码登录方式(如密钥对)请忽略此项。

加固建议

使用非密码登录方式如密钥对,请忽略此项。在 /etc/login.defs中将 PASS_MAX_DAYS 参数设置为 60-180之间

具体操作命令和步骤

1、修改配置文件 vi /etc/login.defs,设置全体用户的密码过期时间等

PASS_MAX_DAYS 90 ``#新建用户的密码最长使用天数
PASS_MIN_DAYS 0 ``#新建用户的密码最短使用天数
PASS_WARN_AGE 7 ``#新建用户的密码到期提前提醒天数

2、单独修改单用户的密码失效时间

使用chage 命令单独修改单用户配置

chage -m 0 -M 30 -E 2023-01-01 -W 7 doubles

chage -m (最短时间) -M (最长时间) -E (过期时间) -W (过期前X天提示) 用户名

表示将此用户doubles的密码最短使用天数设为0,最长使用天数设为30,密码2023年1月1日过期,过期前七天警告用户
操作时建议做好记录或备份

四、设置密码修改最小间隔时间 | 身份鉴别

描述

设置密码修改最小间隔时间,限制密码更改过于频繁

加固建议

在 /etc/login.defs 中将 PASS_MIN_DAYS 参数设置为7-14之间,建议为7:

PASS_MIN_DAYS 7
需同时执行命令为root用户设置:

chage --mindays 7 root
操作时建议做好记录或备份

五、确保密码到期警告天数为7或更多 | 身份鉴别

描述

确保密码到期警告天数为28或更多

加固建议

在 /etc/login.defs 中将 PASS_WARN_AGE 参数设置为7-14之间,建议为7:

PASS_WARN_AGE 7
同时执行命令使root用户设置生效:

chage --warndays 7 root
操作时建议做好记录或备份

六、删除或禁用无用的账户和账户组 | 身份鉴别

描述

减少系统无用账号,降低安全风险。

加固建议

编辑/etc/passwd 和 /etc/group,注释无用的用户和用户组
操作时建议做好记录或备份

具体操作和步骤

1、用户和用户组涉及系统稳定性,修改前需要备份

cp /etc/passwd /etc/passwd_bak
cp /etc/group /etc/group_bak

2、注释无用的用户和用户组分别有:

用户: adm,lp,sync,shutdown,halt,news,uucp,operator,games,ftp,postfix,dovecot

用户组: adm,lp,mail,games,ftp,audio

加# 注释即可

七、限制用户切换至root | 安全配置

描述

禁止普通用户su到root用户,只允许指定的用户su到root用户。(需要root权限)

加固建议

为禁止普通用户su至root,需要分别修改/etc/pam.d/su和/etc/login.defs两个配置文件。

具体操作和步骤

自定义用户组能够su

1、创建用户组groupa

groupadd groupa

2、创建/etc/security/su-groupa-access文件,里面指定允许su到的用户

vim /etc/security/su-groupa-access
yjt
root

这就表示groupa的用户可以su到root和yjt,且要保证文件权限不是所有人都可以修改的。

3、在/etc/pam.d/su下加入下面三行

vim /etc/pam.d/su
auth [success=2 default=ignore] pam_succeed_if.so use_uid user notingroup groupa
auth required pam_wheel.so use_uid group=groupa
auth required pam_listfile.so item=user sense=allow onerr=fail

ClientAliveInterval 600
ClientAliveCountMax 2
操作时建议做好记录或备份

八、确保rsyslog服务已启用 | 安全审计

描述

确保rsyslog服务已启用,记录日志用于审计

加固建议

运行以下命令启用rsyslog服务:

systemctl enable rsyslog
systemctl start rsyslog
操作时建议做好记录或备份

九、设置密码错误锁定策略 | 服务配置

描述

设置锁定策略,防止被字典爆破

加固建议

编辑/etc/pam.d/sshd 文件,设置连续输错三次密码,账号锁定五分钟,只能由root用户解锁。

具体操作和步骤

1、修改配置

auth required pam_tally2.so onerr=fail deny=3 unlock_time=300

--一定要写在#%PAM-1.0下面,否则即使输错三次,只要继续输对了密码,还是可以登录,导致无法锁定

2、具体配置如下

#%PAM-1.0
auth       required    pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth         required     pam_tally2.so onerr=fail deny=3 unlock_time=300 event_deny_root root_unlock_time=10
#pam_tally2.so:位于/usr/lib64/security/下。(注意:如果用pam_tally.so,是没有自动解锁的功能。只能进单用户模式解锁。)
#deny:设置普通用户和root用户连续错误登陆的最大次数,超过最大次数,则锁定该用户;
#unlock_time 设定普通用户锁定后,多少时间后解锁,单位是秒;
#no_magic_root 连root用户也在限制范围,不给root特殊权限。
#even_deny_root 也限制root用户;
#root_unlock_time 设定root用户锁定后,多少时间后解锁,单位是秒

# Used with polkit to reauthorize users in remote sessions-auth      optional     pam_reauthorize.so prepare
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth

# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so

# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    required     pam_namespace.so
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

# Used with polkit to reauthorize users in remote sessions
-session   optional     pam_reauthorize.so prepare

十、访问控制配置文件的权限设置 | 文件权限

描述

访问控制配置文件的权限设置

加固建议

运行以下4条命令:

chown root:root /etc/hosts.allow
chown root:root /etc/hosts.deny
chmod 644 /etc/hosts.deny
chmod 644 /etc/hosts.allow

操作时建议做好记录或备份

十一、设置用户权限配置文件的权限 | 文件权限

描述

设置用户权限配置文件的权限

加固建议

执行以下5条命令

chown root:root /etc/passwd /etc/shadow /etc/group /etc/gshadow
chmod 0644 /etc/group
chmod 0644 /etc/passwd
chmod 0400 /etc/shadow
chmod 0400 /etc/gshadow

操作时建议做好记录或备份

十二、开启地址空间布局随机化 | 入侵防范

描述

它将进程的内存空间地址随机化来增大入侵者预测目的地址难度,从而降低进程被成功入侵的风险

加固建议

在/etc/sysctl.conf或/etc/sysctl.d/*文件中设置以下参数: kernel.randomize_va_space = 2 执行命令: sysctl -w kernel.randomize_va_space=2

操作时建议做好记录或备份

十三、为grub 设置密码 | 安全加固

描述

为linux引导器grub设置密码,防止别人通过grub引导进入单用户模式进行非法操作。

加固建议

grub2-setpassword

配置密码,加固服务器物理层的防御

具体操作和建议

1、查看系统默认密码

cat /etc/grub2.cfg | grep password

2、查看grub登录用户名

cat /etc/grub.d/01_users 

3、 通过上面发现用户名是root,接下来通过grub2-setpassword命令修改密码

grub2-setpassword 

4、改完密码重启

init 6

PS1: 在这里你就可以修改root密码的,慎重使用grob

PS2: 以上环境是centos7,其他系统环境略有所不同。

操作时建议做好记录或备份

十四、设置密码复杂度 | 身份鉴别

描述

加强口令的复杂度等,降低被猜解的可能性

操作时建议做好记录或备份

加固建议

a、用户密码不能包含用户名

b、用户密码不能少于10位

c、用户密码需要是特殊字符、数字、字母的组合

Linux对应的密码策略模块有:pam_passwdqc 和 pam_pwquality 。

pam_passwdqc模块对应的是/etc/login.defs

pam_pwquality模块对应的是/etc/security/pwquality.conf

具体操作及步骤

1、修改/etc/login.defs

vim /etc/login.defs

PASS_MIN_LEN 10 #密码最小长度

2、修改/etc/pam.d/system-auth

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

--备份

password sufficient pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5

--找到同时有 “password” 和 “pam_unix.so” 字段并且附加有 “remember=5” 的那行,它表示禁止使用最近用过的5个密码(己使用过的密码会被保存在 /etc/security/opasswd 下面)

password requisite pam_cracklib.so retry=3 difok=3 minlen=10

--设置密码最小长度

3、相关字段说明:

pam_cracklib.so: 比较重要和难于理解的是它的一些参数和计数方法,其常用参数包括:

debug: 将调试信息写入日志;

type=xxx: 当添加/修改密码时,系统给出的缺省提示符是“New UNIX password:”以及“Retype UNIX

password:”,而使用该参数可以自定义输入密码的提示符,比如指定type=your own word;

retry=N: 定义登录/修改密码失败时,可以重试的次数;

difok=N : 定义新密码中必须有几个字符要与旧密码不同。但是如果新密码中有1/2以上的字符与旧密码不同时,该新密码将被接受;

minlen=N: 定义用户密码的最小长度;

dcredit=N: 定义用户密码中必须包含多少个数字;

ucredit=N: 定义用户密码中必须包含多少个大写字母;

lcredit=N: 定义用户密码中必须包含多少个小些字母;

ocredit=N: 定义用户密码中必须包含多少个特殊字符(除数字、字母之外);

我的配置如下(vim

/etc/pam.d/system-auth

):

以下配置对root用户完全不起作用的,root权限为最高。-1表示至少一个

#%PAM-1.0
# This file is auto-generated.
# User changes will be destroyed the next time authconfig is run.
auth        required      pam_env.so
auth        sufficient    pam_unix.so nullok try_first_pass
auth        requisite     pam_succeed_if.so uid >= 1000 quiet_success
auth        required      pam_deny.so

account     required      pam_unix.so
account     sufficient    pam_localuser.so
account     sufficient    pam_succeed_if.so uid < 1000 quiet
account     required      pam_permit.so

password    requisite     pam_pwquality.so try_first_pass local_users_only retry=3 dcredit=-1 ucredit=-1 lcredit=-1 ocredit=-1 difok=1 minlen=8 authtok_type="double type"
password    sufficient    pam_unix.so sha512 shadow nullok try_first_pass use_authtok remember=5
password    required      pam_deny.so

session     optional      pam_keyinit.so revoke
session     required      pam_limits.so
-session     optional      pam_systemd.so
session     [success=1 default=ignore] pam_succeed_if.so service in crond quiet use_uid
session     required      pam_unix.so

十五、检查密码重用是否受限制 | 身份鉴别

描述

强制用户不重用最近使用的密码,降低密码猜测攻击风险

加固建议

在/etc/pam.d/password-auth和/etc/pam.d/system-auth中password sufficient pam_unix.so 这行的末尾配置remember参数为5-24之间,原来的内容不用更改,只在末尾加了remember=5。

操作时建议做好记录或备份

标签: 安全 网络 linux

本文转载自: https://blog.csdn.net/Wizard_1/article/details/127684468
版权归原作者 起西洲 所有, 如有侵权,请联系我们删除。

“Centos7十五项安全加固标准配置(结合等保3)”的评论:

还没有评论