Linux 安全配置

密码复杂度策略

# 安装 PAM 密码质量模块
yum install libpwquality -y

# 编辑 /etc/security/pwquality.conf
minlen = 12          # 最小长度
dcredit = -1         # 至少1个数字
ucredit = -1         # 至少1个大写字母
lcredit = -1         # 至少1个小写字母
ocredit = -1         # 至少1个特殊字符

密码有效期

# /etc/login.defs
PASS_MAX_DAYS   90    # 90天后过期
PASS_MIN_DAYS   1     # 修改后至少1天才能再次修改
PASS_WARN_AGE   7     # 过期前7天提醒

登录失败锁定

# /etc/pam.d/sshd 中添加
auth required pam_tally2.so deny=3 unlock_time=3600 onerr=fail

3次失败后锁定账号,1小时后自动解锁。

# 手动解锁账号
pam_tally2 --user=username --reset

会话超时

# /etc/profile 末尾添加
export TMOUT=1800    # 30分钟无操作自动断开
readonly TMOUT

安全审计日志

# 启用 auditd
systemctl start auditd
systemctl enable auditd

# 审计关键文件访问
auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/sudoers -p wa -k sudoers_changes

MySQL 安全配置

密码验证插件

-- 安装密码验证插件
INSTALL PLUGIN validate_password SONAME 'validate_password.so';

-- 查看当前配置
SHOW VARIABLES LIKE 'validate_password%';

-- 调整密码策略
SET GLOBAL validate_password_length = 10;
SET GLOBAL validate_password_policy = MEDIUM;

密码策略级别:

  • LOW:只检查长度
  • MEDIUM:检查长度、数字、大小写、特殊字符
  • STRONG:在 MEDIUM 基础上检查字典文件

登录失败限制

-- 安装连接控制插件
INSTALL PLUGIN CONNECTION_CONTROL SONAME 'connection_control.so';

-- 3次失败后延迟响应
SET GLOBAL connection_control_failed_connections_threshold = 3;
SET GLOBAL connection_control_min_connection_delay = 1000;  -- 毫秒

会话超时

-- 空闲连接超时(秒)
SET GLOBAL wait_timeout = 1800;
SET GLOBAL interactive_timeout = 1800;

最小权限原则

-- 为应用创建专用账号,只授予必要权限
CREATE USER 'app_user'@'192.168.1.%' IDENTIFIED BY 'strong_password';
GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'app_user'@'192.168.1.%';

-- 禁止 root 远程登录
DELETE FROM mysql.user WHERE User='root' AND Host!='localhost';
FLUSH PRIVILEGES;