云服务器Ubuntu系统如何配置SSH和防火墙?

在 Ubuntu 云服务器上配置 SSH 和防火墙是保障服务器安全的基础步骤。以下是标准操作流程,基于 Ubuntu 20.04/22.04(使用 ufw 防火墙):


🔐 一、配置 SSH 服务

1. 安装 OpenSSH 服务端(如未安装)

sudo apt update
sudo apt install openssh-server

2. 修改 SSH 配置文件(关键安全加固)

编辑 /etc/ssh/sshd_config

sudo nano /etc/ssh/sshd_config

建议修改以下参数(注释前加 # 表示默认启用,取消注释并调整值):

Port 2222              # 改为非标准端口(如 2222),减少暴力破解风险
PermitRootLogin no     # 禁止 root 直接登录(必须用普通用户 + sudo)
PasswordAuthentication no   # 禁用密码登录(推荐仅用密钥认证)
PubkeyAuthentication yes    # 启用公钥认证
AllowUsers your_username    # 限制允许登录的用户名(替换为实际用户名)
X11Forwarding no          # 禁用 X11 转发(除非需要图形界面)
UsePAM yes                # 保持 PAM 支持(通常保留)

重要提示

  • 若改用新端口(如 2222),务必先测试连接再重启服务,避免被锁!
  • 禁用密码登录后,请确保已生成并部署 SSH 密钥对(见下文)。

3. 生成并部署 SSH 密钥(推荐方式)

本地电脑执行:

ssh-keygen -t ed25519 -C "your_email@example.com"
# 或使用 rsa-4096: ssh-keygen -t rsa -b 4096

将公钥复制到服务器:

ssh-copy-id -p 2222 your_username@your_server_ip

或手动追加:

cat ~/.ssh/id_ed25519.pub | ssh your_username@your_server_ip "mkdir -p ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

4. 重启 SSH 服务

sudo systemctl restart sshd
sudo systemctl status sshd   # 检查是否正常运行

5. 测试新配置

新终端窗口尝试连接(不要关闭当前会话!):

ssh -p 2222 your_username@your_server_ip

✅ 成功后再关闭旧会话。


🛡️ 二、配置防火墙(UFW)

Ubuntu 默认使用 ufw(Uncomplicated Firewall)。

1. 启用 UFW

sudo ufw enable
# 首次会提示确认,输入 y

2. 设置默认策略(拒绝入站,允许出站)

sudo ufw default deny incoming
sudo ufw default allow outgoing

3. 开放必要端口

  • 若使用自定义 SSH 端口(如 2222):
    sudo ufw allow 2222/tcp
  • 如需 Web 服务(示例):
    sudo ufw allow 80/tcp    # HTTP
    sudo ufw allow 443/tcp   # HTTPS
  • 其他服务按需添加(如数据库、Redis 等,切勿全开!

⚠️ 注意:必须先放行 SSH 端口,再启用 UFW,否则可能无法远程连接!

4. 查看状态与规则

sudo ufw status verbose

输出示例:

Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
2222/tcp                   ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443/tcp                    ALLOW       Anywhere

5. 紧急恢复方案(防误操作)

若误封 SSH 导致失联:

  • 通过云服务商控制台(如阿里云、腾讯云、AWS)的 VNC/串口登录 进入系统;
  • 临时关闭防火墙:
    sudo ufw disable
  • 重新配置后再次启用。

🔒 三、额外安全建议

措施 说明
Fail2Ban 自动封禁多次失败登录的 IP:
sudo apt install fail2ban
定期更新 sudo apt update && sudo apt upgrade -y
监控日志 sudo tail -f /var/log/auth.log 实时查看 SSH 登录记录
禁用空密码 确保所有账户有强密码(即使不用密码登录也建议设置)

完成以上步骤后,您的 Ubuntu 服务器将具备基础的 SSH 安全访问能力和防火墙防护。如有特定场景(如多用户、容器环境、K8s 节点等),可进一步细化策略。需要我提供自动化脚本或 Docker 集成方案吗?