如果在Ubuntu服务器中使用 sudo ufw allow ssh
出现 sudo: ufw: command not found
这个提示,原因非常明确:你的 Ubuntu 系统上没有安装 UFW。
这在你使用 CyberPanel 的情况下其实很常见。CyberPanel 为了更好地进行集成管理,通常会默认安装并使用 firewalld
作为其防火墙后端(即使在 Ubuntu 系统上也是如此),因此在它的安装过程中可能就跳过了 ufw
的安装。
请不要慌张,也先不要急着安装 UFW。 因为你的系统上很可能已经有了一个正在运行的防火墙 (firewalld
)。同时管理两个防火墙会导致冲突和不可预料的问题。
请按照下面的顺序来检查和操作,这能确保你使用正确的方式来解决问题。
1. 检查系统是否正在使用 firewalld
这是最重要的一步。在终端里运行下面的命令,查看 firewalld
的状态:
sudo systemctl status firewalld
接下来,根据返回的结果进行判断:
如果 firewalld
正在运行,你会看到 Active: active (running)
的绿色字样。
这证实了我们的猜测:CyberPanel 正在使用 firewalld
。那么你应该使用 firewalld
的命令来添加规则,而不是 ufw
。
1.1 使用以下命令来封禁 IP 段(Active: active (running)
):
# 添加永久性的封禁规则(将 IP 段替换成你自己的) sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="123.45.67.0/24" drop' # 重新加载防火墙规则,使新规则生效 sudo firewall-cmd --reload # (可选)查看所有已生效的规则,确认是否添加成功 sudo firewall-cmd --list-all
--permanent
: 确保规则在服务器重启后依然有效。--add-rich-rule
: 添加一条富规则,可以更精确地定义。source address="..."
: 指定来源 IP 地址段。drop
: 动作是直接丢弃数据包。
这种情况下,你已经成功解决了问题,无需进行下面的步骤了! 这也对应了我们之前讨论的“通过 CyberPanel 界面操作”的方法,因为界面底层调用的就是 firewall-cmd
命令。
2. 安装并配置 UFW(仅在 firewalld
未运行时操作)
如果 firewalld
未运行,你会看到 Active: inactive (dead)
或者 Unit firewalld.service not found
的提示。
这说明你的系统里也没有 firewalld
。在这种情况下,你的服务器可能没有任何防火墙在运行,所以我们可以安全地安装并使用 UFW。
2.1 更新软件包列表:
sudo apt-get update
2.2 安装 UFW:
sudo apt-get install ufw
2.3 安装完成后,你就可以按照我们最初的计划来操作了:
# 1. 允许 SSH (非常重要,防止把自己锁在外面) sudo ufw allow ssh # 2. 启用 UFW sudo ufw enable # 系统会提示你确认,输入 y 并回车 # 3. 添加封禁规则 (将 IP 段替换成你自己的) sudo ufw deny from 123.45.67.0/24 to any # 4. 检查状态和规则 sudo ufw status numbered
总结
决策流程应该是:
- 运行
sudo systemctl status firewalld
。 - 如果结果是
active (running)
:恭喜你,使用firewall-cmd
命令添加规则即可,这是最适合你系统的方式。 - 如果结果是
inactive (dead)
或not found
:说明系统没有防火墙,请安装并使用ufw
。
鉴于你使用了 CyberPanel,我强烈建议你优先执行步骤一,因为 firewalld
正在运行的可能性超过90%。
Views: 2