Ubuntu 16.04是否有任何应用程序级防火墙?(带有GUI)


20

我必须承认,我是Linux世界的新手,有些概念对我来说似乎并不熟悉。

我最想念的一件事是一个好的而简单的应用程序级防火墙。到目前为止,借助与互联网的所有这些广泛的侵入性和永久性连接,必须知道您的计算机究竟在做什么,为什么以及与谁在一起。协议分析仪还可以,但是过于友好和费时,无法进行“分析”,这对于家庭用户而言实际上是没有用的。

我在Windows环境中发现了很多程序,这些程序不应该连接到Internet,但是可以连接到Internet(使用我的ZoneAlarm免费防火墙,我可以阻止它们)。

使用Gufw(和其他几个),您必须知道您已经安装了哪些应用程序(并且我们知道,对于具有数十亿代码行的现代OS,这几乎是不可能的)。

我正在寻找的是一种防火墙,它可以监视NIC / WAN连接并检测任何程序/应用程序或试图主动通过它进行“对话”的任何内容,而无论尝试使用的端口是什么(我前面提到的应用程序都必须尝试连接)使用众所周知的TCP端口:80、443、8080)。是否存在?(如果没有,那我怎么确定我的计算机在做什么?)


1
只是好奇:这种蛇油最近是否预防了任何严重的问题(如想哭)?
恢复莫妮卡-M.Schröder'17

Answers:


12

杜安

Douane是一种个人防火墙,它允许用户控制哪些应用程序可以从其GNU / Linux计算机连接到Internet,从而保护用户的隐私。


安装

到目前为止(2017/05/22)没有可用的Ubuntu软件包。您必须从源代码构建它。

这些安装说明基于Douane Wiki上的信息,并已在Ubuntu 16.04.2 64位上进行了测试。

打开一个终端(Ctrl+ Alt+ T)以运行命令。

制备

更新系统:

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+ OEnter保存,然后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 zedtux@zedroot.org
#
# 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

然后确保使用Use Douane过滤我的网络流量的交换机和引导时自动启动Douane都已打开。

您可以在“ 规则”选项卡中查看过滤规则。右键单击规则,您可以选择删除它。

测试

如果一切正常,打开使用网络连接的应用程序时,应该会在Douane窗口中询问权限。


1
嗨,埃里克(Eric),非常感谢您的及时答复。如前所述,我是Linux的新手。在发布问题之前,我确实找到了Douane的东西,我在Douane站点上看了一下,没有Ubuntu的“软件包”,只有一个名为“ Archlinux”的东西(我猜是Linux的另一个发行版)...我也发现了可以使它适应任何发行版,从而进行手动重新编译和安装...对吗?
jonabrv1965

1
首先,再次感谢Eric的支持。嗯...在Linux上安装和运行应用程序需要30多个步骤...不是很用户友好,不是吗?...我开始看看为什么Linux在技术人员之外的接待率如此之低...我会尝试一下(主要是因为我必须不惜一切代价与Windoze分开)
jonabrv1965

没有PPA提供二进制文件吗?Google找到了launchpad.net/~zedtux/+archive/ubuntu/douane(但我尚未对其进行测试)。
Melebius

4

有一个名为OpenSnitch的新项目,描述于

https://www.cyberciti.biz/python-tutorials/opensnitch-the-little-snitch-application-like-firewall-tool-for-linux/

项目页面为https://www.opensnitch.io/

在这一点上,它被认为是Alpha软件,奇怪的是它是用Python编写的,但是至少这是一个新尝试,而Douane是一个非常老的程序,(我认为)很难安装。

免责声明:我还没有亲自测试过这两个程序,我只是在尝试查找是否还有其他选择,并且注意到这里还没有人提到过OpenSnitch。


>“很奇怪,它是用Python编写的” —不奇怪,在除“热门”部分之外的所有内容上使用高级语言以节省时间并减少错误是一个好主意。
Sarge Borsch '18

3

这是一个非常好的问题,但是我讨厌这样的问题,因为如果不说安全性不重要,它们很难回答。

首先,我要说安全性很重要,但是Linux与Windows的处理方式非常不同。

