跳至正文
-
Subscribe to our newsletter & never miss our best posts. Subscribe Now!
东倒西歪玩AI
东倒西歪玩AI
  • 首页
  • 首页
关

搜索

  • https://www.facebook.com/
  • https://twitter.com/
  • https://t.me/
  • https://www.instagram.com/
  • https://youtube.com/
Subscribe
Linux

Linux 服务器连接公网安全配置

作者 ddxw
2026年6月13日 2 分钟阅读
0

一、核心原则

Linux 服务器一旦连接公网,就会持续遭遇自动化扫描、弱口令爆破、漏洞探测。安全配置的目标不是“绝对安全”,而是做到:

  1. 不暴露不必要端口;
  2. 不允许密码登录 SSH;
  3. 只允许可信设备远程连接;
  4. 系统和软件保持更新;
  5. 出现异常登录和攻击时能被阻断;
  6. 重要服务尽量放在内网或 Tailscale 等虚拟专网中访问。

最重要的一条:公网服务器只开放必须开放的端口。


二、初始登录后先做的事

1. 更新系统

Ubuntu / Debian:

sudo apt update
sudo apt upgrade -y

CentOS / Rocky / AlmaLinux:

sudo dnf update -y

2. 创建普通用户

不要长期使用 root 直接操作。

adduser yourname
usermod -aG sudo yourname

然后切换到新用户:

su - yourname

测试 sudo:

sudo whoami

如果返回:

root

说明权限正常。


三、配置 SSH 安全登录

1. 在本地电脑生成 SSH 密钥

在本地电脑执行:

ssh-keygen -t ed25519 -C "[email protected]"

一路回车即可。

生成后一般会有两个文件:

~/.ssh/id_ed25519
~/.ssh/id_ed25519.pub

其中 .pub 是公钥,可以放到服务器;没有 .pub 的私钥不能泄露。


2. 把公钥上传到服务器

在本地电脑执行:

ssh-copy-id yourname@服务器IP

如果没有 ssh-copy-id,也可以手动复制公钥内容:

cat ~/.ssh/id_ed25519.pub

然后在服务器上执行:

mkdir -p ~/.ssh
nano ~/.ssh/authorized_keys

把公钥粘贴进去,保存后执行:

chmod 700 ~/.ssh
chmod 600 ~/.ssh/authorized_keys

3. 修改 SSH 配置

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

建议修改或确认以下内容:

PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
KbdInteractiveAuthentication no
Port 22

排查

sudo grep -RInE 'Include|PasswordAuthentication|KbdInteractiveAuthentication|ChallengeResponseAuthentication|PermitRootLogin|PubkeyAuthentication|Match' /etc/ssh/sshd_config /etc/ssh/sshd_config.d/

如果想降低自动扫描干扰,也可以把 SSH 端口改成其他端口,例如:

Port 2222

注意:改端口不是核心安全措施,只是减少噪音。真正关键是关闭密码登录。


4. 重启 SSH 服务

Ubuntu / Debian:

sudo systemctl restart ssh

CentOS / Rocky / AlmaLinux:

sudo systemctl restart sshd

重启前不要关闭当前终端窗口。另开一个新窗口测试是否能登录:

ssh yourname@服务器IP

如果改了端口:

ssh -p 2222 yourname@服务器IP

确认新窗口可以登录后,再关闭旧窗口。


四、配置防火墙

1. Ubuntu / Debian 使用 UFW

安装 UFW:

sudo apt install ufw -y

允许 SSH:

sudo ufw allow 22/tcp

如果 SSH 改成 2222:

sudo ufw allow 2222/tcp

如果服务器要提供网站服务:

sudo ufw allow 80/tcp
sudo ufw allow 443/tcp

启用防火墙:

sudo ufw enable

查看状态:

sudo ufw status

推荐状态是只开放必要端口,例如:

22/tcp
80/tcp
443/tcp

2. 不需要公网访问的服务不要开放

例如下面这些端口,除非明确知道自己在做什么,否则不要开放到公网:

3306   MySQL
5432   PostgreSQL
6379   Redis
27017  MongoDB
8080   管理后台
9000   面板或内部服务

数据库、后台管理、监控面板,原则上只允许本机或内网访问。


五、安装 Fail2ban 防爆破

