首页 帮助中心 新加坡服务器 新加坡服务器安全组配置:SSH密钥认证+防火墙规则设置!
新加坡服务器安全组配置:SSH密钥认证+防火墙规则设置!
时间 : 2026-10-14 10:36:28 编辑 : 华纳云 阅读量 : 18

  新加坡服务器买回来之后,默认状态下暴露在公网上的端口比你想象的多。SSH端口22对全世界开放,密码登录默认允许,root账户可以尝试爆破。一台全新上线的VPS,平均在几个小时内就会收到第一波自动化扫描的探测请求。这不是危言耸听。把安全配置提前做好,比事后补救省事得多。

  安全组和主机防火墙:两层防护各管什么

  在动手之前,先理清楚“安全组”和“主机防火墙”的关系。

  安全组是云平台层面的虚拟防火墙,作用在实例的网卡层面,控制进出实例的流量。它在流量到达操作系统之前就开始过滤,相当于机房门口的保安。

  主机防火墙(如UFW、firewalld)运行在操作系统内部,是数据包进入系统后的第二道关卡。即使安全组配置有疏漏,主机防火墙还能兜底。

  两层都要配,不要只依赖其中一层。 安全组规则可能被误改,主机防火墙可以作为最后防线。

  第一步:生成SSH密钥对(在你的本地电脑上操作)

  密钥认证比密码安全得多。密码可以被暴力破解,密钥几乎不可能。

  如果你还没有SSH密钥,在本地电脑的终端里执行:

