1
初始化与系统补丁(必须先做)
1) 登录VPS(使用控制台或SSH临时密钥)。
2) 更新软件包并重启(Debian/Ubuntu示例):sudo apt update && sudo apt -y upgrade && sudo reboot。CentOS/RHEL示例:sudo yum -y update && sudo reboot。
3) 检查内核和时间:uname -r && timedatectl set-timezone Europe/Berlin && timedatectl status。确保服务器时区为德国/中欧时间方便排查。
4) 安装常用工具:Debian: sudo apt -y install vim curl wget git ufw fail2ban auditd rsyslog acl; CentOS: sudo yum -y install vim curl wget git firewalld fail2ban audit rsyslog acl。
2
创建非root管理账号并限定sudo
1) 新建用户并设置strong密码或密钥:sudo adduser ops && sudo passwd ops。
2) 将ops加入sudoers但限制NOPASSWD视情况而定:sudo usermod -aG sudo ops;编辑/etc/sudoers.d/ops,写入:ops ALL=(ALL) ALL(推荐记录命令审计)。
3) 禁止root SSH登录:编辑/etc/ssh/sshd_config,设置 PermitRootLogin no,重新加载 sudo systemctl reload sshd。验证通过新用户登录成功再断开当前root会话。
3
SSH安全强化(密钥+端口+限制)
1) 生成密钥:在本地运行 ssh-keygen -t ed25519 -C "ops@yourcompany",把公钥复制到服务器:ssh-copy-id -i ~/.ssh/id_ed25519.pub ops@vps-ip。
2) 在sshd_config中禁用密码认证:PasswordAuthentication no;启用公钥认证:PubkeyAuthentication yes;可更改默认端口 Port 2222(注意与防火墙一致)。重启sshd。
3) 限制允许登录账户:AllowUsers ops adminuser。
4) 配置登录banner与登录失败策略:MaxAuthTries 3,LoginGraceTime 30。
4
防火墙与端口策略(UFW/Firewalld 示例)
1) 推荐只开放必要端口(SSH、HTTP、HTTPS、自定义管理端口)。
2) UFW (Debian/Ubuntu):sudo ufw default deny incoming && sudo ufw default allow outgoing;sudo ufw allow 2222/tcp;sudo ufw allow 80,443/tcp;sudo ufw enable。
3) Firewalld (CentOS):sudo firewall-cmd --permanent --add-port=2222/tcp && sudo firewall-cmd --permanent --add-service=http && sudo firewall-cmd --permanent --add-service=https && sudo firewall-cmd --reload。
4) 为管理IP添加白名单:sudo ufw allow from 1.2.3.4 to any port 2222。
5
防暴力破解与入侵防护(Fail2ban 配置示例)
1) 安装 fail2ban(见第1段)。
2) 创建本地配置:sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local。编辑jail.local,启用sshd:[sshd] enabled = true port = 2222 filter = sshd maxretry = 3 bantime = 3600 findtime = 600。
3) 重载:sudo systemctl restart fail2ban。检查状态:sudo fail2ban-client status sshd。
4) 若使用面板或其他服务,为相应服务添加 jail(nginx-http-auth、apache-auth、sshd-ddos等)。
6
文件与权限硬化(权限、ACL、不可修改标志)
1) 检查关键文件权限:ls -l /etc/shadow /etc/passwd /root;一般 /etc/shadow 权限应为 640 且属 root:shadow。
2) 使用ACL控制应用数据目录:setfacl -R -m u:ops:rwx /var/www/myapp。
3) 对不应被篡改的文件加不可变标志:sudo chattr +i /etc/important.conf(注意:根文件不可滥用)。
4) 配置umask: 在/etc/profile或用户shell配置中设置 umask 027,避免新文件过度开放。
7
日志管理与远程落地(防止日志被修改)
1) 启用rsyslog并配置远程日志服务器:在/etc/rsyslog.conf或/etc/rsyslog.d/remote.conf加入 *.* @@logs.example.com:514,重启rsyslog。
2) 使用logrotate管理本地日志:检查 /etc/logrotate.d/*,设置rotate 7 size 50M 等。
3) 配置auditd记录关键命令与文件访问:sudo auditctl -w /etc/ssh/sshd_config -p wa -k ssh_cfg_change。把规则写入 /etc/audit/rules.d/local.rules 并重启 auditd。
8
检测与扫描(AIDE、Rootkit Hunter)
1) 安装AIDE并初始化数据库:sudo apt install aide -y;sudo aideinit;sudo cp /var/lib/aide/aide.db.new /var/lib/aide/aide.db。定期运行 sudo aide --check。
2) 安装rkhunter:sudo apt install rkhunter -y;更新数据:sudo rkhunter --update && sudo rkhunter --propupd;定期检测:sudo rkhunter --checkall。
3) 可将检测结果通过邮件或Webhook告警。
9
应用与服务安全(Nginx/PHP/Docker简明配置)
1) Nginx:禁用server_tokens,设置客户端限制 client_max_body_size 10M,启用TLS 1.2+,使用强加密套件并配置OCSP stapling。
2) PHP-FPM:运行池使用独立用户,限制 open_basedir,禁用危险函数(exec,passthru,shell_exec,system)。编辑 php.ini 和 www.conf。
3) Docker:最小权限运行容器,避免 --privileged,使用 userns-remap,审查映像并定期扫描漏洞(Clair/Trivy)。
10
备份与恢复策略(快照、增量、恢复演练)
1) 在德国VPS提供商控制面板启用定期快照与离线备份,设置保留策略(7天、30天、90天)。
2) 使用rsync或BorgBackup做异地增量备份:sudo apt install borgbackup,初始化远端仓库并写cron脚本。
3) 定期演练恢复:每季度在临时VPS上恢复数据库与文件,验证服务可用性并记录RTO/RPO。
11
自动化与监控(告警、服务健康检查)
1) 部署Prometheus+Grafana或简易Zabbix监控CPU、内存、磁盘、服务端口与SSH登录失败。
2) 使用UptimeRobot或自建脚本监测HTTP/HTTPS可用性和证书到期。
3) 将关键告警接入邮件、Telegram或PagerDuty,确保24/7有人响应。
12
Q1:将root SSH关闭后如何在紧急情况下恢复访问?
A1:在禁用root SSH前,必须验证一个具备sudo权限的管理账号能成功登录并切换到root(sudo -i)。若远程被锁定,可通过VPS提供商控制面板的Web控制台或救援模式(rescue mode)登录,修改 /etc/ssh/sshd_config 或重置 authorized_keys,然后重启sshd恢复访问。
13
Q2:德国VPS对数据主权有特殊要求吗,是否需要加密本地磁盘?
A2:德国对隐私保护严格,但通常VPS提供商在EU内托管即可满足地域合规。敏感数据建议全盘或分区加密(LUKS),并对备份采用端到端加密。使用加密时注意密钥管理与恢复流程,避免因密钥丢失导致无法恢复。
14
Q3:运维如何快速校验配置是否到位(核查清单)?
A3:可用脚本化核查:编写一个审计脚本检查(1)最新补丁(apt/dnf check),(2)sshd配置(PermitRootLogin、PasswordAuthentication、端口),(3)防火墙规则(ufw status 或 firewall-cmd --list-all),(4)fail2ban 状态,(5)auditd/aide 检测结果,运行后输出HTML或邮件报告。定期执行并纳入CI/CD或配置管理(Ansible/Chef)自动修复。
来源:德国VPS托管安全配置清单帮助运维快速完成权限与防护设置