1.
创建非root管理员用户:sudo adduser deploy; sudo usermod -aG sudo deploy。禁用root直接登录:编辑 /etc/ssh/sshd_config,设置 PermitRootLogin no,然后 sudo systemctl restart sshd。
细分:限制sudo权限:在 /etc/sudoers.d/ 下创建文件,指定命令白名单;使用 chown/chmod 设置目录权限,避免777。启用强口令和/或SSH密钥登录(下一节)。
2.
生成密钥并部署:在本地运行 ssh-keygen -t ed25519 -C "your@email";将公钥复制到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub deploy@server_ip。
编辑 /etc/ssh/sshd_config:设置 PasswordAuthentication no、PubkeyAuthentication yes、PermitRootLogin no、AllowUsers deploy,重启服务 sudo systemctl restart sshd。设置登录超时减少暴力破解风险:LoginGraceTime 30。
3.
快速UFW示例(Ubuntu):sudo ufw default deny incoming; sudo ufw default allow outgoing; sudo ufw allow OpenSSH; sudo ufw allow 80,443/tcp; sudo ufw enable。
Fail2ban:安装 sudo apt install fail2ban;在 /etc/fail2ban/jail.local 添加 sshd 配置,设置 bantime、maxretry、findtime;sudo systemctl restart fail2ban。可将 SSH 端口换成非22端口并在UFW放行。
4.
定期更新:Debian/Ubuntu 使用 sudo apt update && sudo apt upgrade -y;可用 unattended-upgrades 自动化安全更新:sudo apt install unattended-upgrades 并配置 /etc/apt/apt.conf.d/50unattended-upgrades。
细分:为生产服务先在测试环境验证更新;为关键服务配置告警(邮件/Slack)。记录变更并使用配置管理工具(Ansible/Chef/Puppet)统一管理。
5.
安装Certbot并申请证书:sudo apt install certbot python3-certbot-nginx;sudo certbot --nginx -d example.com -d www.example.com,自动修改Nginx配置并启用HTTPS。
自动续期:certbot renew --dry-run,使用 cron/系统定时器每12小时运行一次续期命令并重载Nginx:certbot renew && sudo systemctl reload nginx。
6.
安装并运行ClamAV:sudo apt install clamav clamav-freshclam;定期扫描:clamscan -r --infected /var/www。部署OSSEC/ Wazuh做主机入侵检测(HIDS)。
日志集中:使用rsyslog+ELK或Prometheus+Grafana收集/告警,重要日志(/var/log/auth.log、nginx/access.log)建立告警规则并保留至少90天。
7.
备份策略:遵循3-2-1原则:本地快照(1)、异地备份(至少1份,S3/对象存储)、至少2种媒介。数据库每日热备,文件增量每小时。
示例rsync增量备份脚本(/usr/local/bin/backup_rsync.sh):
#!/bin/bash SRC="/var/www/" DST="/backups/$(date +%F)" mkdir -p ${DST} rsync -a --delete --link-dest=/backups/latest ${SRC} ${DST} rm -f /backups/latest ln -s ${DST} /backups/latest
示例Crontab:0 * * * * /usr/local/bin/backup_rsync.sh >> /var/log/backup.log 2>&1
8.
Borg快速示例:安装 pip3 install borgbackup;初始化仓库 borg init --encryption=repokey /mnt/backup/borgrepo;备份 borg create /mnt/backup/borgrepo::'{now:%Y-%m-%d}' /var/www。
上传到对象存储用 rclone:配置 rclone remote,然后 rclone sync /backups remote:bucket/。恢复测试要定期进行:先在备用服务器上还原并验证服务。
9.
数据主权:敏感个人资料遵循马来西亚PDPA,尽量将备份存储在马来西亚或受信任区域,并加密传输与静态数据(使用GPG或内建加密)。
文档与审计:记录备份保留策略、访问权限和恢复流程,满足审计和事故响应需求。
10.
答:定期在隔离的测试主机上执行完整恢复流程:用最近的备份文件还原数据库(mysqldump 恢复示例:mysql -u root -p dbname < backup.sql),还原文件系统并启动服务,检查应用功能与日志。每季度进行一次灾难恢复演练并记录耗时与问题。
11.
答:使用传输层TLS(例如rclone/s3、scp)确保网络传输加密;在存储端使用库自带的加密(Borg repokey)或在备份前使用 GPG 加密文件(gpg --symmetric --cipher-algo AES256 backup.tar.gz)。同时限制备份存储访问权限并开启多因素认证。
12.
答:注意时区和本地化设置(/etc/timezone 设置为 Asia/Kuala_Lumpur),确保运维通知支持中文编码,备份与法律合规(PDPA)要优先考虑,选择靠近马来西亚的云区域以降低延迟与满足数据主权需求。