我必须承认,我对 Linux 世界还很陌生,有些概念对我来说似乎很陌生。
我最怀念的一件事是好用而又简单的应用级防火墙。现在,随着互联网的无处不在的侵入性和永久连接,必须知道您的计算机到底在做什么、为什么做以及与谁一起做。协议分析器还可以,但对家庭用户来说,它太不友好且“分析”起来很耗时,几乎毫无用处。
我发现 Windows 环境中有很多程序不应该连接到互联网但它们却连接到了互联网(而且使用我的 ZoneAlarm 免费防火墙我可以阻止它们)。
使用 Gufw(以及其他一些程序)时,您必须知道您已经安装了哪些应用程序(我们知道,对于拥有数十亿代码行的现代操作系统来说,这几乎是不可能的)。
我正在寻找一种防火墙,它可以监控 NIC/WAN 连接并检测任何程序/应用程序或任何试图主动通过它“通信”的东西,无论尝试使用的端口是什么(我之前提到的应用程序都必须尝试使用众所周知的 TCP 端口进行连接:80、443、8080)。这存在吗?(如果没有,那么我如何确切知道我的电脑在做什么?)
答案1
Douane 是一款个人防火墙,它允许用户控制哪些应用程序可以从他们的 GNU/Linux 计算机连接到互联网,从而保护用户的隐私。
安装
到目前为止 (2017/05/22) 没有可用的 Ubuntu 软件包。您必须从源代码构建它。
这些安装说明基于以下信息杜安维基并在 Ubuntu 16.04.2 64 位上测试。
打开终端(++ Ctrl)来运行命令。AltT
准备
更新系统:
sudo apt update
sudo apt full-upgrade
如果您收到要求重新启动计算机的通知,请重新启动它。
安装依赖项
sudo apt install git build-essential dkms libboost-filesystem-dev libboost-regex-dev libboost-signals-dev policykit-1 libdbus-c++-dev libdbus-1-dev liblog4cxx10-dev libssl-dev libgtkmm-3.0-dev python3 python3-gi python3-dbus
创建编译目录
cd
mkdir Douane
cd Douane
构建内核模块
git clone https://github.com/Douane/douane-dkms
cd douane-dkms
sudo make dkms
检查模块是否正确构建和安装:
lsmod | grep douane
你应该看到类似这样的内容:
douane 20480 0
构建守护进程
cd ~/Douane
git clone --recursive https://github.com/Douane/douane-daemon
cd douane-daemon
make
sudo make install
建立对话流程
cd ~/Douane
git clone --recursive https://github.com/Douane/douane-dialog
cd douane-dialog
make
sudo make install
启动对话流程:
/opt/douane/bin/douane-dialog &
然后检查它是否正在运行:
pgrep -a douane-dialog
你应该看到类似这样的内容:
21621 /opt/douane/bin/douane-dialog
构建配置器
cd ~/Douane
git clone https://github.com/Douane/douane-configurator
cd douane-configurator
sudo python3 setup.py install
启动守护进程并设置自动启动
我必须在文件中插入以下文本/etc/init.d/douane
才能启用守护进程的自动启动:
### BEGIN INIT INFO
# Provides: douane
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Douane firewall
### END INIT INFO
打开文件进行编辑:
sudo nano /etc/init.d/douane
然后将上述文本粘贴到程序描述后面。按Ctrl+ O,Enter保存,然后按Ctrl+X退出编辑器。
这是我插入文本后文件的前21行:
#!/bin/bash
#
# douane This shell script takes care of starting and stopping
# douane daemon (A modern firewall at application layer)
#
# Author: Guillaume Hain [email protected]
#
# description: douane is the daemon process of the Douane firewall application. \
# This firewall is limiting access to the internet on application bases.
### BEGIN INIT INFO
# Provides: douane
# Required-Start:
# Required-Stop:
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Douane firewall
### END INIT INFO
# Source function library.
. /lib/lsb/init-functions
现在可以设置自动启动并启动守护进程:
sudo systemctl daemon-reload
sudo systemctl enable douane
sudo systemctl start douane
激活过滤器并自动启动对话
启动配置器:
douane-configurator
然后确保开关使用 Douane 过滤我的网络流量和启动时自动启动 Douane均已打开。
您可以在规则选项卡。右键单击规则,您将获得删除该规则的选项。
测试
如果一切正常,当您打开使用网络连接的应用程序时,您应该会看到 Douane 窗口请求许可。
答案2
有一个名为 OpenSnitch 的新项目,描述如下:
项目页面是https://www.opensnitch.io/
此时它被认为是 alpha 软件,奇怪的是它是用 Python 编写的,但至少它是一个新的尝试,而 Douane 是一个非常古老的程序,(我认为)安装起来要困难得多。
免责声明:我个人没有测试过这两个程序,我只是想知道是否还有其他选项,并注意到这里还没有人提到 OpenSnitch。
答案3
这是一个非常好的问题,但我讨厌这样的问题,因为很难回答,而且回答起来又不显得安全不重要。
首先,我要说的是安全性很重要,但是 Linux 处理安全性的方式与 Windows 截然不同。
那么让我们来解决你的问题。
首先,不会有与 zone alarm 工作方式相同的传出防火墙。Linux 根本不需要这种防火墙。许多应用程序都以客户端/服务器架构运行,即使您在同一台机器上使用它们。Xorg 就是一个很好的例子。首先,您有一个服务器(在本例中是屏幕上绘制的部分)和一个客户端(gedit),gedit 与服务器对话,讨论绘制按钮、放置文本等。即使是像鼠标这样简单的操作系统也有同样的架构(或者可能有)。程序充当服务器,监听信息并在收到数据时发送数据,然后客户端“连接”到该“鼠标服务器”并等待信息。
这种情况在 Linux 中非常普遍,如果您要创建一个要求每个网络连接许可的“防火墙”,那么您可能无法配置它,因为它无法连接到它自己的服务器。
这些都是非常粗略的例子,其中一些内容由于太高级而容易产生误导。但仍然非常真实。
为了保护我们 Linux 用户免受这种侵害,我们制定了两条非常基本的规则,它们可以起到非常好的“基本”作用。
首先,除了 root 之外,没有用户可以打开任何低于 1024 的端口。(同样是极高级别)。这意味着,即使要运行 FTP 服务器(在标准端口上),您也需要具有 root 访问权限。作为用户,您通常可以打开“高端口”(高于 1024 的端口)。但请参阅规则二。
第二,没有进程可以访问启动该进程的用户无法访问的任何文件。(再次是非常高的级别)所以如果“coteyr”要启动一个 FTP 服务器,那么在最坏的情况下(高级别),该 FTP 服务器将只具有与启动它的用户 coteyr 完全相同的访问权限。
由于这两条规则的结合,每次尝试连接防火墙时都会询问的“软件”只会妨碍连接,并且对它的需求并不大。
也就是说,您始终可以创建出站防火墙规则,而且在很多情况下,这可能不是一个坏主意。许多服务可以(并且默认情况下)配置为使用基于文件的套接字(或基于内存的套接字)而不是基于网络的套接字。
入站防火墙规则通常会填补规则 1 或 2 留下的任何奇怪漏洞。
我的观点是这样的。安全很重要,我并不是说它不重要,只是在 Linux 领域我们有不同的工具和目标。我建议您研究 Linux 用户和组权限,然后使用 gfw 和 IPTABLES 等工具来填补任何空白。
答案4
OpenSnitch 在此处的答案中提到过,不再处于积极开发中。 有一把叉子尽管仍在继续开发,但与现在未维护的 OpenSnitch 相比,它在许多方面都有所改进。
与原始项目一样,OpenSnitch 分支是一个免费的开源 Linux 应用程序级防火墙,由守护进程(用 Go 编写)和 GUI(PyQt5)组成。与原始项目一样,此分支仍在开发中,其项目页面上有一条消息称“不要指望它没有错误,也不要依赖它来获得任何类型的安全性”。
该应用程序会监控您的应用程序尝试建立的出站连接,并根据一组规则阻止或允许其连接(当未找到现有规则时,系统会提示用户允许或拒绝访问)。该应用程序的灵感来自 Little Snitch,这是一款适用于 macOS 的基于主机的商业应用程序防火墙。
对于 Ubuntu,可以在项目上下载 DEB 包GitHub。
来源。