VPS 数据安全指南:加密、备份、容灾一个都不能少


数据是服务器上最值钱的资产。硬盘坏了、被勒索病毒加密、误删数据库——任何一件事都可能让业务归零。今天分享一套完整的数据安全方案,覆盖加密、备份、容灾三个层面。

img

一、数据加密

  1. 磁盘加密(LUKS)
# 加密新分区
sudo cryptsetup luksFormat /dev/sdb1
sudo cryptsetup open /dev/sdb1 backup_crypt
sudo mkfs.ext4 /dev/mapper/backup_crypt

# 开机自动挂载(需输入密码或配置 keyfile)
file)
sudo cryptsetup close backup_crypt
  1. 数据库敏感字段加密
-- MySQL 加密函数示例
INSERT INTO users (email) VALUES (AES_ENCRYPT('user@example.com', 'your_key'));
SELECT AES_DECRYPT(email, 'your_key') FROM users;
  1. 配置文件加密
# 用 ansible-vault 或 sops 加密配置文件
sops -e config.yml > config.enc.yml
sops -d config.enc.yml > config.yml

二、备份策略(3-2-1 原则)

  • 3 份副本:原始数据 + 2 份备份
  • 2 种介质:本地磁盘 + 云存储
  • 1 份异地:至少一份在不同地理位置

自动化备份脚本:

#!/bin/bash
# /usr/local/bin/backup.sh

DATE=$(date +%Y%m%d)
BACKUP_DIR="/backup/$DATE"
S3_BUCKET="s3://your-backup-bucket"

# 创建备份目录
mkdir -p $BACKUP_DIR

# 备份数据库
mysqldump -u root -p'password' --all-databases | gzip > $BACKUP_DIR/mysql-all.sql.gz

# 备份网站文件
tar czf $BACKUP_DIR/www.tar.gz /var/www/html

# 备份配置文件
tar czf $BACKUP_DIR/etc.tar.gz /etc/nginx /etc/mysql /etc/ssh

# 同步到云存储
rclone sync $BACKUP_DIR $S3_BUCKET/vps-backup/$DATE/

# 清理 7 天前的本地备份
find /backup -type d -mtime +7 -exec rm -rf {} \;

# 发送通知
curl -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY" \
    -d "{\"msgtype\":\"text\",\"text\":{\"content\":\"备份完成:$DATE\"}}"

三、容灾演练

# 模拟数据库损坏,测试恢复
# 1. 停止 MySQL
sudo systemctl stop mysql

# 2. 删除数据目录(测试环境!)
sudo mv /var/lib/mysql /var/lib/mysql.bak

# 3. 从备份恢复
gunzip < /backup/20260808/mysql-all.sql.gz | mysql -u root -p

# 4. 验证数据完整性
mysql -e "SHOW DATABASES;"
mysql -e "SELECT COUNT(*) FROM wordpress.wp_posts;"

手机扫码阅读

微信或手机浏览器扫一扫,随时随地随心阅读与分享

VPS 日志安全分析:从海量日志中揪出入侵者的实战技巧

VPS 网络层安全:DDoS 攻击识别与应急防护指南

评 论
更换验证码