我目前在使用 Ubuntu SSH 服务器时遇到了一些困难。我能想出的唯一一个总结我的情况的标题太长了,所以这是我的问题:
我最近在 Ubuntu 上发现了防火墙“ufw”命令,现在我正在尝试进行配置,以便当我使用 putty 通过 SSH 连接到我的 Ubuntu 操作系统时,我只能使用非常特定的端口号,而不是默认端口“22 ”。
出于某种原因,我在新选择的端口上被拒绝访问。由于我还是 Ubuntu 和网络的新手,我不太明白出了什么问题,有什么建议吗?
什么是UFW?你会认为这是一个简单的问题,但我阅读的资源越多,它就越不清晰。
首字母缩写词拼写为 Uncomplicated FireWall,就好像 ufw 实际上实现了防火墙本身。事实上,在许多地方,它本身被称为防火墙,例如在本文中。
UFW 上的 Ubuntu 帮助 wiki 页面说 UFW 是 iptables 的配置工具。(反过来,防火墙上的帮助维基页面说iptables是防火墙规则的数据库,它也是实际的防火墙,好像数据库是防火墙,这显然是错误的。当然'iptables'也是程序的名称。)
如果 ufw 是一个配置工具,那么我们可能希望它是一个你运行来配置某些东西的程序,一旦完成,你就退出了,配置已经建立。这就是这个问题的公认答案的立场:是简单的防火墙 (ufw) 服务吗?
但是关于这个问题的其他答案不同意——不,这是一项服务。事实上,在我的 18.04 机器上,我看到 ufw 作为服务运行!为什么配置工具作为服务运行?!
此外,systemctl list-units --all --type=serviceshows ufw.serviceis loaded and active(and also exited?!) yet ufw statusshows inactive。
那么 ufw status = inactive 是什么意思呢?
“防火墙”(无论是什么)是不活动的?这就是“状态”的 ufw 手册页文档所建议的。
还是说ufw中配置的规则是非活动的(而iptables中配置的其他规则是活动的)?
或者这是否意味着 ufw 在启动时开始,将其规则设置到 ipconfig(或它们去的任何地方),以便它们现在生效,而现在 ufw 没有任何关系,因此它处于非活动状态?
特别感兴趣:我想遵循一些需要发出一些 iptables 命令的说明,但担心它们会与 ufw 设备冲突或被 ufw 设备覆盖。
我需要手动配置 iptables 并使用 package.json 保存和恢复规则iptables-persistent。所以我不再想要ufw了。
我可以简单地禁用它。但是iptables规则转储中存在许多链,我不想看到它们。
:INPUT ACCEPT [593:73026]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [449:94341]
:ufw-after-forward - [0:0]
:ufw-after-input - [0:0]
:ufw-after-logging-forward - [0:0]
:ufw-after-logging-input - [0:0]
:ufw-after-logging-output - [0:0]
:ufw-after-output - [0:0]
:ufw-before-forward - [0:0]
:ufw-before-input - [0:0]
:ufw-before-logging-forward - [0:0]
:ufw-before-logging-input - [0:0]
:ufw-before-logging-output - [0:0]
:ufw-before-output - [0:0]
:ufw-reject-forward - [0:0]
:ufw-reject-input - [0:0]
:ufw-reject-output - [0:0]
:ufw-track-input - [0:0]
:ufw-track-output - [0:0]
-A INPUT -j ufw-before-logging-input
-A INPUT -j ufw-before-input
-A INPUT -j ufw-after-input …Run Code Online (Sandbox Code Playgroud) 我想ufw从 python 脚本运行Uncomplicated Firewall,但它通常以交互模式运行。例子:
subprocess.check_output(["ufw", "enable"])
Run Code Online (Sandbox Code Playgroud)
有以下输出:
'Command may disrupt existing ssh connections. Proceed with operation (y|n)? Aborted'
Run Code Online (Sandbox Code Playgroud)
有没有办法在ufw没有交互模式的情况下运行?
我安装了一个新的 Ubuntu 16.04 并启用了ufw:
ufw enable
Run Code Online (Sandbox Code Playgroud)
我尝试了这些方法一次取消过滤多个端口:
ufw allow 22/tcp 25/tcp 80/tcp 443/tcp 9000/tcp
ufw allow 22/tcp, 25/tcp, 80/tcp, 443/tcp, 9000/tcp
ufw allow {22/tcp,25/tcp,80/tcp,443/tcp,9000/tcp}
Run Code Online (Sandbox Code Playgroud)
所有三种方式都会带来相同的错误:
错误:参数数量错误
甚至可以使用 UFW 取消过滤多个端口吗?
让我们假设:
(注意:注意桌面这个词的重点,所以任何对服务器的引用都与问题无关,因此无关紧要)
经过对这个主题的一些研究,我明白了这一点:
一种。ufw 是 Ubuntu 的默认防火墙“配置工具”吗?(注意它说的是配置工具,而不是实际的防火墙)并且 ufw 已安装,但它没有运行并且根本没有配置,因此它没有开箱即用的默认规则。
湾 Gufw 是 ufw 的用户界面,但它不是默认安装的,或者至少在 Ubuntu Desktop 18.04 LTS 中是这样。
C。iptables 是作为模块内置到内核中的实际防火墙。
在这一点上我知道我可以配置 ufw 因为它像 abc 一样简单,因此它的名字和使用它,作为一个起点,你需要设置拒绝(传入),允许(传出)并启动它,我也明白我可以使用Gufw也要做这个。所以我可以把它留在那里然后做。
然而,经过我所有的研究,我发现很多关于这个主题的文章、问题和博客都有很多观点和意见,其中很多说你不需要防火墙,没有开放的端口,但我在想,肯定有些端口必须当我连接到互联网时打开?这意味着我正在将我的设备连接到网络并打开双向流量连接,但是我阅读的所有信息只会使这变得不清楚和模棱两可,所以我消化了所有这些信息并尝试理解它然后减少它归结为一个单一的陈述,所以我总结一下:
Ubuntu 桌面用户不需要 ufw,因为它只是 iptables 的配置工具,而 iptables 是幕后的实际防火墙。
所以说我从字面上理解上面的陈述,那么下面的陈述是真的吗?:
iptables 是 Ubuntu 桌面的内置防火墙,经过完全配置,开箱即用,具有对普通桌面用户来说足够安全的默认规则。
因为如果上述情况属实,那么 ufw 除了为 iptables 提供一个简单的接口之外还有什么意义,这对于所有帐户来说都很复杂,而且专家建议您避免直接配置 iptables,因为如果您不知道到底是什么您正在做什么,如果配置错误,您很容易使您的系统变得不安全或无法使用?
这是我的系统的nmap扫描以及我的防火墙配置,显示了我系统上的开放端口:

