温馨提示×

Linux下MySQL的安全设置指南

小樊
96
2025-02-15 19:37:32
栏目: 云计算
亿速云mysql数据库,读写分离,安全稳定,弹性扩容,低至0.3元/天!! 点击查看>>

在Linux系统下对MySQL进行安全设置是保护数据库免受未授权访问和攻击的重要步骤。以下是一个全面的安全设置指南:

1. 密码复杂度策略

  • 设置最小密码长度:例如至少8个字符。
  • 要求密码包含:大写字母、小写字母、数字以及特殊字符。
  • 不允许使用历史记录中的旧密码

示例配置(/etc/login.defs):

PASS_MAX_DAYS 90  # 密码有效期
PASS_MIN_DAYS 0   # 密码修改间隔
PASS_MIN_LEN 8    # 密码最小长度
PASS_WARN_AGE 7   # 密码到期前警告

示例配置(/etc/pam.d/system-auth):

password requisite pam_pwquality.so try_first_pass local_users_only retry=3 authtok_type= minlen=8 lcredit=-1 ucredit=-1 dcredit=-1 ocredit=-1 enforce_for_root

2. 登录失败策略

  • 限制非法尝试登录的次数:例如配置3次锁定、锁定时长60分钟。

示例配置(/etc/pam.d/sshd):

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

3. 登录超时策略

  • 设置合理的会话超时时间:例如30分钟。

示例配置(/etc/profile):

TMOUT=1800

4. MySQL权限和访问控制

  • 查看所有账户
select user,host from mysql.user;
  • 禁止空账户/空密码
select user,password from mysql.user where user='';
select user,password from mysql.user where password='';
  • 修改root用户名
update user set user='xxxxx' where user='root';
  • 查看账号权限
show grants for '用户名'@'主机域';
  • 为账号赋予全局/库/表/字段各层级权限
grant 权限1 权限2 权限3... on 数据库名称.表名称 to '用户名'@'用户地址';
  • 禁止远程root登录
update user set host='localhost' where user='root';
  • 为远程连接账号限定ip地址/网段
update user set host='ip地址' where user='xxx';
  • 关闭MySQL远程连接
[mysqld]
bind_address=127.0.0.1
skip_networking=1

5. 使用SSL加密连接

  • 配置MySQL使用SSL加密连接:在客户端和服务器端都进行相应的配置。

示例配置(/etc/my.cnf):

[mysqld]
ssl-ca=/path/to/ca.pem
ssl-cert=/path/to/server-cert.pem
ssl-key=/path/to/server-key.pem

6. 监控和日志记录

  • 启用auditd/rsyslog
service auditd status
service rsyslog status
  • 记录特定用户登录认证、操作数据库的行为
  • 控制MySQL命令历史记录、.mysql_history、.bash_history文件的权限

7. 账户策略

  • 合理分配不同的管理角色:创建系统管理员、安全管理员和审计管理员等角色,并为每个角色设定相应的权限。

示例:

groupadd sysgroup
useradd -g sysgroup sys
passwd sys
mkdir /vartest
chown -R sys:sysgroup /vartest
chmod 741 /vartest

8. 定期更新和打补丁

  • 定期更新MySQL及其相关组件:确保已应用最新的安全补丁。

示例:

yum update mysql-server

9. 使用防火墙限制访问

  • 使用Linux防火墙(如iptables或ufw)限制对MySQL服务器的访问:只允许特定的端口和IP地址访问。

示例配置(iptables):

iptables -A INPUT -p tcp --dport 3306 -j ACCEPT
iptables -A INPUT -j DROP

10. 配置最小权限原则

  • 为用户分配尽可能低的权限:仅授予完成其任务所需的最小权限。

示例:

revoke all on *.* from 'username'@'host';
grant select on database.* to 'username'@'host';

通过以上步骤,可以显著提高Linux下MySQL数据库的安全性,保护数据免受未授权访问和潜在的安全威胁。

亿速云「云数据库 MySQL」免部署即开即用,比自行安装部署数据库高出1倍以上的性能,双节点冗余防止单节点故障,数据自动定期备份随时恢复。点击查看>>

推荐阅读:ManjaroLinux下MySQL的安全设置指南

0