首先在一台测试服务器上复刻生产环境(相同系统版本与软件)。运行基础检查:uname -a、cat /etc/os-release、ss -tulnp、df -h、free -m。记录安装包管理器(apt/yum)版本,建立变更日志(/var/log/setup-change.log)。目的:确保能在备份环境先验证配置再推到生产。
执行系统更新:Debian/Ubuntu: apt update && apt upgrade -y;CentOS: yum update -y。编辑 /etc/sysctl.conf,加入并执行 sysctl -p: net.ipv4.ip_forward=0 net.ipv4.conf.all.rp_filter=1 net.ipv4.tcp_syncookies=1 net.ipv4.conf.default.accept_source_route=0 这些可防止IP欺骗与SYN洪泛攻击。启用自动安全更新:apt install unattended-upgrades 并配置 /etc/apt/apt.conf.d/50unattended-upgrades。
编辑 /etc/ssh/sshd_config,至少设置: PermitRootLogin no PasswordAuthentication no AllowUsers deploy@yourip youruser 更换默认端口(例如 2222)并重启 sshd:systemctl restart sshd。部署公钥认证:将公钥放入 ~/.ssh/authorized_keys,chmod 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys。创建 sudo 组并限制命令日志。
使用 ufw(Ubuntu)示例: ufw default deny incoming ufw default allow outgoing ufw allow 2222/tcp comment 'SSH' ufw allow 80,443/tcp comment 'Web' ufw enable 对于 iptables,建议添加 DROP 默认规则并显式允许管理IP。对站群应限制管理接口仅允许公司IP与运维VPN访问,启用端口速率限制(iptables -A INPUT -p tcp --dport 22 -m recent --set ...)。
安装 fail2ban:apt install fail2ban,编辑 /etc/fail2ban/jail.local: [sshd] enabled = true port = 2222 filter = sshd maxretry = 5 bantime = 86400 对 nginx 或 other 服务添加自定义 filter(/etc/fail2ban/filter.d/),并测试 fail2ban-client status 来验证触发规则。配合 ipset 防止大规模 IP 列表占用资源。
部署 ModSecurity + OWASP CRS 或使用 Nginx 的 ngx_http_limit_req_module。ModSecurity 示例(Apache): apt install libapache2-mod-security2 cp /usr/share/modsecurity-crs/crs-setup.conf.example crs-setup.conf EnableRules from OWASP CRS,并调整异常白名单。为站群启用 per-site rate limit: limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s 在 server block 使用 limit_req zone=one burst=20 nodelay。
对每个站点使用独立容器(Docker、LXC)或 chroot 环境,限制进程、内存、CPU:Docker run --memory=512m --cpus="0.5"。若无法容器化,使用 systemd 的 MemoryLimit/CPUShares 或 cgroups v2,将不同站点隔离,避免被单站点滥用导致整台主机资源耗尽。
集中日志:Filebeat -> ELK 或 rsyslog 转发到远程日志服务器。安装 Prometheus Node Exporter + Grafana,关注指标:连接数、负载、IO、异常 4xx/5xx。配置基于阈值的告警(邮件/SMS/Slack)。日志轮替:确认 /etc/logrotate.d/ 定期清理,防止日志占满磁盘导致服务崩溃。
建立自动化备份脚本:数据库用 mysqldump 或 xtrabackup,文件用 rsync 到异地(例:rsync -a --delete /var/www/ user@backup:/srv/backup/site/)。定期演练恢复(每月一次),记录恢复步骤。遵守台湾当地ISP与法律合规,保留访客流量日志至少30天以备调查。
问:站群常见的被滥用方式有哪些?
答:常见包括发送垃圾邮件、被用作反向代理做流量放大、被植入挖矿脚本或被加入DDoS攻击节点。预防措施是限制SMTP出口、检测异常进程、封锁被利用的脚本路径并用WAF/IDS拦截可疑请求。
问:被发现服务器被利用或攻击,第一步应做什么?
答:立刻隔离受影响实例(断网或调整安全组仅允许运维IP),备份内存和磁盘镜像用于取证,收集日志(/var/log/)并通知相关团队,随后在测试节点恢复并清理后才重新上生产。
问:如何长期维持站群安全并防止滥用?
答:建立自动化补丁、持续扫描(漏洞扫描/依赖检查)、基于角色的访问控制、分层网络(管理网络与公网分离)、以及定期审计和演练。结合WAF、fail2ban、IDS、资源隔离与日志告警形成闭环运维流程,能显著降低被滥用与被攻击风险。