个人信息保护服务器配置规范与实操指南
前言
个人信息保护法规(如《个人信息保护法》)要求服务器必须采取必要的技术措施保障数据安全。
很多站长或运维新手面对规范条文无从下手,其实核心就是做好身份认证、访问控制、数据加密与审计日志。
本文带你从零开始,用最简单的方式搭建符合规范配置的服务器。
配置前需要确认的几件事
- 服务器环境:本文基于 Linux(CentOS 7/8 或 Ubuntu 20.04),同时提供宝塔面板操作路径。如果你用的是 Windows Server,可参考对应安全组与 IIS 设置。
- 工具准备:SSH 客户端(如 Putty)或宝塔面板后台。
- 事先备份:建议在测试机或快照中操作,避免影响现有业务。
第一步:服务器基础安全加固(系统层)
1. 关闭不必要的端口和服务
- 命令行方式:
# 查看所有监听端口
netstat -tlnp
# 使用 firewalld 关闭非必要端口(如 21、23、445 等)
systemctl stop vsftpd # 示例:关闭 FTP
systemctl disable vsftpd
- 宝塔面板方式:进入「安全」→「端口管理」,仅保留 22(SSH)、80、443(Web)等必要端口,其余直接删除。
2. 设置强密码与 SSH 密钥登录
- 修改 root 密码(长度 >16 位,含大小写、数字、特殊字符)。
- 推荐禁用密码登录,仅允许密钥:
# 在服务器上生成密钥(如已有可跳过)
ssh-keygen -t rsa -b 4096
# 将公钥追加到 authorized_keys
cat ~/.ssh/id_rsa.pub >> ~/.ssh/authorized_keys
# 修改 SSH 配置
vim /etc/ssh/sshd_config
# 找到以下三项改为:
PasswordAuthentication no
PubkeyAuthentication yes
PermitRootLogin prohibit-password
# 重启 SSH 服务
systemctl restart sshd
注意:修改前务必确保私钥已妥善保存,否则你会把自己锁在外面!
第二步:数据库与敏感数据保护
1. 数据库密码加密存储
- MySQL / MariaDB 用户密码建议使用
PASSWORD()函数加密,且密码复杂度同系统账户。 - 开启数据库日志审计(记录所有查询):
# 在 my.cnf 中添加
[mysqld]
general_log = 1
general_log_file = /var/log/mysql/query.log
log-queries-not-using-indexes = 1
宝塔用户可直接在「数据库」→「管理」→「配置」中勾选“开启慢查询日志”和“常规日志”。
2. 为敏感字段加盐脱敏
- 如果业务涉及身份证、手机号等个人信息,建议在代码层对数据进行 AES 加密,或使用数据库自带的加密函数(如 MySQL 的
AES_ENCRYPT)。 - 零基础提示:这一步通常需要配合后端开发,但作为运维,你可以检查应用配置中是否已将敏感数据加密存储,而非明文。
第三步:访问控制与权限最小化
- 文件权限:网站目录只给运行用户(如 www)读执行权限,写入仅限上传目录。
chown -R www:www /www/wwwroot/你的网站
find /www/wwwroot/你的网站 -type d -exec chmod 755 {} \;
find /www/wwwroot/你的网站 -type f -exec chmod 644 {} \;
- 数据库用户:为每个应用创建独立用户,仅授予该库的 SELECT、INSERT、UPDATE、DELETE 权限,拒绝 DROP 等高危操作。
- 宝塔面板操作:在「数据库」→「权限」中设置用户对应 IP 与权限,建议限制为 localhost。
常见配置遗漏与解决方法
- 忘记关闭默认弱口令:检查是否有默认用户(如 root 密码空)或出厂密码(admin/admin)。用命令
mysql -u root -p尝试空密码登录,若能成功则必须立即修改。 - SSH 配置修改后连不上:千万别退出当前会话!先另开一个窗口测试新连接,确认无误后再关闭老窗口。如果失败,可通过面板或 VNC 恢复。
- 日志审计文件过大撑爆磁盘:记得配置日志轮转(logrotate),例如:
/var/log/mysql/query.log {
daily
rotate 30
compress
missingok
}
配置完成后如何验证合规性
执行以下步骤检查你的服务器是否达到基本要求:
- 端口扫描(使用 nmap 或在线工具):确保只开放了必要的端口(22、80、443)。
nmap -sT 你的服务器IP
- 密码强度检查:尝试用简单密码 SSH 登录,确认被拒绝。
- 数据库加密验证:从应用层插入一条测试数据,查看数据库中是否存储为密文而非明文。
- 日志文件存在:检查
/var/log/secure(SSH 登录日志)和/var/log/mysql/query.log是否有内容。 - 权限验证:尝试用 www 用户写非上传目录,应报错。
最后总结
本文从系统层、数据库层、应用层三个维度给出了个人信息保护服务器配置规范的落地步骤。
核心是:最小权限、强认证、加密存储、完整审计。
按照这四步走,你的服务器就能基本满足法规对技术措施的要求。
如果遇到异常,重点回看“常见遗漏”部分。
建议将上述配置写成脚本或工具,在新服务器初始化时一键执行,既能提高效率又能避免遗漏。
如果你还有其他特定场景(如 CDN、API 网关)的合规需求,欢迎留言交流。