我正在尝试通过 SSH 在云中设置 Debian 服务器。我使用密钥登录。
初次启动后我想设置 UFW:
apt-get install ufw
ufw allow ssh
ufw enable
这就是我过去通过 SSH 登录时的做法。然而,对于这台服务器,连接丢失了,我似乎被锁定了。我已经尝试过两次了。也许我忽略了一些事情,但我认为这就是做到这一点的方法。这里发生了什么?为什么这不起作用?
注意:我意识到我可以通过 cronjob 每 15 分钟禁用 ufw。这使得测试成为可能,并且在尝试失败后不久就可以访问机器。
更新
下面是 的内容/lib/ufw/user.rules
。文件 user6.rules 具有类似的内容。
*filter
:ufw-user-input - [0:0]
:ufw-user-output - [0:0]
:ufw-user-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-user-logging-input - [0:0]
:ufw-user-logging-output - [0:0]
:ufw-user-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-logging-deny - [0:0]
:ufw-logging-allow - [0:0]
:ufw-user-limit - [0:0]
:ufw-user-limit-accept - [0:0]
### RULES ###
### tuple ### allow tcp 22 0.0.0.0/0 any 0.0.0.0/0 in
-A ufw-user-input -p tcp --dport 22 -j ACCEPT
### END RULES ###
### LOGGING ###
-A ufw-after-logging-input -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-after-logging-forward -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-I ufw-logging-deny -m state --state INVALID -j RETURN -m limit --limit 3/min --limit-burst 10
-A ufw-logging-deny -j LOG --log-prefix "[UFW BLOCK] " -m limit --limit 3/min --limit-burst 10
-A ufw-logging-allow -j LOG --log-prefix "[UFW ALLOW] " -m limit --limit 3/min --limit-burst 10
### END LOGGING ###
### RATE LIMITING ###
-A ufw-user-limit -m limit --limit 3/minute -j LOG --log-prefix "[UFW LIMIT BLOCK] "
-A ufw-user-limit -j REJECT
-A ufw-user-limit-accept -j ACCEPT
### END RATE LIMITING ###
COMMIT
以下命令会导致错误,因为还没有规则。这是安装 UFW 后的情况。
ufw insert 1 allow 22/tcp
ERROR: Invalid position '1'
答案1
执行命令后,运行此命令将允许您确认规则是否确实到位,并且没有其他任何东西阻止它(这需要您连接并且防火墙正在运行 - 通过控制台进入以确保 ssh测试时不会将您踢出):
ufw status
为了解决您的问题,我建议尝试以下命令:
ufw insert 1 allow 22/tcp
这将在防火墙表规则集的顶部添加一条允许来自任何地方的 ssh 连接的规则 - 或者,从安全角度来看,可以包含基于 IP 的限制,效果更好:
ufw insert 1 allow from <YOUR IP> proto tcp to any port 22
这将添加一条规则,仅允许来自您的 IP 的通过 ssh 的连接。
将规则置于顶部的原因是为了规避可能给您带来麻烦的任何拒绝规则。还值得确保 ssh 已安装并运行:
apt-get install openssh-server
service ssh start