请有人提供一个简明的、相关的、非观点的、基于事实的答案:)
我在其中一台生产服务器上启用了UFW,配置如下:Default: deny (incoming), deny (outgoing)。对于 NTP 同步,我已经安装ntp并正在运行。
有人可以建议应该将什么规则添加到UFW以进行 NTP 同步?我读过udp port 123需要为ntp打开的地方,但是当我运行时ntpq -p,我得到以下输出:
remote refid st t when poll reach delay offset jitter
==============================================================================
propjet.latt.ne 187.253.153.32 2 u 4d 1024 0 81.243 9.054 0.000
ec2-107-20-168- 130.207.244.240 2 u 4d 1024 0 86.669 -23.040 0.000
utcnist2.colora .ACTS. 1 u 4d 1024 0 298.151 86.936 0.000
Run Code Online (Sandbox Code Playgroud)
这表明我不需要添加任何 ufw 规则并且 ntp 已经在工作?
我想限制对 Dovecot 等特定源 IP 的外部访问。允许应用程序配置文件非常有效,但连接的来源永远不受限制(“来自:任何地方”):
$ sudo ufw status
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
Nginx Full ALLOW Anywhere
Postfix ALLOW Anywhere
Dovecot IMAP ALLOW Anywhere
Run Code Online (Sandbox Code Playgroud)
但是如何将 Dovecot IMAP 限制为特定源 IP?
我试过:
$ sudo ufw allow "Dovecot IMAP" from 1.1.1.1
ERROR: Wrong number of arguments
Run Code Online (Sandbox Code Playgroud)
所以这似乎不起作用......
要求 Ubuntu 20.04 LTS,ufw 0.36