Fail2ban 可以自动封禁频繁尝试登录失败的 IP。

Ubuntu / Debian:

sudo apt install fail2ban -y

启动并设置开机自启:

sudo systemctl enable fail2ban
sudo systemctl start fail2ban

查看状态:

sudo systemctl status fail2ban

查看 SSH 防护情况:

sudo fail2ban-client status sshd

六、使用 Tailscale 降低公网暴露

更安全的做法是:SSH 不直接暴露到公网,而是通过 Tailscale 访问。

1. 安装 Tailscale

curl -fsSL https://tailscale.com/install.sh | sh

启动:

sudo tailscale up

按提示登录账号。


2. 查看 Tailscale 内网 IP

tailscale ip -4

之后可以通过这个 IP 登录服务器:

ssh yourname@Tailscale内网IP

3. 关闭公网 SSH,只允许 Tailscale 访问

确认 Tailscale 登录正常后,可以让防火墙只允许 Tailscale 网卡访问 SSH。

示例:

sudo ufw delete allow 22/tcp
sudo ufw allow in on tailscale0 to any port 22 proto tcp

如果 SSH 是 2222:

sudo ufw delete allow 2222/tcp
sudo ufw allow in on tailscale0 to any port 2222 proto tcp

这样公网无法直接 SSH 登录,只能通过 Tailscale 登录。


七、检查当前开放端口

执行:

sudo ss -tulpen

重点看 LISTEN 状态的端口。

如果看到服务监听在:

0.0.0.0:端口

说明它对所有公网网卡开放。

如果只监听:

127.0.0.1:端口

说明只允许本机访问,相对安全。


八、设置自动安全更新

Ubuntu / Debian:

sudo apt install unattended-upgrades -y
sudo dpkg-reconfigure unattended-upgrades

选择启用自动安全更新。


九、普通用户不要安装来路不明脚本

不要随便执行这种命令:

curl 某个网址 | bash
wget 某个网址 -O- | sh

除非来源可信,并且知道脚本做了什么。

风险包括:

  1. 创建隐藏用户;
  2. 修改 SSH 配置;
  3. 安装挖矿程序;
  4. 上传服务器密钥;
  5. 关闭安全服务。

十、推荐的最低安全配置

适合普通 VPS 或家庭服务器:

  1. 禁止 root 登录;
  2. 禁止 SSH 密码登录;
  3. 使用 SSH 密钥登录;
  4. 只开放必要端口;
  5. 安装并启用 UFW;
  6. 安装 Fail2ban;
  7. 使用 Tailscale 远程管理;
  8. 数据库、后台、面板不暴露公网;
  9. 定期更新系统;
  10. 重要数据定期备份。

十一、常见错误

错误一:只改 SSH 端口,以为就安全了

改端口只能减少扫描噪音,不能替代密钥登录和关闭密码登录。

错误二:公网开放数据库端口

数据库端口暴露公网是高危行为。MySQL、Redis、PostgreSQL 等应只允许本机、内网或 Tailscale 访问。

错误三:长期使用 root 用户

root 权限太高,一旦被攻破,攻击者可以完全控制服务器。

错误四:防火墙规则没确认就断开 SSH

修改 SSH 或防火墙时,一定要保留一个已登录窗口,再开新窗口测试登录成功后再退出。

错误五:把服务器登录信息交给不可信工具

AI Agent、自动化脚本、远程管理工具可以提高效率,但必须限制权限。不要直接把 root 密码交给未知工具。


十二、最终检查清单

执行以下检查:

sudo ufw status

确认只开放必要端口。

sudo ss -tulpen

确认没有不该暴露的服务。

sudo grep -E "PermitRootLogin|PasswordAuthentication|PubkeyAuthentication|Port" /etc/ssh/sshd_config

确认 SSH 安全配置正确。

sudo fail2ban-client status

确认 Fail2ban 正常运行。

tailscale status

确认 Tailscale 正常在线。

如果以上都正常,服务器的基础公网安全配置基本完成。

作者

ddxw

关注我
其他文章
上一个

Selkies

下一个

guizang-ppt-skill

暂无评论!成为第一个。

发表回复 取消回复

您的邮箱地址不会被公开。 必填项已用 * 标注

Copyright 2026 — 东倒西歪玩AI. All rights reserved. Blogsy WordPress Theme