1.
概述与准备
- 概述:本文以Ubuntu/Debian为主,兼顾CentOS。目标:基础加固、防火墙、入侵检测、备份与恢复测试。
- 准备:用root或具sudo权限的账号登录VPS;在做配置前先快照(若提供商支持);准备一台信任的管理机用于远程测试与备份存储。
2.
系统更新与最小化安装
- 步骤(Ubuntu/Debian):执行 sudo apt update && sudo apt upgrade -y。删除不必要服务:列出 systemctl list-unit-files --type=service,停止并禁用不需要的服务:sudo systemctl disable --now 服务名。
- CentOS:sudo yum update -y 或 dnf update -y;禁用不必要服务同上。
3.
SSH 登录硬化
- 修改配置:sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak;编辑 sudo nano /etc/ssh/sshd_config,建议设置:PermitRootLogin no、PasswordAuthentication no(开启密钥登录后)、PermitEmptyPasswords no、UsePAM yes、AllowUsers youruser。
- 更改默认端口(例如 22 -> 2222):Port 2222(同时在防火墙中放行新端口)。重启 SSH:sudo systemctl restart sshd。
- 配置密钥登录并禁用口令:在本地生成密钥 ssh-keygen,复制到服务器:ssh-copy-id -p 2222 user@your_vps;测试无密码登录后再禁用口令。
4.
防火墙:ufw(适合快速)配置示例
- 安装与启用:sudo apt install ufw -y;sudo ufw default deny incoming;sudo ufw default allow outgoing。
- 放行必须端口:sudo ufw allow 2222/tcp(SSH新端口);sudo ufw allow 80/tcp;sudo ufw allow 443/tcp。
- 启用并检查:sudo ufw enable;sudo ufw status verbose。
- 额外规则:限制SSH速率(ufw limit 2222/tcp),允许管理机IP:sudo ufw allow from 管理机IP to any port 2222。
5.
防火墙:iptables / nftables(更细粒度)示例
- 基本iptables规则示例:sudo iptables -F;sudo iptables -P INPUT DROP;sudo iptables -P FORWARD DROP;sudo iptables -P OUTPUT ACCEPT;允许loopback和已建立连接:sudo iptables -A INPUT -i lo -j ACCEPT;sudo iptables -A INPUT -m conntrack --ctstate ESTABLISHED,RELATED -j ACCEPT;允许SSH/HTTP/HTTPS:sudo iptables -A INPUT -p tcp --dport 2222 -j ACCEPT ...。
- 保存规则:Ubuntu: sudo apt install iptables-persistent -y,然后 sudo netfilter-persistent save。
- nftables:可替代iptables,建议生产环境按发行版文档配置并保存。
6.
入侵检测与防护(fail2ban、rkhunter、AIDE)
- fail2ban(防暴力破解):sudo apt install fail2ban -y;复制模板 sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local;编辑 jail.local,启用 sshd 并配置 bantime、findtime、maxretry。重启 sudo systemctl restart fail2ban;查看状态 sudo fail2ban-client status sshd。
- rkhunter(根套件检测):sudo apt install rkhunter -y;sudo rkhunter --update;sudo rkhunter --checkall。排查误报并定期cron运行。
- AIDE(文件完整性):sudo apt install aide -y;sudo aideinit;配置 /etc/aide/aide.conf;初始化后将数据库备份到安全位置,定期对比 sudo aide --check。
7.
网络入侵检测(Suricata / OSSEC)
- Suricata(IDS/IPS):安装(Ubuntu):sudo apt install suricata -y;编辑 /etc/suricata/suricata.yaml 调整 HOME_NET 为你的网段;启用并启动 sudo systemctl enable --now suricata;测试:suricata -T -c /etc/suricata/suricata.yaml。搭配 EVE 日志输出到文件并用 ELK/Graylog 分析。
- OSSEC(主机IDS,日志/告警):可部署OSSEC Server/Agent,或使用Wazuh(OSSEC升级版)。按照官方安装脚本安装Agent在VPS上并注册到管理服务器。
8.
备份策略(本地快照 + 异地备份)
- 快照:优先在提供商面板做快照(立即)。这是最简易恢复方法。
- 文件+数据库备份:数据库(MySQL/MariaDB):mysqldump -u root -p dbname > /root/dbname_$(date +%F).sql。文件:rsync -av --delete /var/www/ /backup/www/。
- 异地:使用 rsync 推送到管理机或对象存储(S3/Wasabi);示例:rsync -azP /backup/www user@backup-host:/data/;或用 BorgBackup/duplicity 加密备份并上传到远端。
- 自动化:写脚本并加入 cron,例如每日备份脚本 /usr/local/bin/backup.sh,chmod +x,crontab -e 添加:0 2 * * * /usr/local/bin/backup.sh >/var/log/backup.log 2>&1。定期验证备份可恢复。
9.
日志管理与监控
- 日志轮转:确保 /etc/logrotate.d 有服务配置,避免磁盘被日志填满。
- 集中化:建议把重要日志(/var/log/auth.log、/var/log/syslog、web access/error)发送到远程日志服务器或使用Logstash/Fluentd。
- 监控告警:配置简单的监控(Prometheus Node Exporter + Alertmanager)或使用第三方监控(UptimeRobot、Pingdom)监控服务可用性与磁盘/CPU告警。
10.
恢复演练与应急流程
- 恢复演练:至少每季度做一次恢复测试:从快照回滚、或从备份恢复文件与数据库,并启动服务验证网站或应用正常。记录恢复步骤脚本化。
- 应急流程:编写“被攻陷时”的步骤清单:切断网络/快照/收集内存镜像与日志/切换到备用服务器/告知客户/上报安全团队。
11.
常用检查命令与安全小贴士
- 检查端口:sudo ss -tunlp 或 sudo netstat -tunlp;漏洞扫描:sudo apt install nmap && nmap -sS -Pn -p- your_vps_ip。
- 权限审计:检查可写目录、SUID文件:find / -perm /4000 -type f;定期更新并限制sudoers。启用SELinux/AppArmor可进一步加固。
12.
问:越南VPS上最优先要做的三件事是什么?
答:第一:立即更新系统并备份快照;第二:SSH硬化(密钥登录、禁止root、修改端口);第三:启用防火墙(ufw或iptables)并安装fail2ban防止暴力破解。
13.
问:如何验证备份可用性与入侵检测是否有效?
答:备份:定期在隔离环境中执行恢复流程并验证网页/数据库数据一致性。入侵检测:模拟失败登录触发fail2ban、在测试网络发送已知Suricata规则签名检测事件,查看告警并调整规则以减少误报。
14.
问:我没有安全管理经验,有没有最简单的快速上线步骤?
答:是的:1) 在面板做快照;2) 更新系统;3) 创建非root用户并禁用root SSH;4) 启用ufw仅放行必需端口;5) 安装并启用fail2ban;6) 建立自动化每日备份并把备份推到异地。这些步骤可迅速降低多数常见风险。
来源:安全加固越南vps主机建议包括防火墙备份与入侵检测配置