1.
准备与前提
环境假设:Linux(Ubuntu/CentOS),可SSH访问,已备份快照。操作前在控制台开启控制台/序列端口以防断连。建议先创建快照:在云控制台→实例→创建快照。
2.
系统更新与基础工具安装
执行:Ubuntu: sudo apt update && sudo apt -y upgrade && sudo apt -y install ufw fail2ban vim auditd;CentOS: sudo yum -y update && sudo yum -y install firewalld fail2ban vim audit
3.
创建非root管理员账号并配置SSH密钥
步骤:1) 添加用户:sudo adduser deployer;2) 加入sudo组:Ubuntu: sudo usermod -aG sudo deployer;CentOS: sudo usermod -aG wheel deployer;3) 切换到用户并建立.ssh目录:sudo -u deployer mkdir -p /home/deployer/.ssh && chmod 700 /home/deployer/.ssh;4) 将公钥写入authorized_keys并设置权限:sudo -u deployer sh -c 'echo "你的公钥" >> /home/deployer/.ssh/authorized_keys' && chmod 600 /home/deployer/.ssh/authorized_keys。
4.
禁用root远程登录与密码验证(SSH硬化)
编辑/etc/ssh/sshd_config,设置:PermitRootLogin no;PasswordAuthentication no;PubkeyAuthentication yes;PermitEmptyPasswords no;将Port改为非22(例如2222)并保存。重载SSH:sudo systemctl restart sshd。重要:先保证新用户可用并测试新端口再断开旧连接。
5.
配置系统防火墙 - 使用UFW(Ubuntu)
指令示例: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;对于管理IP做白名单:sudo ufw allow from 203.0.113.4 to any port 2222 proto tcp;启用并查看状态:sudo ufw enable && sudo ufw status verbose。
6.
配置系统防火墙 - 使用firewalld或iptables(CentOS/通用)
firewalld命令示例:sudo firewall-cmd --permanent --set-default-zone=public;sudo firewall-cmd --permanent --add-port=2222/tcp;sudo firewall-cmd --permanent --add-service=http;sudo firewall-cmd --reload。若用iptables,写规则并保存:sudo iptables -A INPUT -p tcp --dport 2222 -m conntrack --ctstate NEW -j ACCEPT ...,然后使用iptables-save持久化。
7.
云控制台安全组与网络ACL
在香港节点的云控制台(秒解/其他厂商)打开实例的安全组或防火墙规则:仅开放必要端口(SSH/HTTP/HTTPS),对SSH尽量限定管理IP段;删除0.0.0.0/0对管理端口的允许规则。若需要分环境,创建不同安全组并绑定到实例。
8.
防爆破与速率限制(fail2ban与SSH速率限制)
fail2ban安装后,编辑/etc/fail2ban/jail.local,加入:[sshd] enabled = true port = 2222 filter = sshd maxretry = 5 findtime = 600 bantime = 3600。对于UFW添加限速:sudo ufw limit 2222/tcp。重启fail2ban:sudo systemctl restart fail2ban。
9.
最小权限原则与sudo精细化
使用visudo精确控制权限:sudo visudo,添加行举例:deployergroup ALL=(ALL) NOPASSWD: /usr/bin/systemctl restart nginx(仅允许重启Nginx)。更好做法是不使用NOPASSWD,按需授权单个命令。
10.
文件权限与用户组管理
每个应用用独立系统用户运行(如nginx、www-data)。设置文件权限:chown -R www-data:www-data /var/www/site;chmod 750 /var/www/site;敏感目录禁止其他用户访问。定期检查SUID/SGID位:find / -perm /6000 -type f -exec ls -la {} \;
11.
日志、审计与报警
启用auditd(或CloudWatch/云监控),配置常见监控项:SSH登录失败、sudo使用、iptables改动。结合云控制台的告警和邮件/SMS。保留日志到外部日志服务器或对象存储以防被篡改。
12.
备份、快照与应急回滚
在做防火墙或SSH端口修改前创建快照;建立定期快照/备份策略(按业务RPO/RTO);测试恢复流程。若误封管理IP,通过云控制台的VNC/Serial Console恢复设置。
13.
常见操作命令速查
集合:查看防火墙状态:ufw status / firewall-cmd --list-all;查看SSH端口:ss -tulnp | grep sshd;查看fail2ban状态:sudo fail2ban-client status;重启sshd:sudo systemctl restart sshd。
14.
问:如果误封了自己的IP如何恢复SSH访问?
答:立即使用云控制台提供的VNC/Serial Console登录主机控制台,修改防火墙规则(ufw delete deny from to any port 2222 或 firewall-cmd --remove-rich-rule),或从控制台重置sshd_config到允许PasswordAuthentication yes并重启sshd,然后通过临时密码登录并修复。恢复后撤销临时修改并恢复密钥登录。
15.
问:香港云服务器是否需要额外考虑地域合规或网络延迟?
答:香港节点与大陆或海外有不同合规/访问策略,注意数据主权和合规要求;建议使用就近管理IP,并在安全组中设置白名单以减少暴露,此外设置监控以检测因网络中断产生的异常登录尝试。
16.
问:如何长期维持账号与防火墙的安全性?
答:实施定期审计(每月),强制使用密钥登录、禁用密码、定期轮换密钥、删除不再使用的账户、审查sudo规则、启用日志集中化与告警,结合自动化合规扫描(如Lynis、OpenSCAP),并保持系统与安全工具更新。
来源:安全配置教你为香港秒解云服务器配置防火墙与账号权限管理