统信服务器操作系统V20(安全合规基线加固)

身份鉴别

1.账户登录失败锁定功能

加固说明:登录失败五次(包括 root),锁定账户 5 分钟(300 秒),5 分钟后自动解除。

安全加固操作:编辑/etc/pam.d/system-auth、/etc/pam.d/password-auth文件修改如下内容。

auth       required         pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=300
auth      [default=die]     pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=300
auth       sufficient        pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=300

参数介绍

auth       required     pam_faillock.so preauth audit deny=3 even_deny_root unlock_time=300

含义:在用户认证前的预检查阶段

  • preauth:在用户输入密码前执行
  • required:必须通过此模块检查才能继续认证
  • 检查用户是否因失败次数过多被锁定
  • 如果用户已被锁定,会直接拒绝认证尝试
auth       [default=die]     pam_faillock.so authfail audit deny=3 even_deny_root unlock_time=300

含义:处理认证失败的情况

  • authfail:仅在认证失败时执行
  • [default=die]:如果此模块执行,立即终止认证流程并返回失败
  • 当用户密码错误时,增加失败计数
  • 如果失败次数达到5次,锁定账户
auth       sufficient     pam_faillock.so authsucc audit deny=3 even_deny_root unlock_time=300

含义:处理认证成功的情况

  • authsucc:仅在认证成功时执行
  • sufficient:如果认证成功,立即返回成功
  • 重置该用户的失败计数器
  • 清除锁定状态(如果之前被锁定)

工作流程

用户尝试登录 → 执行第一条规则(检查是否被锁定)

密码错误 → 执行第二条规则(增加失败计数)

密码正确 → 执行第三条规则(重置失败计数)

2.设置口令复杂度

 加固说明:账户口令必须符合相应的复杂度要求,最小长度 5 位,由数字、大小写字母、特殊字符混合组成。

 安全加固操作:修改 /etc/security/pwquality.conf 文件。

vim /etc/security/pwquality.conf
#
minlen = 5  //定义用户口令的最小长度
minclass = 3 //口令中必须包含的不同字符类别的最少种类数
maxsequence=3 //限制口令中不允许出现的连续字符序列的最大长度(如 "123" 或 "abc")
maxrepeat=3 //限制同一字符连续出现的最大次数(如 "aaa")

3.口令生存期策略

加固说明:操作系统的账户口令的最长生存期不长于 90 天。

安全加固操作:以普通权限账户登录系统,编辑 /etc/login.defs 文件。

注意:login.defs 文件对 root用户无效,root用户使用chage工具修改。

vim /etc/login.defs
#
PASS_MAX_DAYS  90 ##口令设置最长有效期90 天
PASS_MIN_DAYS   0 ##口令设置最短有效期
PASS_MIN_LEN    5 ##设置口令最小长度
PASS_WARN_AGE   7 ##提前多少天警告用户口令即将过期

sed 执行操作

sed -i 's/^PASS_MAX_DAYS.*/PASS_MAX_DAYS   90/g' /etc/login.defs
sed -i 's/^PASS_MIN_DAYS.*/PASS_MIN_DAYS   0/g' /etc/login.defs 
sed -i 's/^PASS_MIN_LEN.*/PASS_MIN_LEN     5/g' /etc/login.defs 
sed -i 's/^PASS_WARN_AGE.*/PASS_WARN_AGE   7/g' /etc/login.defs

chage工具

chage -l <user>  ##获取账户密码设置信息
chage --maxdays <user>   ##设置口令最长有效期
chage --mindays 6 <user> ##设置口令最短有效期
chage --warndays 7 <user>  ##设置口令即将过期多少天警告

4.限制密码重复使用次数

加固说明:设置口令重复使用次数限制(3次)。

安全加固操作:检查在/etc/pam.d/system-auth查找password,pam_pwhistory 和 remember 所在行。

vim /etc/pam.d/system-auth
#
password    required      pam_pwhistory.so use_authtok remember=3 enforce_for_root

5.加强口令的密码算法

加固说明:设置口令的加密算法为 sha512。

安全加固操作:判断/etc/pam.d/system-auth 文件中 password 和 pam_unix.so 所在行是否包含 sha512。

vim /etc/pam.d/system-auth
#
password  sufficient     pam_unix.so sha512 shadow try_first_pass use_authtok remember=3

访问控制

1.文件与目录缺省权限控制