因此,让我们解决您的问题。

首先,将没有将以区域警报相同方式工作的传出防火墙。Linux根本不需要一个。即使您在同一台计算机上使用它们,许多应用程序仍可以在客户端/服务器体系结构中工作。Xorg是一个很好的例子。首先,您有一个服务器(在这种情况下,是在屏幕上绘制的部分),而客户端(gedit)则通过gedit与服务器讨论如何绘制按钮,放置文本等。甚至简单的鼠标鼠标也具有相同的体系结构(或可能具有)。程序充当服务器,侦听信息并在获取信息后发出数据,然后客户端“连接”到该“鼠标服务器”并等待信息。

这在Linux中非常普遍,如果您要创建一个“防火墙”来询问每个网络连接的权限,则可能无法对其进行配置,因为它无法连接至其自己的服务器。

这都是一个非常粗糙的例子,其中有些令人误解,因为它太高了。但这仍然是真的。

为了保护我们的Linux用户免于此,我们有两个非常基本的规则集,它们可以很好地完成“基本”工作。

1,除root用户外,没有用户可以打开1024以下的任何端口(级别仍然很高)。这意味着即使要运行FTP服务器(在标准端口上),也需要具有root用户访问权限。作为用户,您通常可以打开“高端口”(1024以上的端口)。但请参阅第二条规则。

2号 没有进程可以访问启动该进程的用户无法访问的任何文件。(级别很高)因此,如果“ coteyr”要启动FTP服务器,则在更糟的情况下(高级)该FTP服务器将仅具有与启动它的用户coteyr完全相同的访问权限。

由于这两个规则的结合,每次尝试连接防火墙的问题都会被一个“软件”所困扰,对此没有太多需求。

也就是说,您始终可以创建出站防火墙规则,在许多情况下,这可能不是一个坏主意。可以将许多服务(默认情况下)配置为使用基于文件的套接字(或基于内存),而不是基于网络的套接字。

入站防火墙规则通常会消除规则1或2留下的任何奇数间隙。

我的意思是这个。安全很重要,我并不是要说不是,安全只是在Linux领域,我们拥有不同的工具和目标。我建议您调查Linux用户和组权限,然后使用gfw和IPTABLES之类的工具来填补所有空白。


3
>没有进程可以访问启动该进程的用户无法访问的任何文件,这似乎与Windows没什么不同。那不是操作系统的区别。不过,老实说,如果您只允许所有环回连接,那么这样的防火墙将不会干扰同一台计算机上的任何TCP客户端/服务器应用程序-完全可以设置一个仅控制网络访问的防火墙。(此外。除非运行Windows 9x,否则Windows ACL(如果有的话)比传统的Unix权限更强大。这又与限制网络无关。)
Bob

1
实际上,再次阅读答案...我也不知道不能使用知名端口也有关系-这仅有助于防止屏蔽系统服务(例如,假装sshd在22上),但问题似乎询问有关数据渗透的更多信息。哪些几乎完全是传出连接,与允许绑定到哪些端口无关。
鲍勃·鲍勃(Bob)

1
首先,不会有与区域警报相同工作的传出防火墙。Linux根本不需要一个-IP表既可以控制传入数据,也可以控制传入数据,请不要说您实际上不知道的内容。
djsmiley2k-CoW

嗨,Honza,在我的“家庭作业”巡演中,我看到了几次像您一样的答案。我有点理解,但是...是一个很大的“但是” ...不是我想要的...我确实了解端口,低暴露(由于平台的普及程度较低)和您提到的所有其他概念...但是我要寻找的是以一种简单的方式(例如zonealarm)来了解我的计算机在计算机本身之外正在做什么。需要去互联网做任何事情吗?如果是的话,我想/需要知道为什么/何时/在哪里...
jonabrv1965

然后,您将进行更深入的挖掘。尝试netstat现在我的盒子有1354个打开的连接。其中有65个是网络连接。这对我来说是一个很小的数字(并不是说每个人都适合),但是您将开始尝试找出这些连接中每个连接的功能。就像我说的,并不是说安全性并不重要,而是一个完全不同的环境。
coteyr
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.