等保测评中对服务器、数据库等相关优化
等保测评中对服务器及数据库的部分安全处理
【服务器相关】
系统为CentOS7.8
- 密码有效期设置
/etc/login.defs
PASS_MAX_DAYS 90 #密码使用天数
PASS_MIN_DAYS 0
PASS_MIN_LEN 9
PASS_WARN_AGE 15 #提醒用户修改密码天数
注:修改配置后仅针对新增帐号才会生效,原帐号可通过chage
命令调整,可通过chage -l root
查看。
vi /etc/pam.d/system-auth
优先级高于login.defs
# 配置最小长度为8位,至少包含1位大写字母、1位小写字母、1位数字和1位特殊字符。
password requisite pam_cracklib.so minlen=8 dcredit=-1 ucredit=-1 ocredit=-1 lcredit=-1 retry=5 difok=3
# minlen:最小密码长度
# dcredit:最少数字
# ucredit:最少大写字母
# ocredit:最少特殊字符
# lcredit:最少小写字符
# retry:尝试次数
# difok:最少不同字符
chage:密码失效是通过此命令来管理的。
参数意思:
-m 密码可更改的最小天数。为零时代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 用户密码到期前,提前收到警告信息的天数。
-E 帐号到期的日期。过了这天,此帐号将不可用。
-d 上一次更改的日期
-I 停滞时期。如果一个密码已过期这些天,那么此帐号将不可用。
-l 例出当前的设置。由非特权用户来确定他们的密码或帐号何时过期。
- 调整密码强度
/etc/security/pwquality.conf
登录失败处理
/etc/pam.d/sshd
auth required pam_tally2.so onerr=fail deny=10 unlock_time=1800 even_deny_root root_unlock_time=1800
- 登录超时
echo $TMOUT
,可通过/etc/profile
设置export TMOUT=600
并使用source重载。 - 删除或停用不常用账户,如lp games等
- 帐号锁定
vi /etc/pam.d/login
auth required pam_tally2.so file=/var/log/tallylog deny=5 even_deny_root unlock_time=1200
# deny=5 锁定账户次数
# even_deny_root 使用用户
# unlock_time=1200 账号锁定时间
- 修改命令行历史记录保存条数
echo $HISTSIZE
默认1000条vi /etc/profile
调整为0
【数据库相关】
版本为MySQL5.7
- 设置密码复杂度
查看:show variables like 'validate%';
- 设置过期时间
查看:select user,host,password_lifetime,password_last_changed,password_expired from mysql.user;
show variables like 'default_password_lifetime';
ALTER USER 'root'@'localhost' PASSWORD EXPIRE INTERVAL 90 DAY;
登录失败策略,需安装插件
show variables like 'connection_control%';
install plugin CONNECTION_CONTROL soname 'connection_control.so'; install plugin CONNECTION_CONTROL_FAILED_LOGIN_ATTEMPTS soname 'connection_control.so';
- 超时wait_time
- 开启安全审计
show variables like '%general%';
set global general_log=on;
set global log_output='table'; #table / file
[mysqld]
#密码强度
plugin-load=validate_password.so
validate_password_policy=1
validate-password=FORCE_PLUS_PERMANENT
#密码策略
default_password_lifetime=90
#失败次数
connection-control-failed-connections-threshold=3
#锁定时间,单位毫秒
connection-control-min-connection-delay=60000
#连接超时
wait_timeout = 600
interactive_timeout = 600
附:
CentOS7测评命令
查看内核版本 uname -a
查看系统版本 cat /etc/redhat-release
查看IP地址 ifconfig 或 ip a
1 检查是否有空口令账号 awk -F: '( $2== "") { print }' /etc/shadow
2 检查密码强度及有效期策略 cat /etc/login.defs
3 具备登录失败处理:连续失败达到次数进行锁定 cat /etc/pam.d/system-auth
4 登录超时退出(长时间未登录,退出登录界面)。 echo $TMOUT
5 是否禁用Telnet systemctl status telnet
6 双因子验证(密钥)
7 普通操作不应使用root账号
8 关键文件、命令的权限划分要适当,防止普通用户执行关键操作。 ls -l /etc/passwd
9 root账户应禁止远程登录 cat /etc/ssh/sshd_config
10 列出具有登录shell的用户 cat /etc/passwd | grep '/bin/bash'
11 列出具有超级权限的用户 cat /etc/passwd | awk -F: '$3==0'
12 删除或停用不需要登录的用户 如adm,lp,sync,shutdown,halt,news,uucp,operator,games,gopher
13 查看是否有免密执行sudo命令的账户 sudo visudo
14 是否指定专人进行账号管理、权限分配。
15 查看重要文件修改历史。 stat 文件名
16 查看SELinux的模式和详细信息,查看SELinux配置信息。 getenforce sestatus cat /etc/selinux/config
18 查看审计服务状态 service auditd status service rsyslog status
19 查看审计日志 tail /var/log/audit/audit.log
20 查看审计策略 cat /etc/audit/auditd.conf
21 查看审计报表 aureport -if /var/log/audit/audit.log
22 查看是否有多余的安装组件 rpm -qa
23 查看系统所有的进程 ps aux | less 或 pstree -apnh | less (建议)
25 查看正在运行的服务 systemctl list-units 显示全部服务 systemctl list-units --type=service 显示所有已启动的服务
26 查看当前监听的端口 netstat -ntlp
27 查看是否使用白名单限制接入地址 cat /etc/hosts.deny cat /etc/hosts.allow
28 查看防火墙状态 systemctl status firewalld.service (如果防火墙开启了)查看防火墙规则 firewall-cmd --list-all
MySQL指标: