如何在 Linux 中保护 SSH

如何在 Linux 中保护 SSH_linux

有必要保护您的 SSH 服务器免受不必要的数据泄露和恶意攻击。

您可以通过不同的方式执行此操作。在这里,我们将向您展示其中的一些。

使用强用户名和密码

如果您使用向外界显示的 SSH,您将面临一些来自黑客的登录尝试。黑客使用许多不同的技术来破解您的 SSH 用户名和密码。

为了防止攻击者,建议选择强用户名和密码。您可以使用密码生成器创建随机的强密码。

更改 Linux 中的默认 SSH 端口

SSH 连接的默认端口为 22。您可以更改此端口,以保护 SSH 服务器免受攻击。若要更改默认的 22 端口,请按照下列步骤操作:

首先,打开 /etc/ssh/sshd_config 文件。

然后,将以下行添加到文件中。在非标准端口上运行 SSH。

Port 30125

接下来,您需要重新启动 SSHD 服务以使用以下命令应用更改:

sudo systemctl restart sshd

此时,SSH 默认端口将更改为另一个端口。

在 Linux 中禁用 root 登录

建议禁用 root 用户登录,改用非 root 用户访问权限,以提高安全性。

为此,请以 root 用户身份登录您的服务器,然后打开 /etc/ssh/sshd_config 文件。

找到 PermitRootLogin 行并将其更改为:

PermitRootLogin no

之后,通过编写“AllowUsers your_username”添加要用于登录的用户帐户。

完成后,保存并关闭文件。

在这里,您需要重新启动 SSHD 服务以应用更改:

sudo systemctl restart sshd

接下来,打开一个新终端并尝试使用您选择的用户登录,然后关闭根会话。您可以对具有 root 权限的用户使用“su”命令。

使用 SSH 密钥而不是密码

与其使用强密码,不如使用 SSH 密钥为您的服务器安全添加额外的层。

SSH 密钥对是两个加密安全密钥(私钥/公钥),可用于向 SSH 服务器验证客户端。

SSH 密钥对是两个加密安全密钥,可用于向 SSH 服务器验证客户端。每个密钥对由一个公钥和一个私钥组成。

创建 SSH 密钥

要在 Linux 中创建 SSH 密钥,请按照下列步骤操作:

1) 检查现有的 SSH 密钥

在终端中运行以下命令以检查现有 SSH 密钥:

cd ~/.ssh

如果您看到“没有这样的文件或目录”,则表示没有任何现有密钥。
因此,请检查您是否已经拥有此命令的密钥:

ls id_*
2)备份旧的SSH密钥

如果您有现有密钥,但不想使用它们,则可以通过以下命令备份它们:

# mkdir key_backup
# cp id_rsa* key_backup
3)生成新密钥

如果您没有现有的 SSH 密钥,则可以按照以下步骤轻松生成新密钥:

• 要生成公钥/私钥对,请在终端中运行以下命令:

ssh-keygen

• 只需按 <Enter> 即可接受默认位置和文件名。如果 .ssh 目录不存在,系统会为您创建一个。
• 输入密码,并在出现提示时重新输入密码。
• 大功告成;您的密钥现已生成。

注意:如果要查看有关生成的密钥的所有信息,可以使用以下命令:

ssh-agent

禁用空密码

Linux 允许用户创建空密码,并允许空密码登录服务器将显示您的服务器容易受到网络攻击。

若要禁用空密码,请打开sshd_config文件。然后,找到 PermitEmptyPasswords 行并将其更改为:

PermitEmptyPasswords  no

要应用更改,请重新启动 SSHD:

sudo systemctl restart sshd

配置空闲超时间隔

您可以设置空闲超时间隔,以避免出现不需要的 SSH 会话。

打开 /etc/ssh/sshd_config 文件,并将以下行添加到该文件中:

ClientAliveInterval 360 
ClientAliveCountMax 0

您刚刚设置的空闲超时间隔为 360 秒。此时间过后,空闲用户将自动注销。

在 Linux 中使用 SSH 协议 2

SSH 服务器可以使用两种协议。协议 1 较旧且安全性较低。但协议 2 更新、更安全。

注意:如果您希望您的服务器符合PCI标准,则必须禁用协议1。

为此,请打开您的 /etc/ssh/sshd_config 文件,然后找到协议行并通过删除其中的“#”并将其更改为:

Protocol 2

然后,重新启动 SSHD 服务以应用更改:

sudo systemctl restart sshd

仅允许特定客户端

您需要向路由器添加防火墙规则或更新 Iptables,以便只能从端口 22 上的特定 IP 地址访问您的服务器。您可以使用以下命令:

iptables -A INPUT -p tcp -s YourIP --dport 22 -j ACCEPT

如果要全局打开SSH服务器端口,Iptables可以通过登录并阻止从同一IP地址登录的重复尝试来防止攻击。

为此,您可以使用以下命令:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name ssh –rsource

以下规则验证该 IP 地址在过去 90 秒内是否尝试连接了 3 次或更多次。如果没有,则接受数据包(此规则需要输入链上的默认策略 DROP)。

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent ! --rcheck --seconds 90 --hitcount 3 --name ssh --rsource -j ACCEPT

在防火墙上进行过滤是保护 Linux 中 SSH 服务器的有用方法。