我想在通过 SSH 连接时在远程机器上设置 ufw。我打字
ufw reset
ufw default deny incoming
ufw default allow outgoing
ufw allow ssh
ufw allow 22
ufw enable
Run Code Online (Sandbox Code Playgroud)
之后它会立即阻止 ssh 连接,并且不接受新的连接。我唯一能做的就是重置服务器。我错过了什么?
编辑 1:因为我确实配置了 ssh。我正在通过 SSH 访问服务器。这意味着它已配置,并且在运行之前我已连接到服务器ufw enable
我希望 ufw 阻止我外部接口(enp6s0)上的所有内容,但允许我内部接口(br0、tap0)上的所有内容。
我在这方面遇到了很大的问题(即使我设置了一个规则来允许所有内容,但 ufw 却阻止了 br0 上的内容),所以我将 ufw 设置为默认允许所有内容,然后开始为我想要阻止的接口添加异常,就像这样:
ufw deny in on enp6s0 to any port 67 proto udp
Run Code Online (Sandbox Code Playgroud)
对于我不想从外部访问的每个端口,我都有一些这样的端口。但是这个解决方案让我感到不安:基本上我让一切都保持开放,只是不听。迟早我会忘记保护某些东西。
所以我反其道而行之,想创建一组规则,允许某些端口但拒绝其他所有端口,如下所示:
ufw insert 1 allow in on enp6s0 from any port ssh proto tcp
ufw insert 2 allow in on enp6s0 from any port http proto tcp
ufw insert 3 deny in on enp6s0 from any port 30:65535 proto tcp
Run Code Online (Sandbox Code Playgroud)
最后一个命令故意让端口 22 保持打开状态,这样我就可以测试规则的有效性,而不会冒失去与服务器的 ssh 连接的风险。
但是,添加拒绝规则立即阻止了整个服务器。一切,不仅仅是 30:65535。nmap 认为它已关闭。幸运的是,我现有的 ssh 会话仍然处于活动状态,因此我可以删除规则。
现在,我知道我不是一些 ufw 大师之类的,但这对我来说真的是(另一个)震惊:我似乎不知道它是如何工作的。
任何人都可以启发我拒绝规则吗?我需要怎么设置?
最终编辑: 事实证明,卸载并重新安装 ufw 解决了这些问题。似乎我在某个时候搞砸了一些设置,导致了所有无法解释的行为。 …
CC-02内核
[ 399.656733] [UFW BLOCK] IN=eth0 OUT= MAC= SRC=192.168.2.11 DST=192.168.2.22 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=14158 DF PROTO=TCP SPT=47368 DPT=22 WINDOW=5840 RES=0x00 SYN URGP=0
Run Code Online (Sandbox Code Playgroud)
输出来自 sudo ufw status verbose
Status: active
Logging: on (low)
Default: deny (incoming), allow (outgoing)
New profiles: skip
To Action From
-- ------ ----
Anywhere ALLOW IN 192.168.2.0/24 137,138/udp (Samba)
Anywhere ALLOW IN 192.168.2.0/24 139,445/tcp (Samba)
22 ALLOW IN 192.168.2.0/24
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 ssh 连接到 CC-02,ssh server@CC-02
但我收到“无法解析主机名”。但是用 ip 地址替换 CC-02 工作正常。我已经检查/etc/hosts
并/etc/hostname
正确配置了它们。我不完全知道日志的真正含义。我需要打开另一个端口吗?
有人告诉我 Ubuntu 带有防火墙 UFW。这是真的?有它的 GUI 吗?如果是这样,它的名称是什么,我在哪里下载?
当有人想要访问您的 PC 或应用程序想要访问互联网时,UFW 是否可以通知我们(例如在带有弹出窗口的窗口中)?
如果没有,Ubuntu 是否有提供此类通知的防火墙?
我在我的 Ubuntu 服务器上使用 UFW。不幸的是,UFW 中没有将端口转发到另一台机器的规则。
您需要做的是编辑 /etc/ufw/before.rules 并将路由命令放在那里,例如
# nat Table rules
*nat
:POSTROUTING ACCEPT [0:0]
# Forward traffic from eth0 through eth1.
-A POSTROUTING -s 192.168.0.0/24 -o eth1 -j MASQUERADE
-A PREROUTING -i eth1 -p tcp --dport 80 -j DNAT --to 192.168.0.200:80
-A PREROUTING -i eth1 -p udp --dport 10090 -j DNAT --to 192.168.0.202:22
-A PREROUTING -i eth1 -p tcp --dport 10090 -j DNAT --to 192.168.0.202:22
-A PREROUTING -i eth1 -p tcp --dport 443 -j DNAT --to 192.168.0.200:443
-A …
Run Code Online (Sandbox Code Playgroud) Windows 防火墙允许指定一个程序,该程序将接受入站连接,无论哪个端口正在侦听(而不是指定端口以允许该程序)。这在具有默认防火墙的 Ubuntu 中可行吗?如何?
我目前使用以下规则:
ufw allow out from my_local_ip to any port 587
这对我来说有点太松懈了。我想收紧它并将其限制为仅 gmail 的 smtp 服务器 IP 地址,但它们总是在变化。我曾经只是等到外发电子邮件没有到达目的地,然后检查系统日志中被阻止的 IP 地址,然后将其添加到 ufw 配置脚本中。但是,现在我需要更高的可靠性。
有没有办法在 ufw 中使用 smtp.gmail.com?我不这么认为,但我想我会问。还有其他想法吗?谢谢。
更新
根据izx的建议,我从whois获得了以下(缩写)信息:
$ whois 74.125.53.108
...
网络范围:74.125.0.0 - 74.125.255.255
CIDR:74.125.0.0/16
...
使用此信息,我在 ufw 配置脚本中创建了以下命令(我意识到还有其他范围要打开,这只是一个示例):
ufw allow out from 192.168.2.5 to 74.125.0/24.0/24 port 587
Run Code Online (Sandbox Code Playgroud)
但 ufw 不喜欢那样。所以我把它改成:
ufw allow out from 192.168.2.5 to 74.125.0.0/24 port 587
Run Code Online (Sandbox Code Playgroud)
这个 ufw 被接受,但显然这只会阻止这个范围内的任何地址,0 作为第三个八位字节。那么我如何从 0-255 获得第三个八位字节呢?
我在使用以下命令运行的 docker 实例中运行了一个 web 服务:
sudo docker run -d -p 4040:4040 ....
Run Code Online (Sandbox Code Playgroud)
我的 UFW 规则如下所示:
~ sudo ufw status
Status: active
To Action From
-- ------ ----
22 ALLOW Anywhere
4040 DENY Anywhere
22 ALLOW Anywhere (v6)
4040 DENY Anywhere (v6)
Run Code Online (Sandbox Code Playgroud)
当我通过它的IP直接访问盒子时,我可以访问端口4040。为什么ufw规则没有阻止它?
注意:作为docker安装的一部分,我改变了
DEFAULT_FORWARD_POLICY="DROP" 到 DEFAULT_FORWARD_POLICY="ACCEPT"
在 /etc/default/ufw 根据此处的 dockers 说明(http://docs.docker.io/en/latest/installation/ubuntulinux/#docker-and-ufw)
我需要知道如何修复丢失的“/etc/init.d/ufw”文件,它是某个包还是某个命令?
我使用gufw
来启用它,但在重新启动时我的防火墙仍然关闭...
我创建了一个符号链接,/etc/init.d/ufw -> /lib/init/upstart-job
但我无法让它像start ufw
(重新启动后)一样工作。
我找到了这个文件/lib/ufw/ufw-init
,它看起来像一个 init.d 文件!我可以在那里复制或符号链接吗?
附加(可选)问题:
如何查找具有该文件的包?apt-cache search
没有用..
我们可以安全地创建这样的脚本吗?
知道为什么会丢失吗?
观察:
我/etc/ufw/ufw.conf
有ENABLED=yes
(但似乎没用)。
iptables -L
在 I 之后变得不同ufw enable
,因此 ufw 规则不会通过任何其他方式应用于启动。
PS.:这个脚本也不起作用
sudo ln -s /lib/ufw/ufw-init /usr/sbin/ufw-init
sudo ln -s /lib/init/upstart-job /etc/init.d/ufw-init
#sudo update-rc.d -f ufw-init remove
sudo update-rc.d ufw-init defaults 99
sudo -k
Run Code Online (Sandbox Code Playgroud) 操作系统:Kubuntu 16.04 LTS
我已成功使用 KDE Connect,但我ufw
对允许 Kubuntu 16.04 查看我的 Android 所需的设置有疑问。
当我安装 Kubuntu 时,我做的第一件事就是激活ufw
,这是终端输出:
sudo ufw status verbose
sudo password for dkbose:
Status: inactive
sudo ufw enable
Firewall is active and enabled on system startup
sudo ufw default deny
Default incoming policy changed to 'deny'
(be sure to update your rules accordingly)
Run Code Online (Sandbox Code Playgroud)
然后,要使用 KDE Connect,我必须按照https://community.kde.org/KDEConnect 中的描述打开某些端口:
sudo ufw allow 1714:1764/udp
sudo ufw allow 1714:1764/tcp
sudo ufw reload
Run Code Online (Sandbox Code Playgroud)
我的问题是:我将很少使用 KDE Connect。那么,我如何在每次使用完 KDE Connect 后逆转端口的打开状态?
根据我在 …