简单描述一下我的情况:
2 台家用计算机,均连接到标准 AT&T 路由器。两台计算机都192.168.1.x
从路由器获取 IP 地址。我不知道路由器对外的 IP 是什么,也不知道如何确定它。我有一个非常标准的 AT&T 光纤计划,所以我假设我的路由器对外的 IP 是 DHCP,但我不是 100% 确定,而且我不确定如何检查这一点。两台计算机都运行最新版本的 Ubuntu(也与 Windows 双启动,但我很少使用 Windows)。
我经常需要将大型文件从一台计算机传输到另一台计算机,安装openssh-server
和使用该命令似乎是最有效的方法,所以我一直都是这样做的。使用该命令获取一台机器的本地 IP,然后移动大量文件,scp
非常简单。ifconfig
scp
两台机器的密码都很好sudo
,包括大写字母、小写字母、数字和特殊符号,而且我不会在其他地方使用这个密码,所以别人不会知道,而且很难猜到。我确实有关于这两台电脑的信息,可以用来伪造我的身份。
作为一般惯例,当我完成scp
工作后,我会sudo systemctl stop ssh
关闭sudo systemctl disable ssh
openssh 服务器,直到下次需要进行传输。我使用自动驾驶汽车数据集,它们已经变得非常庞大(最新的 Waymo 和 NuScenes 数据集解压后约为 500GB),因此对于一些特别大的传输,我会ssh
在一夜之间保持启用状态。
所以我的问题是,按照上述方法安装并运行openssh-server
(systemd
进程名称ssh
)是否会面临任何安全风险?如果是这样,建议采取哪些措施来缓解?
答案1
与所有安全问题一样,答案始终取决于您必须防御的威胁概况……
但不是,只要您没有在路由器上启用任何端口转发来将发送到路由器公共 IP 地址端口 22 的数据包转发到其中一台机器,通常在连接到私有 LAN 的 2 台机器上运行 SSH 不会提高您的威胁级别。
假设现代光纤计划还包括 IPv6 支持,则风险会略高一些,因为可能可以通过 IPv6 访问机器,具体取决于机器和路由器上的默认防火墙规则。
为了尽可能确保安全,我建议采取以下步骤。
- 禁用基于密码的 ssh 登录并生成一组用于验证 ssh 客户端的公钥/私钥。这将阻止人们试图暴力猜测用户名/密码。
- 启用 IPv6 防火墙来阻止所有非本地计算机的访问(这可能是通过链接本地地址,或者通过限制对前缀的访问来获得固定的全局前缀)
- 确保通过 SSH 禁用直接 root 访问(几乎任何 SSH 的默认设置都已强制执行此操作)