Ubuntu 上 sqladmin 安全管理实践
一 身份与系统账户安全
- 创建专用管理账户:使用 sudo adduser sqladmin 创建账户,避免直接使用 root;仅在需要时通过 sudo 提权,遵循最小权限原则。
- 强化 SSH 访问:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no、启用 PubkeyAuthentication yes、可选择性修改默认端口并限制允许登录用户;重启 ssh 服务生效。
- 配置 UFW 防火墙:仅开放必要端口,例如 sudo ufw allow OpenSSH 与数据库/管理工具端口,默认拒绝其他入站;定期核查规则。
- 系统加固与持续更新:启用自动安全更新(如 unattended-upgrades),定期执行 sudo apt update && sudo apt upgrade;按需配置 Fail2Ban 抵御暴力破解;启用 Logwatch 进行日志审计;必要时使用 AppArmor 限制进程权限。
二 数据库账户与最小权限
- MySQL
- 本地管理账户:
- 创建:CREATE USER ‘sqladmin’@‘localhost’ IDENTIFIED BY ‘StrongPass!’;
- 授权:GRANT ALL PRIVILEGES ON . TO ‘sqladmin’@‘localhost’ WITH GRANT OPTION;
- 按库授权示例:GRANT SELECT, INSERT, UPDATE, DELETE ON mydb.* TO ‘sqladmin’@‘localhost’;
- 使生效:FLUSH PRIVILEGES;
- 远程管理(如确需):CREATE USER ‘sqladmin’@‘your_ip’ IDENTIFIED BY ‘StrongPass!’; 仅授予目标库/表的必要权限,避免使用 % 通配主机。
- PostgreSQL
- 本地管理角色:
- 创建:CREATE ROLE sqladmin WITH LOGIN PASSWORD ‘StrongPass!’;
- 按需授权:ALTER ROLE sqladmin WITH SUPERUSER CREATEDB CREATEROLE;(生产环境建议细化权限,避免长期赋予 SUPERUSER)
- 按库授权:GRANT ALL PRIVILEGES ON DATABASE mydb TO sqladmin;
- 远程管理(如确需):在 pg_hba.conf 中限制来源 IP 并使用 md5/ scram-sha-256 认证,仅开放必要数据库与权限。
三 数据库与 Web 管理工具安全
- 管理工具选择与部署:优先使用受控环境下的图形化工具(如 phpMyAdmin、MySQL Workbench);若部署 phpMyAdmin,仅绑定本地或内网访问,启用 HTTPS,限制数据库账户权限,避免使用 root 直连。
- 备份与恢复:
- MySQL:定期执行 mysqldump -u root -p mydb > mydb_backup.sql;恢复使用 mysql -u root -p mydb < mydb_backup.sql。
- 通用:将备份文件加密、异地/离线存储,并定期验证可恢复性。
四 审计监控与合规
- 日志与告警:启用数据库通用日志/错误日志与慢查询日志;在系统层面使用 Logwatch 汇总分析,结合 Nagios 等做可用性监控与阈值告警。
- 入侵防护:部署 Fail2Ban 监控 SSH、数据库与管理工具登录失败,自动封禁恶意来源;定期审计 /var/log/auth.log 与数据库日志。
- 安全配置基线:持续更新系统与数据库补丁;按需启用 AppArmor 等强制访问控制,减少被攻陷后的横向移动风险。
五 快速检查清单
| 检查项 |
推荐做法 |
关键命令/配置 |
| 系统账户 |
专用 sqladmin,禁用 root SSH |
adduser sqladmin;/etc/ssh/sshd_config: PermitRootLogin no |
| 认证方式 |
SSH 密钥登录,禁用口令登录 root |
/etc/ssh/sshd_config: PubkeyAuthentication yes |
| 防火墙 |
仅开放 SSH 与必要服务端口 |
ufw allow OpenSSH;ufw enable |
| 数据库账户 |
本地账户优先,最小权限 |
MySQL: GRANT … TO ‘sqladmin’@‘localhost’;PostgreSQL: GRANT ON DATABASE |
| 远程访问 |
限制来源 IP 与端口 |
pg_hba.conf(PostgreSQL);MySQL 绑定内网接口 |
| 管理工具 |
限制来源、启用 HTTPS、最小权限账户 |
phpMyAdmin 仅内网访问;不使用 root |
| 备份恢复 |
定期备份、加密、可验证恢复 |
mysqldump;定期恢复演练 |
| 监控审计 |
日志收集、入侵防护 |
Logwatch;Fail2Ban;Nagios 等 |
注意:涉及生产环境变更前,请在测试环境验证并按需备份;为账户与备份设置强密码,避免明文存储与传输。