ufw 阻止 ssh 直到“允许传出”

问题描述 投票:0回答:3

在我的 Ubuntu 20.04 机器上,我启用了 ufw 并允许 ssh 连接。

$ sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), deny (routed)
New profiles: skip

To                         Action      From
--                         ------      ----
22/tcp                     ALLOW IN    Anywhere                  
22/tcp (v6)                ALLOW IN    Anywhere (v6)  

但是,我在尝试连接时遇到超时。

但是如果我随后执行以下操作:

sudo ufw default allow outgoing  # deny outgoing also works, I've discovered

它立即开始接受我的连接。 这让我很困惑——似乎只是运行一些 ufw 命令就会让防火墙允许传入连接。

不幸的是,这是行不通的,因为重新启动后状态不会持续 - 所以我还不能远程使用计算机:重新启动后我必须从本地终端重做

sudo ufw default allow outgoing

我尝试过清除并重新安装 ufw。 我有兴趣了解在哪里查找防火墙不允许 ssh 的原因,即使状态表明它应该允许。

ssh ubuntu-20.04 ufw
3个回答
1
投票

问题在于传入和传出流量。 检查命令的输出

ufw status verbose

默认:拒绝(传入)、允许(传出)、拒绝(路由)

这将拒绝任何传入流量,包括您的

ssh

这是适合您情况的解决方案

sudo ufw allow incoming
sudo ufw allow outgoing
sudo ufw allow from (your rules here)
sudo ufw limit ssh (if you want to be safe)
sudo ufw deny from any

否认

incoming
outgoing
都会导致拒绝
ssh


0
投票

我从来没能解决这个问题,但确实想出了一个解决方法。 我创建了一个启动脚本来运行无操作(因为它已经是设置)

ufw default allow outgoing
。 这似乎会让防火墙接受传入连接。

$ cat /usr/local/bin/ping-ufw.sh
#!/bin/bash

ufw default allow outgoing >> /root/ping-ufw.out
$ cat /etc/systemd/system/ping-ufw.service
[Unit]
After=network.service

[Service]
ExecStart=/usr/local/bin/ping-ufw.sh

[Install]
WantedBy=default.target
sudo systemctl daemon-reload
sudo systemctl enable ping-ufw.service

0
投票

我在 arch 上遇到了类似的问题。我对此很陌生,但是我发现如果我停止 ufw (systemctl stop ufw) 然后尝试 ssh 进入电脑,然后再次启动 ufw,即使在我关闭连接后它仍然可以工作。

我认为这与 ssh 密钥有关

© www.soinside.com 2019 - 2024. All rights reserved.