![UFW:仅允许来自特定 IP 的应用程序/配置文件](https://linux22.com/image/940521/UFW%EF%BC%9A%E4%BB%85%E5%85%81%E8%AE%B8%E6%9D%A5%E8%87%AA%E7%89%B9%E5%AE%9A%20IP%20%E7%9A%84%E5%BA%94%E7%94%A8%E7%A8%8B%E5%BA%8F%2F%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6.png)
我想将外部访问(例如 Dovecot)限制为特定源 IP。允许应用程序配置文件完全没问题,但连接的来源从未受到限制(“来自:任何地方”):
$ sudo ufw status
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
Postfix ALLOW Anywhere
Dovecot IMAP ALLOW Anywhere
但是我如何将 Dovecot IMAP 限制到特定的源 IP?
我试过:
$ sudo ufw allow "Dovecot IMAP" from 1.1.1.1
ERROR: Wrong number of arguments
所以这似乎不起作用......
要求 Ubuntu 20.04 LTS、ufw 0.36
答案1
简短的回答是:
sudo ufw allow from <IP adress>/<subnet mask> to any app <profile name>
在您的情况下,请记住引用“Dovecot IMAP”。
长答案:
我试过了:$ sudo ufw 允许“Dovecot IMAP”从 1.1.1.1
虽然这是最直观的命令,但语法有点棘手。
我不知道Dovecot IMAP是的,所以我将以 OpenVPN 为例。
我们希望通过 ufw 允许应用程序配置文件仅有的如果它来自某个 IP/子网。
假设我们有以下内容ufw 应用程序配置文件在 /etc/ufw/applications.d/ 中命名开放VPN(这里的配置文件名很重要):
[OpenVPN]
title=OpenVPN server
description=This rule allows connections to VPN server at <servername>.
ports=8880/udp
笔记:我们在这里为 OpenVPN 使用自定义端口。
现在使用以下命令将规则添加到 ufw:
sudo ufw allow from 10.0.0.0/24 to any app openvpn
这会打开端口指定于/etc/ufw/applications.d/openvpn对于传入来自的连接10.0.0.0/24。
并检查:
sudo ufw status verbose
如果它有效,你应该得到如下输出:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip
To Action From
-- ------ ----
8880/udp (OpenVPN) ALLOW IN 10.0.0.0/24
请小心配置文件名和服务名称。
sudo ufw allow from 10.0.0.0/24 proto udp to any port openvpn
这是一个非常相似的语法,也是正确的。但它适用于 /etc/services 中的服务端口配置,这可能不是您想要允许的端口(例如我们将 OpenVPN 端口更改为 8880)。在这种情况下,我们在 /etc/services 中仍然有以下内容:
openvpn 1194/tcp
openvpn 1194/udp
Ufw 承认开放VPN作为服务,除非我们另有说明。
任何端口 openvpn (<- 服务)
任何应用程序 openvpn (<- 应用程序配置文件)
因此发布sudo ufw allow from 10.0.0.0/24 proto udp to any port openvpn
结果是:
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing), allow (routed)
New profiles: skip
To Action From
-- ------ ----
1194/udp ALLOW IN 10.0.0.0/24
这边走我们有效地打开了一个端口对于 OpenVPN,但不是我们指定的端口在我们的 /etc/ufw/applications.d/openvpn 应用程序配置文件中。
从未尝试过,但如果您更改 /etc/services 中的端口,它应该可以工作(冒着破坏其他东西的风险)。
您可以检查这个 Ubuntu 手册页有关 ufw 命令的详细信息。
希望能帮助到你。