加固说明:设置 /etc/profile 文件 umask 缺省值。

安全加固操作:修改/etc/profile 文件。

1. 备份 /etc/profile 文件
cp /etc/profile /etc/profile.bak
2. 编辑文件 /etc/profile,在文件末尾添加修改umask值
umask 027
3.立即生效 
source /etc/profile

2.设置口令文件权限

加固说明:防止普通用户读取或拷贝加密的口令文件内容,默认权限设置为 400,仅允许 root 用户进行读操作。

安全加固操作:

chmod 400 /etc/shadow

3.敏感文件安全保护

加固说明:对重要的口令文件权限进行限制,防止恶意修改。

安全加固操作:

chmod 644 /etc/passwd
chmod 400 /etc/shadow
chmod 644 /etc/group
chattr +i /etc/passwd
chattr +i /etc/shadow
chattr +i /etc/group
chattr +i /etc/gshadow

注意:对系统文件使用 chattr +i 可能导致系统更新失败,请在执行系统更新前使用 chattr -i 解除锁定。

4.日志文件权限控制
加固说明:系统应合理配置日志文件权限,控制对日志文件读取、修改和删除等操作。

安全加固操作:

chmod 600 /var/log/messages # 系统日志
chmod 600 /var/log/secure   # 系统登录信息
chmod 600 /var/log/cron     # 定时任务日志
chmod 644 /var/run/utmp     # 记录现在登录的用户
chmod 644 /var/log/auth.log  # 记录登录的信息
chmod 644 /var/log/btmp      # 记录错误登录的日志
chmod 644 /var/log/wtmp      #记录每个用户的登录次数和持续时间等信息

5.配置禁止登录的用户列表

加固说明:保护系统安全,支持配置禁止登录的用户列表,可在 /etc/login.user.deny 中添加禁止登录系统的用户。

安全加固操作:

查看/etc/pam.d/{system-auth,password-auth,password-auth-crond}文件存在内容如下:

auth requisite pam_listfile.so item=user onerr=succeed sense=deny file=/etc/login.user.deny

6.检查是否存在除 root 之外 UID 为 0 的用户

加固说明:保证只有 root 用户的 UID 为 0,因为 UID 为 0 的任何用户都拥有系统的最高特权。

检查方法:

awk -F ":" '$3 >= 1000 || $3 == "0"{ print $1":"$3 }' /etc/passwd

安全加固操作:删除非法用户账户或锁定用户账户。

删除用户

userdel -r 用户名
-r  删除账户主目录

锁定解锁用户账户

锁定用户帐户
usermod -L 用户名
passwd  -l  用户名
#
查看用户状态
passwd -S 用户名
#
解锁用户账户 
#解锁后原有密码失效
passwd -d username 
#原密码仍然有效
passwd -u username

7.禁止系统账户进行交互式登录

加固说明:禁止系统服务账户进行交互式登录增强系统安全性、简化管理、减少不必要的登录活动。

检查方法:检查/etc/passwd文件账户登录shell。

awk -F ":" '{ if ($7 !~ /nologin|shutdown|sync|halt/) print $1":"$3":"$7 }' /etc/passwd

 安全加固操作:设置服务用户/bin/false或/sbin/nologin。

usermod -s /bin/false user

创建用户

useradd -U  -M -s /sbin/nologin user
  • -d 指定新账户的主目录
  • -U 创建与用户同名的组
  • -M 不创建用户的主目录
  • -s 新账户的登录 shell

8.限制 su 命令的访问

加固说明:使用 PAM 认证模块禁止 wheel 组之外的用户 su 为 root。

安全加固操作:

vim  /etc/pam.d/su
#
auth            required        pam_wheel.so root_only group=wheel use_uid

设置用户加入wheel组

usermod -a -G wheel user

9.root 账户远程登录限制及默认端口

加固说明:限制具备超级管理员权限的用户远程登录,远程执行管理员权限操作应先以普通权限用户远程登录后,再 sudo 提权执行。

安全加固操作:

1.修改 /etc/ssh/sshd_config 文件,将PermitRootLogin yes 改为 no。
PermitRootLogin no
#
2.修改 /etc/ssh/sshd_config 文件,将Port 22 改为10022。
Port 10022
#
3.重启 sshd 服务
systemctl restart sshd

