Cyberpanel中禁止恶意IP访问,通过命令行在Ubuntu服务器中限制IP段访问的方法

如果在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

总结

决策流程应该是:

  1. 运行 sudo systemctl status firewalld
  2. 如果结果是 active (running):恭喜你,使用 firewall-cmd 命令添加规则即可,这是最适合你系统的方式。
  3. 如果结果是 inactive (dead)not found:说明系统没有防火墙,请安装并使用 ufw

鉴于你使用了 CyberPanel,我强烈建议你优先执行步骤一,因为 firewalld 正在运行的可能性超过90%。

Views: 2

留下评论

您的邮箱地址不会被公开。 必填项已用 * 标注