我最近不得不在计算机上重新安装 Ubuntu,并尝试设置防火墙 (gufw)。不幸的是,如果我允许所有传出流量,我只能使用互联网 (Firefox) 和接收电子邮件 (Thunderbird)。我担心这会对我的计算机产生什么影响,以及这样做有多危险。如果有人能告诉我如何正确设置以及 FF 和 Thunderbird 使用哪些端口,我将非常感激。我该怎么办?
答案1
安全是一个复杂的话题;在决定是否允许传出流量时需要考虑利弊。我不可能涵盖整个主题,但我会尝试在这里为您提供一个相关的摘要,以回答您的问题。
火狐
Firefox 可以使用任何传出端口。Internet URI 可以在主机名后使用任意端口号(例如http://example.com:12345/index.html
,它将连接到端口 12345)。实际上,网站有时会使用此功能,因此如果您将传出流量限制为端口 80 和 443,例如,某些网站(或其嵌入的图像、视频等)将无法工作。您可以使用代理或 VPN 来解决这个问题,但这是另一个话题,而且在不知道您的全部要求的情况下,我不一定推荐这样做。
雷鸟
Thunderbird 有点类似,但更可预测。如果您使用 IMAP,则端口为 143(未加密)或 993(加密)。传出端口为 25、587 或您的 ISP 告诉您使用的任何端口。因此,一旦您弄清楚了哪些端口你根据您的邮件帐户的需求,您可以允许这些。
允许传出流量吗?
因此,正如您所看到的,尤其是在网络流量方面,很难甚至不可能预测要打开哪些传出端口。好消息是,通常可以允许任意传出端口。更重要的是,允许传出连接不会显著增加受攻击的风险。
如果你是已经受到损害的传出连接可能会让垃圾邮件机器人或僵尸网络等东西做他们的肮脏工作,但只要你限制你的传入连接并保持操作系统和防病毒软件为最新版本(不要下载任何愚蠢的东西),您不太可能遇到任何问题,尤其是使用 Linux,因为与 Windows 相比,Linux 的漏洞要少得多。漏洞是可能的,但我想说的是,如果您尚未在该计算机上运行高流量服务器,那么您不太可能受到攻击,尤其是如果您阻止传入端口。
阻止所有传入流量
你不需要任何传入Firefox 或 Thunderbird 的端口,因此您可以(可能应该)阻止所有传入连接,除了您特别需要并已为其设置服务器的连接(如果有)。这是一种相当常见的安全做法。这不是做事的唯一方法,不是吗?最多安全,但在安全性 - 便利性方面,对于大多数人/组织来说,这是一个很好的折衷方案。
答案2
细节
您的问题没有简单的答案。一般来说,以下是一些默认使用的端口:
- 火狐
- HTTP:80
- HTTPS:443
- FTP:21
- 雷鸟
- POP3:110,995
- IMAP:143、220、585、993
- SMTP:25,587
看这里了解更多默认端口使用情况。我刚刚给出的列表的问题在于,这些都不是绝对的。任何运行 Web 服务器的人都可以将服务器配置为在 80 或 8080 以外的端口上运行。如果我将 Web 服务器配置为在端口 18415 上运行,而您只允许将 Web 流量传出到端口 80,那么您将无法访问我的网站。邮件服务器设置也是如此。
回答
默认情况下,最好允许所有传出连接并阻止所有传入连接。让我解释一下。我假设您想阻止传出连接以防止恶意软件能够“回访”。这种逻辑有一个大问题。恶意软件仍然可以使用开放端口,例如端口 80。
如果您可以肯定地说您访问的所有网站都在监听端口 80,请检查 Thunderbird 中所有电子邮件帐户的帐户服务器设置,以了解您的电子邮件服务正在使用哪些端口。将它们全部列入白名单并阻止其他所有出站。如果您遇到无法加载的网站,请查看域名后是否有冒号和数字(例如 my.domain.com:8081/...)。冒号后的数字(在我的示例中为 8081)是 Web 服务器正在监听的端口号。您还必须将这些端口列入白名单。但是,如果网页中使用了 iframe 或页面资源位于监听其他非标准端口的服务器后面,您可能会遇到问题。
检查应用程序的出站连接
如果您需要检查某个特定应用程序正在使用哪些端口,可以使用该netstat
命令。打开终端窗口并输入netstat -anp | grep APPLICATION | grep ':'
,将 APPLICATION 替换为您的应用程序名称(例如netstat -anp | grep firefox | grep ':'
)。如果您不知道应用程序的名称,只需输入netstat -anp | grep ':'
。这将返回类似以下内容的内容...
tcp 0 0 192.168.1.2:54054 117.18.237.29:80 已建立 21691/firefox tcp 0 0 192.168.1.2:54630 54.230.44.211:80 已建立 21691/firefox tcp 0 0 192.168.1.2:54052 117.18.237.29:80 已建立 21691/firefox
我们感兴趣的输出列是......
117.18.237.29:80 54.230.44.211:80 117.18.237.29:80
这表明 Firefox 在端口 80 上打开了三个到两个不同服务器的出站连接。值得一提的是,使用 Firefox,此连接列表会经常更改。如果您只想查看 Firefox 的出站连接,可以这样做(Ctrl+C退出):
while true; do clear; netstat -anp | grep firefox | grep : | awk '{print $5}'; sleep 1; done
如果您将防火墙配置为拒绝传出连接,则当连接处于 SYN_SENT 状态时,您将看到被阻止的端口。以下是我的计算机尝试连接到远程系统上的服务的示例,该服务正在侦听端口 3142。
tcp 0 1 192.168.1.2:44424 118.202.212.194:3142 SYN_SENT 21691/火狐
答案3
*NIX 相对不易受到端口攻击,因此与 Microsoft 等其他操作系统相比,Linux 环境中的防火墙需求较少。不过,拥有一个锁定良好的防火墙并不是一件坏事。
在调整防火墙时,您应该查阅相应的文档。Ubuntu 需要打开一些端口才能与外界通信,例如允许 DNS 流量。
具体到您的问题:http 在端口 80 上运行。https 使用端口 443 对于电子邮件,这取决于您的 ISP 的设置方式。普通 smtp 在端口 25 上运行。pop 在端口 110 上运行。
安全电子邮件 (pops) 在端口 995 上运行。安全发送 (STARTTLS) 使用端口 587。SSL 使用端口 465。
您可能还想为 SFTP 和 SSH 打开端口 22。
根据您连接互联网的方式,可能已经安装了防火墙,即路由器。在这种情况下,内置防火墙基本上是多余的。