检查方法:以普通账户登录系统,确认 root 远程登录不成功,普通用户可以登录成功且能用 su 命令切换到 root 用户。

10.SSH 使用的版本

加固说明:Open SSH V2 版本在安全性能、方便性上有所提高,默认使用 V2 版本,若用户需采用V1 版本可修改数值为 “1”。

安全加固操作:编辑 /etc/ssh/sshd_config 文件,将 Protocol 设置为 2。

11.限制命令历史记录数量

加固说明:Linux 会自动记录用户输入过的命令,此处限制最多记录 100 条,当超过 100 条时,删除最老的记录并设置时间戳。

安全加固操作

编辑 /etc/profile 文件
vim /etc/profile
#
export HISTTIMEFORMAT="%F %T "
HISTFILESIZE=100
HISTSIZE=100
#
立即生效
source /etc/profile

sed 执行操作

sed -i "s/HISTSIZE=100*/HISTSIZE=1000/g" /etc/profile

12.设置命令行超时退出

加固说明:对于具备字符交互界面的系统,配置定时账户自动登出,超时时间为 300 秒,如不使用字符交互界面,该配置可忽略。

安全加固操作:编辑 /etc/profile 文件。

vim /etc/profile
#
export TMOUT=300
#
立即生效
source /etc/profile

sed 执行操作

sed -i "s/TMOUT.*/TMOUT=300/g" /etc/profile

13.禁止ICMP Ping

加固说明:禁止ICMP ping可以防止外部攻击者通过ping探测服务器,从而减少攻击面。

安全加固操作:

sysctl命令查看

sysctl  -a |grep net.ipv4.icmp_echo_ignore_all

在/etc/sysctl.conf添加相应参数,并通过sysctl -p命令应用更改。

vim /etc/sysctl.conf 
##末行写入
net.ipv4.icmp_echo_ignore_all =1
#
立即生效 
sysctl -p

14.firewall 防火墙策略

加固说明:设置合理的防火墙策略有效限制流量访问,从而减少攻击面。

安全加固操作:

检查防火墙运行状态

#启动
systemctl start   firewalld
#开机启动
systemctl enable   firewalld
#查看状态
systemctl  status   firewalld

查看防火墙策略

firewall-cmd   --list-all

查看service 列表

firewall-cmd --get-services

查看zone service

firewall-cmd --list-services --zone=public

防火墙策略放行9091端口

firewall-cmd   --add-port=9091/tcp  --permanent

删除防火墙

firewall-cmd --zone=public --remove-port=9091/tcp –permanent

针对数据库等特殊服务端口,策略需要指定访问节点源IP

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="10.1.9.2" port protocol="tcp" port="3306" accept'

重载防火墙策略

firewall-cmd --reload

禁止所有ping

使用firewall-cmd添加规则,禁止所有ICMP协议的ping请求

firewall-cmd --permanent --add-rich-rule='rule protocol value="icmp" drop'
# 
firewall-cmd --reload

删除禁止所有ping

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" protocol value="icmp"  drop' 
#
firewall-cmd --reload

允许特定IP ping

配置规则,只允许特定IP地址(如192.168.111.55)ping服务器

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" protocol value="icmp" source NOT address="192.168.111.55" drop' 
#
firewall-cmd --reload

删除规则

firewall-cmd --permanent --remove-rich-rule='rule family="ipv4" protocol value="icmp" source NOT address="192.168.111.55" drop' 
#
firewall-cmd --reload

 15.删除无属组属主的文件或文件夹

加固说明:查找系统中无用的文件,不再使用的文件可进行删除,需要使用的文件标明属主属组。

检查方法:

find / \( -nouser -o -nogroup \) -exec ls -al {} \;

16.系统关闭非必要启动项

加固说明:关闭无用服务,提高系统性能,降低漏洞风险。

检查方法:检查有哪些自启动服务列表。

systemctl list-unit-files | grep enabled
#
systemctl list-unit-files --type=service --state=enabled
#
systemctl list-units --type=service --state=active

安全加固操作:禁用无用服务

systemctl stop 服务名
systemctl disabled 服务名

建议关闭的服务

systemctl list-unit-files |grep enabled |egrep "lp|rpc|snmpdx|keyserv|nscd|Volmgt|uucp|dmi|sendmail|autoinstall"

 

posted @ 2026-01-01 02:27  hihibig  阅读(9)  评论(0)    收藏  举报