centos

centos sqladmin安全设置怎么做

小樊
47
2025-10-02 23:28:26
栏目: 云计算

CentOS环境下SQLAdmin安全设置指南

一、系统基础安全加固

  1. 更新系统与软件
    定期执行sudo yum update -y更新CentOS操作系统及已安装的SQLAdmin、数据库(如MySQL/MariaDB)等软件包,及时修复已知安全漏洞。
  2. 禁用不必要的服务
    使用systemctl disable ftp telnet等命令关闭FTP、Telnet等不安全服务,减少潜在攻击面;通过systemctl list-unit-files --state=enabled检查并禁用无用服务。
  3. 强化账户与口令管理
    • 删除默认无用账户(如admlpsync):sudo userdel adm
    • 锁定非必要超级用户:sudo passwd -l username(仅保留root等必需超级用户);
    • 设置强密码策略:修改/etc/login.defs,强制密码长度≥10位、包含大小写字母+数字+特殊字符(如PASS_MIN_LEN 10PASS_REQUIRE_MIXED_CASE yes);
    • 检查空口令账户:sudo awk -F: '($2 == "") {print $1}' /etc/shadow,并为这些账户设置强密码。

二、SQLAdmin用户与权限管理

  1. 创建专用SQLAdmin用户
    使用sudo adduser sqladmin创建专用管理账户,避免直接使用root账户;设置强密码:sudo passwd sqladmin
  2. 配置最小必要权限
    • 登录数据库(mysql -u root -p),仅为sqladmin用户分配其工作所需的最低权限(如仅管理特定数据库mydb):
      CREATE USER 'sqladmin'@'localhost' IDENTIFIED BY 'StrongPassword123!';
      GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO 'sqladmin'@'localhost';
      FLUSH PRIVILEGES;
      
    • 禁止授予ALL PRIVILEGESGRANT OPTION(除非绝对必要),避免权限滥用。
  3. 限制用户访问范围
    • 将sqladmin用户绑定至localhost(仅本地访问),若需远程访问,需添加对应IP限制(如'sqladmin'@'192.168.1.100')并配置防火墙允许该IP访问数据库端口(默认3306)。

三、网络安全配置

  1. 配置防火墙规则
    使用firewalld开放数据库端口(3306),并限制访问源IP:
    sudo firewall-cmd --permanent --zone=public --add-port=3306/tcp
    sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port port="3306" protocol="tcp" accept'
    sudo firewall-cmd --reload
    
    若使用iptables,可添加类似规则:sudo iptables -A INPUT -p tcp -s 192.168.1.100 --dport 3306 -j ACCEPT
  2. 启用SSL/TLS加密
    配置数据库连接使用SSL/TLS,防止数据传输被窃听:
    • 生成SSL证书(如使用openssl);
    • 在数据库配置文件(/etc/my.cnf)中添加:
      [mysqld]
      ssl-ca=/path/to/ca.pem
      ssl-cert=/path/to/server-cert.pem
      ssl-key=/path/to/server-key.pem
      
    • 强制sqladmin用户使用SSL连接:GRANT ... REQUIRE SSL;

四、审计与监控

  1. 开启数据库审计日志
    在数据库配置文件(/etc/my.cnf)中启用通用查询日志和慢查询日志:
    [mysqld]
    general_log = 1
    general_log_file = /var/log/mysql/general.log
    slow_query_log = 1
    slow_query_log_file = /var/log/mysql/slow.log
    long_query_time = 2
    
    重启数据库使配置生效:sudo systemctl restart mysqld
  2. 使用auditd监控系统活动
    安装并配置auditd服务,记录sqladmin用户的操作(如登录、数据库修改):
    sudo yum install audit -y
    sudo systemctl start auditd
    sudo systemctl enable auditd
    
    添加审计规则(监控sqladmin用户的命令执行):
    sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=sqladmin -k sqladmin_commands
    
    查看审计日志:ausearch -k sqladmin_commands

五、其他安全措施

  1. 保护配置文件权限
    数据库配置文件(如/etc/my.cnf)包含敏感信息(如数据库密码),需限制访问权限:
    sudo chown root:sqladmin /etc/my.cnf
    sudo chmod 640 /etc/my.cnf
    
  2. 禁用root远程登录
    修改SSH配置(/etc/ssh/sshd_config),设置PermitRootLogin no,禁止root用户通过SSH远程登录;使用普通用户登录后再切换至root(su -)。
  3. 定期备份数据
    使用mysqldump定期备份数据库(如每日备份),并将备份文件存储至安全位置(如异地服务器):
    mysqldump -u sqladmin -p mydb > /backup/mydb_$(date +%F).sql
    
    定期测试备份恢复流程,确保数据可恢复。

0
看了该问题的人还看了