Linux服务器ufw防火墙的开启,设置访问规则等命令、Docker容器限制IP访问

UFW (Uncomplicated Firewall) 防火墙介绍

  UFW (Uncomplicated Firewall) 是一个简单易用的防火墙管理工具,旨在使 Linux 系统上的防火墙配置变得更加直观和易于管理。UFW 是基于 iptables 的前端工具,用于控制入站和出站网络流量,默认情况下它对外部访问进行过滤,以保护你的服务器免受未经授权的访问。

  UFW 主要用于 Ubuntu 和其他基于 Debian 的 Linux 发行版,但也可以在其他 Linux 发行版中使用。

服务器检查防火墙状态 sudo ufw status

输出 Status: inactive 表示 服务当前处于 未激活 状态    可以输入 sudo ufw enable 来开启防火墙

输出 Status: active 表示 服务当前处于 激活 状态     可以输入 sudo ufw disable 来关闭防火墙

添加防火墙规则

  允许所有IP访问8080端口 sudo ufw allow 8080/tcp

  指定IP和指定端口 sudo ufw allow from 127.0.0.1 to any port 3306 proto tcp 

    • sudo :这部分意味着以超级用户(管理员)权限运行命令。在修改防火墙配置时,需要管理员权限。

    • ufw :这是 Uncomplicated Firewall 的命令行工具。它是 Ubuntu 和其他 Linux 发行版中常用的防火墙管理工具,用于配置 iptables 防火墙规则。

    • allow :表示允许来自某个源的流量通过防火墙。这条命令允许从某个特定 IP 地址(192.168.3.101)访问服务器的端口。

    • from 192.168.3.101 :这部分表示防火墙规则仅允许来自 IP 地址 192.168.3.101 的流量。只有此 IP 地址才能尝试连接到目标服务器的端口。

    • to any :这里的 to any 指定该规则应用于 所有 服务器上的网络接口或 IP 地址(如果服务器有多个网卡或绑定多个 IP 地址)。实际上,这意味着从 192.168.3.101 来的流量可以访问服务器上的所有 IP 地址。

    • port 3306 :这表示该规则仅适用于 3306 端口。3306 是 MySQL 数据库的默认端口,意味着这个规则允许来自 192.168.3.101 的流量通过 MySQL 服务的端口。

    • proto tcp :指定协议为 TCP。TCP 是一种可靠的、连接导向的协议,常用于数据库连接和其他服务(如 HTTP 和 HTTPS)。在这个规则中,指明仅允许使用 TCP 协议的流量访问 MySQL 服务的端口。

删除防火墙规则  

  根据规则编号删除

    首先,查看当前的防火墙规则列表   sudo ufw status numbered

    根据规则编号,您可以删除某个规则  sudo ufw delete 1 如果您要删除其他规则,只需替换 1 为相应的编号

  根据特定端口删除

    例如,要删除 3306 端口的规则  sudo ufw delete allow from 192.168.3.101 to any port 3306

  根据特定IP删除

    例如,要删除 192.168.3.101 对所有端口的访问规则  sudo ufw delete allow from 192.168.3.101

 

注:如果是Docker容器中启动的服务,容器的网络规则会跳过上述防火墙规则,需要特殊处理

写在前面

  用过Docker 的人可能已经发现了,默认状态下的Docker 有的时候并不总是遵守UFW 防火墙规则。今天在这里为大家演示如何设置Docker来解决这一问题。

  如果您在Linux上使用Docker,那么您的系统防火墙可能会自动委托给UFW(Uncomplicated Firewall)防火墙。如果您不知道这一点的话,那么很可能会引发由Docker 和UFW 防火墙结合使用所产生的安全问题。为什么Docker 和UFW 防火墙结合使用会产生安全问题呢?因为Docker实际上绕过了UFW 防火墙,直接改变iptables(IP信息包过滤系统),从而使容器绑定到端口。这意味着您所设置的所有UFW防火墙规则将不适用于Docker容器。

解决方法

    1. 禁用Docker的默认iptables规则: 通过编辑Docker的配置文件,可以禁用其自动设置的iptables规则。

      sudo vi /etc/docker/daemon.json

      添加以下内容:

      {
       "iptables": false
      }

      按 ESC 输入 :wq 按回车保存退出

      重新启动Docker服务:

      sudo systemctl restart docker

      原理:禁用 Docker 的 iptables 管理

      通过禁用 Docker 的 iptables 功能,即设置 {"iptables": false},你告诉 Docker 不要再自动修改防火墙规则。这时,Docker 容器的端口映射将不再影响 UFW 或其他防火墙规则,防火墙的规则将直接生效。

      • 这样,UFW 防火墙规则就能够控制哪些 IP 地址可以访问 Docker 容器暴露的端口,而不受 Docker 自动添加的 iptables 规则的干扰。

 

参考链接: https://www.oryoy.com/news/jie-jue-docker-rong-qi-yu-fang-huo-qiang-chong-tu-ting-zhi-docker-fang-huo-qiang-gan-rao-de-shi-yong.html

posted @ 2024-12-19 11:45  xd99  阅读(1015)  评论(0)    收藏  举报