ssh-keygen -t ed25519 -C "your_email@example.com"

  ed25519是目前推荐的算法,比RSA更短、更快、更安全。执行后会提示你选择保存路径(直接回车用默认的 ~/.ssh/id_ed25519),然后可以设置一个密钥密码(。这个密码是保护私钥文件的,可以留空,但建议设置。

  生成后会得到两个文件:id_ed25519(私钥,不要给任何人)和 id_ed25519.pub(公钥,待会儿要传到服务器上)。

  第二步:把公钥传到服务器

  如果你是通过密码登录服务器的,用 ssh-copy-id 最方便:

ssh-copy-id root@你的服务器IP

  输入密码后,公钥会自动写入服务器的 ~/.ssh/authorized_keys 文件中。

  如果服务器不支持 ssh-copy-id,手动操作:

# 在本地查看公钥内容
cat ~/.ssh/id_ed25519.pub

# 复制输出的整行内容,然后通过SSH登录服务器后执行:
mkdir -p ~/.ssh
chmod 700 ~/.ssh
nano ~/.ssh/authorized_keys
# 粘贴公钥内容,保存退出
chmod 600 ~/.ssh/authorized_keys

  权限设置很关键。~/.ssh 必须是700,authorized_keys 必须是600,否则SSH会拒绝使用密钥。

  第三步:创建普通用户并配置sudo权限

  不要长期用root操作。创建一个普通用户,按需提权。

adduser yourusername
usermod -aG sudo yourusername

  然后把root的SSH密钥复制给这个新用户,确保新用户也能用密钥登录:

mkdir -p /home/yourusername/.ssh
cp /root/.ssh/authorized_keys /home/yourusername/.ssh/
chown -R yourusername:yourusername /home/yourusername/.ssh
chmod 700 /home/yourusername/.ssh
chmod 600 /home/yourusername/.ssh/authorized_keys

  第四步:配置云平台安全组规则

  在云服务商的控制台里找到“安全组”或“防火墙”设置页面。

  入方向规则只开放业务必需的端口。 一个典型的Web服务器配置:

端口 协议 用途 来源建议
22(或自定义SSH端口) TCP SSH管理 仅你的固定公网IP
80 TCP HTTP 0.0.0.0/0
443 TCP HTTPS 0.0.0.0/0

  来源地址不要填 0.0.0.0/0 除非你确实需要全世界访问。SSH端口尤其要限制,填你办公室或家里的公网IP,后面加 /32 表示只允许这一个地址。

  如果你不确定自己的公网IP,在本地浏览器访问 ip.sb 或 ifconfig.me 就能看到。

  出方向规则通常保持默认的“允许所有”,除非你有明确的内网隔离需求。

  第五步:加固SSH配置

  现在回到服务器上,修改SSH服务端的配置。

  在Ubuntu 22.04/24.04上,推荐用drop-in文件的方式,不动主配置文件:

sudo nano /etc/ssh/sshd_config.d/00-hardening.conf

  写入以下内容:

# 只允许指定用户通过SSH登录
AllowUsers yourusername

# 禁止root直接登录
PermitRootLogin no

# 只允许密钥认证,禁用密码
PubkeyAuthentication yes
PasswordAuthentication no
PermitEmptyPasswords no

# 限制认证尝试次数
MaxAuthTries 3

# 认证超时时间(秒)
LoginGraceTime 60

  保存后,先测试配置语法是否正确:

sudo sshd -t

  没有输出说明语法没问题。然后重启SSH之前,保持当前SSH连接不要关闭,另开一个终端窗口测试新连接:

ssh yourusername@服务器IP

  新连接成功了,再重启SSH服务:

sudo systemctl restart ssh

  如果新连接失败,回到还开着的旧连接里检查配置。这个“保持旧连接、另开新窗口测试”的步骤不能省,否则配置写错了你就把自己锁在外面了。

  如果Ubuntu 26.04使用了socket activation,还需要额外配置 ssh.socket 才能让自定义端口生效。对于大多数情况,用默认的22端口配合安全组的IP限制已经足够。

  第六步:配置主机防火墙(UFW)

  安全组在云平台层面过滤,UFW在系统层面再过滤一次。

  Ubuntu默认自带UFW但未启用。按顺序操作:

# 设置默认策略:拒绝所有入站,允许所有出站
sudo ufw default deny incoming
sudo ufw default allow outgoing

# 放行SSH(如果你改了SSH端口,改成对应的端口)
sudo ufw allow 22/tcp

# 放行Web端口
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

# 启用防火墙
sudo ufw enable

  ufw enable 会提示“可能中断现有SSH连接”,选择 y 继续。因为你已经放行了SSH端口,当前连接不会断。

  查看规则状态:

sudo ufw status verbose

  如果你用了非标准SSH端口,比如2222,把 allow 22/tcp 换成 allow 2222/tcp,同时安全组里也要同步放行2222端口。

  第七步:安装Fail2ban自动封禁暴力破解

  即使禁用了密码登录,攻击者仍会尝试连接你的SSH端口。Fail2ban监控日志,发现多次失败尝试后自动封禁来源IP。

sudo apt install fail2ban -y

  复制默认配置作为本地配置:

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

  编辑 jail.local,确保 [sshd] 段启用:

sudo nano /etc/fail2ban/jail.local

  找到 [sshd] 部分,设置:

[sshd]
enabled = true
port = 22
maxretry = 3
bantime = 3600

  maxretry = 3 表示3次失败后封禁,bantime = 3600 表示封禁1小时。重启服务:

sudo systemctl restart fail2ban

  查看封禁状态:

sudo fail2ban-client status sshd

  检查与验证

  全部配置完成后,做几个快速检查:

# 确认SSH的关键配置已生效
sudo sshd -T | grep -E 'permitrootlogin|passwordauthentication|allowusers'

# 查看当前监听的所有端口
sudo ss -tlnp | grep LISTEN

# 查看UFW规则
sudo ufw status numbered

# 查看最近的失败登录尝试
sudo grep "Failed password" /var/log/auth.log | tail -10

  如果 sshd -T 的输出显示 permitrootlogin no 和 passwordauthentication no,说明SSH加固生效了。

  如果你在安全组里把SSH来源限制为自己的公网IP,而你的公网IP是动态的(比如家庭宽带),IP变了之后就登不上服务器了。这种情况下,要么保留一个备用SSH端口对更宽范围开放(但用Fail2ban防护),要么使用云服务商的控制台VNC作为应急入口。不要把自己锁在外面。

华纳云 推荐文章
新加坡服务器系统层调优的核心操作 SSH连接不上香港CN2 VPS故障原因排查:端口/防火墙/安全组逐层诊断! 非root用户怎么配置SSH密钥登录?普通用户权限设置教程! SSH密钥认证和密码登录哪个更安全?别再纠结了! 外贸电商服务器安全组配置:隐藏源站IP、只放行WAF回源地址 宝塔面板安装后无法访问8888端口?安全组与防火墙排查 香港cn2服务器系统安全加固:禁用root远程登录+SSH密钥认证 云服务器安全组怎么配置?开放端口规则详解 如何判断新加坡服务器频繁出现timeout根本原因 新加坡服务器额外增加防御,访问为什么会变慢?
活动
客服咨询
7*24小时技术支持
技术支持
渠道支持