购买VPS或者云服务器后,您需要在新的 Linux 系统中执行一些初始配置步骤。这些步骤包括更新系统、设置时区、配置自定义主机名、添加受限用户、强化 SSH 以防止未经授权的访问以及配置防火墙。这些步骤可确保你的云服务器保持较高的安全性
SSH登录到云服务器
Windows 10 和 11 用户可以使用命令提示符(或 PowerShell) 应用程序连接到云服务器。
这里我推荐用PuTTY
PuTTY 是一款免费、开源、轻量级终端模拟器及网络文件传输应用程序。它支持 SSH、Telnet、SCP、rlogin 等协议,主要用于远程连接和控制服务器、网络设备或进行串口调试。
执行系统更新
对于任何操作系统而言,定期更新系统都是最重要的安全措施。从关键漏洞补丁到小型错误修复,许多软件漏洞在公开之前就已经被修复。此外,操作系统始终拥有最新的软件版本。
Ubuntu, Debian, Kali Linux:
apt update && apt upgrade
CentOS/RHEL 8+, Fedora:
包括 CentOS Stream 8(及以上版本)、CentOS 8、其他 RHEL 衍生版本(包括 AlmaLinux 8 和 Rocky Linux 8)以及 Fedora。
dnf upgrade
CentOS 7:
yum update
设置时区
大部分新创建的云服务器默认时区是 UTC 。你可以更改默认时区,日志文件的时间戳将相对于你的本地时间。
大多数版本
包括 CentOS Stream 8(及更高版本)、CentOS 7(及更高版本)、其他 RHEL 衍生发行版(包括 AlmaLinux 8 和 Rocky Linux 8)、Fedora 和 Arch。这些说明也适用于大多数 Ubuntu、Debian 和 openSUSE 发行版,但对于这些发行版,可能需要使用其他方法。
1.使用 timedatectl 输出可用时区列表
timedatectl list-timezones
2.使用方向键 Page Up 和 Page Down 键浏览时区列表。复制或记下所需的时区,然后按 q 键退出列表。
3.使用以下命令设置时区,将 Asia/Shanghai 替换为服务器时区。
timedatectl set-timezone 'Asia/Shanghai'
4.使用 date 命令查看服务器上的当前日期和时间,确保正确。
配置自定义主机名
主机名可以用一个好记的名称,用来标识这台服务器。
将命令行中的 example-hostname 替换为你想要的名字。
hostnamectl set-hostname example-hostname
完成上述更改后,需要重新登录,才能看到终端提示符从 localhost 更改为新主机名。
添加受限用户帐户
到目前为止,我们一直以 root 用户身份访问云服务器,root 用户拥有最大权限,可以执行任何命令——即使是可能意外中断服务器的命令。
所以为了更好的保护服务器安全,一般需要禁止root用户远程登录。
我们需要创建一个受限用户帐户,平时用受限账户进行远程登录,使用 sudo 临时提升受限用户的权限。几乎所有超级用户命令都可以使用 sudo 执行(例如: sudo iptables -L -nv ),这些命令将被记录到 /var/log/auth.log 中。
并非所有 Linux 发行版默认都包含 sudo ,但提供的所有镜像的软件包仓库中都包含 sudo。如果您看到 sudo: command not found 错误信息,请先安装 sudo 再继续。
Ubuntu, Debian
1.创建用户,将 example_user 替换为您想要的用户名。然后系统会提示您为该用户设置密码:
adduser example_user
2.将用户添加到 sudo 组,以便拥有管理员权限:
adduser example_user sudo
CentOS/RHEL, Fedora:
1.创建用户,将 example_user 替换为您所需的用户名,并设置密码:
useradd example_user && passwd example_user
2.将用户添加到 wheel 组以获取 sudo 权限:
usermod -aG wheel example_user
通过密钥加强 SSH 访问
默认情况下,通过 SSH 连接到云服务器时使用密码验证。使用密钥对更安全,因为私钥代替了密码,而私钥通常更难通过暴力破解破解。
1.用Putty创建公钥和私钥
2.将公钥上传到您的 Linode 服务器 。将 example_user 替换为你之前创建的受限用户名,并将 192.0.2.17 替换为云服务器的 IP 地址。
用受限用户登录并在根目录创建.ssh目录
mkdir -p ~/.ssh && sudo chmod -R 700 ~/.ssh/
把公钥从本地复制到服务器
scp C:\Users\MyUserName\.ssh/id_rsa.pub [email protected]:~/.ssh/authorized_keys
如果你不习惯用SSH代码操作,也可以用WinSCP,用受限账户登录后,在/.ssh/目录下创建一个authorized_keys命名的空白文件,然后把Putty生成的公钥复制进去后保存。
3.设置目录和公钥的权限
sudo chmod -R 700 ~/.ssh && chmod 600 ~/.ssh/authorized_keys
4.现在退出并重新登录您的云服务器 。大多数情况下,系统会首先尝试公钥认证。如果您已成功上传用户的公钥,则无需输入用户密码即可登录(但您需要输入 SSH 密钥的密码)。如果您为私钥指定了密码,则需要输入该密码。
SSH 守护进程选项
1.使用 Linux 文本编辑器(例如 nano 或 vim)打开 Linode 上的 SSH 配置文件:
sudo nano /etc/ssh/sshd_config
也可以用WinSCP可视化界面操作
2.禁止通过 SSH 使用 root 用户登录。 这要求所有 SSH 连接都必须由非 root 用户发起。一旦受限用户帐户连接成功,即可通过使用 sudo 或使用 su – 切换到 root shell 来获取管理权限。
/etc/ssh/sshd_config
# Authentication:
...
PermitRootLogin no
3.禁用 SSH 密码认证。 这将要求所有通过 SSH 连接的用户使用密钥认证。根据 Linux 发行版的不同,可能需要添加 PasswordAuthentication 这行代码,或者通过删除开头的 # 来取消注释。
/etc/ssh/sshd_config
# Change to no to disable tunnelled clear text passwords
PasswordAuthentication no
4.重启 SSH 服务以加载新配置。
如果您使用的是使用 systemd 的 Linux 发行版(CentOS 7、Debian 8、Fedora、Ubuntu 15.10+),请使用 systemctl 重启服务:
sudo systemctl restart sshd
如果您使用的是 Ubuntu 22.10 或更高版本, sshd 使用基于套接字的激活方式。请运行此命令,而不是重启服务。
systemctl enable --now ssh.service
如果您的 init 系统是 SystemV 或 Upstart(CentOS 6、Debian 7、Ubuntu 14.04),请运行以下命令重启服务:
sudo service sshd restart
使用 fail2ban 进行 SSH 登录保护
Fail2Ban 是一款应用程序,它会在 IP 地址多次登录失败后禁止其登录您的服务器。由于合法登录通常最多只需三次尝试即可成功(使用 SSH 密钥则只需一次),因此,如果服务器被大量失败的登录尝试所淹没,则表明有人试图恶意访问。
Fail2Ban 可以监控多种协议,包括 SSH、HTTP 和 SMTP。默认情况下,Fail2Ban 仅监控 SSH,由于 SSH 守护进程通常配置为持续运行并监听来自任何远程 IP 地址的连接,因此它对任何服务器来说都是一个有效的安全威慑手段。
配置防火墙
前提是云服务器厂商有提供防火墙这个服务,很多便宜的VPS并没有。。。
使用防火墙阻止不必要的入站流量进入你的服务器 ,可以提供高效的安全防护。通过精确控制允许进入的流量,您可以有效防止入侵和网络映射。最佳实践是仅允许必要的流量,并拒绝所有其他流量。





