如何限制Linux上的SSH连接仅限于本地网络

如何限制Linux上的SSH连接仅限于本地网络

SSH(安全外壳协议)是一种流行的工具,允许用户通过网络安全地连接到远程系统。默认情况下,只要适当的防火墙和网络设置到位,SSH 可以从任何网络访问。

然而,有时候你可能希望出于安全原因,限制 SSH 访问仅限于本地网络。在家庭或办公室环境中,这尤其有用,因为你不希望外部通过互联网访问你的系统。

本文将通过防火墙规则和 SSH 配置,介绍如何在 Linux 上将 SSH 访问限制为仅限本地网络。我们将用简单的术语解释每一步,确保即使是初学者也能跟得上。

为什么要限制 SSH 访问到本地网络?

限制 SSH 访问仅限于本地网络可以降低未经授权访问系统的风险。

以下是你可能想要这么做的原因:

安全性:将 SSH 访问限制在外部网络之外,可以防止攻击者扫描或尝试通过互联网暴力破解你的服务器。

受控访问:如果有多台设备连接到同一个本地网络,你仍然可以在不暴露于外部威胁的情况下管理系统。

简便性:只允许本地访问,你不需要担心为外部访问配置额外的安全层。

理解本地网络

在开始之前,了解“本地网络”是什么意思非常重要。 本地网络是指一组连接在同一个物理或无线网络中的设备,例如家庭 Wi-Fi 或办公室网络。

这些设备共享相同的内部 IP 地址范围,如 192.168.x.x 或 10.0.x.x,而外部设备(即互联网上的设备)会有不同的 IP 范围。

步骤 1:检查 Linux 本地 IP 地址范围

要知道你的本地网络范围,首先需要使用以下 ip 命令来确定设备的 IP 地址,该命令将显示你的 IP 地址和网络信息:

ip a

你将看到关于网络接口的信息。寻找类似于 192.168.x.x 或 10.0.x.x 的内容,这将告诉你你的本地 IP 地址。

通常,本地 IP 地址会在以下私有范围之一:

例如,如果你的 IP 地址是 192.168.122.63,那么你的本地网络范围可能是 192.168.1.0/24,这意味着所有 IP 地址在 192.168.1.x 范围内的设备都属于同一本地网络。

步骤 2:配置 SSH 仅监听本地地址

默认情况下,SSH 会监听所有可用的网络接口。我们将其更改为仅监听本地网络。

私有 IP 地址范围:

192.168.x.x
10.0.x.x
172.16.x.x 至 172.31.x.x

例如,如果你的本地 IP 是 192.168.122.63,你的本地网络范围可能是 192.168.1.0/24,这意味着所有 IP 地址在 192.168.1.x 范围内的设备都属于同一本地网络。

步骤 2:配置 SSH 仅监听本地地址

默认情况下,SSH 会监听所有可用的网络接口。我们将更改它,只监听本地网络。

编辑 SSH 配置文件:

sudo nano /etc/ssh/sshd_config

找到以 #ListenAddress 开头的行,取消注释(删除行首的 #)。将其设置为你的本地 IP 地址。

例如,如果你的本地 IP 是 192.168.122.63,更新配置文件如下:

ListenAddress 192.168.122.63

然后重启 SSH 服务使更改生效:

sudo systemctl restart ssh
# 或
sudo systemctl restart sshd

现在,你的 SSH 服务器只会监听来自本地 IP 地址的连接。如果你尝试从外部网络连接,连接将被拒绝。

步骤 3:使用防火墙规则限制 SSH

虽然配置 SSH 守护进程仅监听本地地址非常有用,但你可以通过设置防火墙规则添加额外的安全层,从而确保只有本地网络上的设备可以通过 SSH 连接,即使有人尝试使用你的外部 IP 访问你的系统。

使用 UFW(简易防火墙)

如果你使用的是 UFW(Ubuntu 等许多 Linux 发行版的默认防火墙),请按照以下命令操作:

为了仅允许来自本地网络(如 192.168.1.x 范围内的 IP 地址)的 SSH 连接,并拒绝来自其他网络的 SSH 连接。确保重新加载防火墙并检查其状态。

sudo ufw allow from 192.168.1.0/24 to any port 22
sudo ufw deny 22
sudo ufw reload
sudo ufw status

使用 Firewalld

如果你使用的是 Firewalld,可以按照以下命令限制 SSH 仅限于本地网络:

为了仅允许来自本地网络(如 192.168.1.x 范围内的 IP 地址)的 SSH 连接,并拒绝来自其他网络的 SSH 连接。确保重新加载防火墙并检查其状态。

sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" port protocol="tcp" port="22" accept'
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port protocol="tcp" port="22" drop'
sudo firewall-cmd --reload
sudo firewall-cmd --list-all

使用 iptables

如果你没有使用 UFW 或 Firewalld,可以使用 iptables 设置类似的规则:

sudo iptables -A INPUT -p tcp -s 192.168.1.0/24 --dport 22 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport 22 -j DROP
sudo iptables-save | sudo tee /etc/iptables/rules.v4
sudo iptables -L

现在,SSH 访问仅允许来自本地网络范围内的设备。

步骤 4:测试你的配置

配置 SSH 和防火墙之后,接下来是测试设置,确保一切按预期工作。

从本地网络中的设备上,尝试使用 SSH 连接到服务器:

ssh username@192.168.122.63

如果你有外部网络访问权限(例如,使用移动数据或 VPN),尝试连接到系统的外部 IP。连接应该被阻止或拒绝。

附加提示

以下是设置 SSH 仅限本地网络的一些额外提示:

静态 IP:为你希望通过 SSH 连接的设备设置静态 IP 地址是个好主意,特别是在基于本地 IP 范围配置防火墙规则时,这样可以避免路由器重启时 IP 地址发生变化。

VPN 访问:如果你需要从外部网络进行远程访问,考虑设置 VPN,这样你可以通过互联网安全地连接到本地网络,而 SSH 仍然只能在本地网络内访问。

监控日志:始终监控你的 SSH 日志,以便及时发现任何未经授权的访问尝试。你可以使用 tail 命令查看日志:

sudo tail -f /var/log/auth.log

将 SSH 访问限制为本地网络是增强 Linux 系统安全性的简单有效方法。通过遵循本指南中的步骤,你可以防止外部访问你的 SSH 服务器,同时保持本地访问以进行管理和行政任务。

通过防火墙规则和正确的配置,你可以确保只有本地网络中的可信设备能够通过 SSH 连接,从而降低未经授权访问的风险。

未经允许不得转载:A5数据 » 如何限制Linux上的SSH连接仅限于本地网络

相关文章

contact