因此,我最近购买了一台 Raspberry Pi,用基于 RetroPie Debian 的映像来开展一个小型热情项目。
我现在正处于想要完全屏蔽服务器只允许特定连接的阶段。对于我的用例,它们如下:
- 仅允许来自服务器所在同一网络的入站 ssh 连接
- 仅允许到特定 IP 的出站连接
为了实现这一目标,我采用了两种不同的方法:安装和配置ufw
入站/出站连接以及hosts.allow
额外hosts.deny
的安全性。
这是我当前的设置:
hosts.allow
sshd: LOCAL
sshd: 192.168.1.0/255.255.255.0 # allow ssh from local network IPs only
sendmsg: 8.8.8.8 # allow ping google DNS to validate internet connectivity
hosts.deny
sshd: ALL
ufw:
Status: active
Logging: on (low)
Default: deny (incoming), deny (outgoing), disabled (routed)
New profiles: skip
To Action From
-- ------ ----
22/tcp ALLOW IN 192.168.1.0/24 # from local
XX.XX.XXX.XXX 443/tcp ALLOW OUT Anywhere # to specific IP
XX.XX.XXX.XXX 443/tcp ALLOW OUT Anywhere # to specific IP
XX.XX.XXX.XXX 443/tcp ALLOW OUT Anywhere # to specific IP
140.82.121.4 443/tcp ALLOW OUT Anywhere # to github
46.235.231.151 80/tcp ALLOW OUT Anywhere # to raspberry registry
93.93.128.193 80/tcp ALLOW OUT Anywhere # to raspberry registry
XX.XX.XXX.XXX 443/tcp ALLOW OUT Anywhere # to specific IP
目前发生的情况是,每当服务器重新启动时,我都无法通过 ssh 从我的机器(与 Raspberry PI 位于同一网络上)进行连接,该机器当前的 IP 为192.168.1.65
,即使它可能是动态的,也永远不会离开特定的 IP上的 IP 范围hosts.allow
。
每当我重新启动服务器时,我都需要手动使用键盘连接到 Pi 以便sudo systemctl stop ufw
ssh 连接可用,但是为什么如果我设置了入站规则ufw
以允许来自本地 IP 范围的端口 22 上的 tcp 连接?我在这里错过了什么吗?
先感谢您。
答案1
PasswordAuthentication no
我不确定为什么这解决了这个问题,但在我禁用和后,它现在似乎工作正常PermitEmptyPasswords no
,因此默认 ssh 强制密钥身份验证。
最初发布的文件没有进行任何更改hosts.*
。
还运行sudo systemctl restart sshd
并sudo systemctl restart ufw
刷新任何更改。重新启动系统,我现在可以使用生成的私钥/公钥对登录。