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容器。
解决方法
-
-
禁用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规则的干扰。
- 这样,UFW 防火墙规则就能够控制哪些 IP 地址可以访问 Docker 容器暴露的端口,而不受 Docker 自动添加的
-

浙公网安备 33010602011771号