介绍
浏览互联网具有更多隐私的原因与实现它的方式不同。
在本教程中,我们将详细介绍如何设置虚拟专用网络 (VPN)的服务器上,因此保证你的互联网浏览体验三个重要组成部分:
- 保护未加密的流量,防止Cookie和其他跟踪器,并屏蔽本地计算机的IP地址,从而实现网络流量的私有化
- 防止您的本地ISP记录DNS查询,通过从VPN直接发送到Google的DNS服务器
- 扫描并防止访问病毒和恶意应用程序
通过运行自己的VPN服务器,而不是使用商用VPN服务器,您还可以避免记录您的浏览历史记录(除非您选择这样做)。 最后,您可以选择其物理位置,以便您可以最小化延迟。 然而,使用VPN通常比使用直接Internet连接慢。
我们将在Debian 8服务器上安装和配置以下应用程序:
ClamAV的是检测木马,病毒,恶意软件等恶意威胁的开源杀毒引擎
的dnsmasq是一个软件包,它提供DNS(和几个)的服务。 我们将它仅用作DNS缓存
HAVP HTTP代理服务器防病毒软件与防病毒过滤器的代理。 它不缓存或过滤内容。 它使用第三方防病毒引擎扫描所有流量。 在本教程中,我们将使用
HAVP
作为一个透明代理 ,连锁HAVP
和Privoxy
一起OpenVPN的社区版是一种流行的VPN服务器。 它提供与可信服务器的安全连接,还可以将DNS服务器设置推送到其客户端。 在本教程中,术语OpenVPN的将被用来作为VPN服务器名称的简称
Privoxy的是,从官方网站, 以增强私密性,修改网页数据和HTTP头,控制访问和删除广告和其他令人讨厌的互联网垃圾先进的过滤功能的非缓存Web代理
完成本教程后,您将拥有一个隐私网关:
- 在使用公共WiFi点时保护您的连接
- 阻止来自网站的广告和跟踪功能
- 通过缓存服务器端DNS响应来加快网页加载时间
- 扫描您访问的网页和您下载的已知病毒的文件
怎么运行的
下图显示了Web请求通过我们将在本教程中设置的VPN跟踪的路径。
绿色背景的通道是VPN服务器的组件。 绿色框表示请求步骤,蓝色框和红色框表示响应步骤。
您的计算机和隐私服务器之间的流量将通过VPN隧道。 当您在浏览器中打开网页时,您的请求将转移到VPN服务器。 在VPN服务器上,您的请求将重定向到HAVP,然后重定向到Privoxy。
Privoxy将URL匹配其数据库模式。 如果URL匹配,它将阻止URL并返回有效但空的响应。
如果URL未被阻止,Privoxy将作为非缓存代理服务器来查询DNS并检索URL的内容。 DNS查询由Dnsmasq处理和缓存。
HAVP从Privoxy接收内容并通过ClamAV执行病毒扫描。 如果发现任何病毒,它将返回一个错误页面。
先决条件
请确保您满足以下先决条件:
- Debian 8Droplet与1 GB的RAM
- 使用Debian 8进行初始服务器设置
- 如何在Debian 8上设置OpenVPN服务器
系统要求
我们将配置的服务器将很容易在CPU,RAM和磁盘空间。 选择至少有1GB RAM的Droplet,并提供足够的带宽以满足您的浏览需求。
本教程选择的操作系统是Debian 8.对于其他基于Debian的Linux发行版(比如Ubuntu),它的工作方式也应该相同。
许可证
所有在本教程中所使用的软件可从Debian仓库并受Debian的政策 。
安全
此服务器将拦截您的所有HTTP请求。 有人谁需要这台服务器的控制权可以作为一个人在这方面的中间人和监控所有的HTTP流量,重定向DNS请求,等你需要保护你的服务器。 请参阅本节开头提到的教程,以设置sudo访问和防火墙作为初始级别的保护。
第1步 - 安装OpenVPN和其他先决条件
如果你还没有安装OpenVPN,现在就这样做。
您可以按照教程如何建立一个OpenVPN服务器在Debian 8 。
在以下步骤中,我们将安装几个软件包。 要确保您的包索引是最新的,请执行以下命令。
sudo apt-get update
如果您还没有启用ssh
在你的UFW防火墙设置,皮斯用下面的命令这样做。
sudo ufw allow ssh
sudo ufw enable
第2步 - 安装Dnsmasq
在这一步中,我们将安装和配置Dnsmasq。 我们的隐私代理服务器将使用Dnsmasq加速和保护其DNS查询。
每次连接到网页时,计算机都会尝试通过请求DNS(域名系统)服务器来解析该服务器的Internet地址。 默认情况下,您的计算机使用ISP的DNS服务器。
使用自己的DNS服务器有以下优点:
- 您的ISP不会知道您连接的主机名
- 您的ISP不能将您的请求重定向到其他服务器,这是审查的主要方法之一
- 您的DNS查找速度将提高
您选择的DNS服务器将会知道您向他们发出的所有DNS请求,并可以使用此信息来分析您的浏览习惯,将您的搜索重定向到自己的引擎,或阻止您访问未经批准的网站。 明智地选择您的DNS服务器。 OpenDNS和Google DNS服务器通常被认为是安全的。
在Debian系统,域名服务器的配置保存在一个文件名为/etc/resolv.conf
。
使用以下命令检查当前的Nameservers配置。
cat /etc/resolv.conf
输出:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 8.8.8.8
nameserver 8.8.4.4
如您所见,此系统上的默认Nameservers设置为Google的DNS服务器。
现在安装dnsmasq
使用下面的命令:
sudo apt-get install dnsmasq
安装软件包后再次检查您的配置:
cat /etc/resolv.conf
输出:
# Dynamic resolv.conf(5) file for glibc resolver(3) generated by resolvconf(8)
# DO NOT EDIT THIS FILE BY HAND -- YOUR CHANGES WILL BE OVERWRITTEN
nameserver 127.0.0.1
默认域名服务器被设置为127.0.0.1,这是本地接口的dnsmasq上运行。
您可以使用以下命令测试安装。 记录输出中的查询时间。
dig digitalocean.com @localhost
输出:
Output. . .
;; Query time: 20 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
. . .
现在再次运行相同的命令并检查查询时间:
dig digitalocean.com @localhost
输出:
Output. . .
;; Query time: 1 msec
;; SERVER: 127.0.0.1#53(127.0.0.1)
. . .
我们的第二个查询被回答dnsmasq
从缓存中。 响应时间从20毫秒下降到1毫秒。 根据系统的负载,缓存结果通常在1毫秒以内返回。
第3步 - 安装ClamAV
让我们安装我们的防病毒扫描程序,以便我们的VPN将保护我们免受已知的恶意下载。
安装ClamAV
ClamAV是一种广泛使用的开源反病毒扫描器。
安装ClamAV及其扫描仪:
sudo apt-get install clamav clamav-daemon
更新病毒数据库
ClamAV将在安装后立即更新其数据库,并每小时检查更新。
ClamAV的记录其数据库更新状态/var/log/clamav/freshclam.log
。 您可以检查此文件,以查看其自动更新如何处理。
现在我们将等待,直到自动更新完成; 否则,我们的扫描代理(HAVP)将抱怨,不会启动。
sudo tail -f /var/log/clamav/freshclam.log
在更新进度期间,当前状态将被写入屏幕。
OutputFri Jun 19 12:56:03 2015 -> ClamAV update process started at Fri Jun 19 12:56:03 2015
Fri Jun 19 12:56:12 2015 -> Downloading main.cvd [100%]
Fri Jun 19 12:56:21 2015 -> main.cvd updated (version: 55, sigs: 2424225, f-level: 60, builder: neo)
Fri Jun 19 12:56:28 2015 -> Downloading daily.cvd [100%]
Fri Jun 19 12:56:34 2015 -> daily.cvd updated (version: 20585, sigs: 1430267, f-level: 63, builder: neo)
Fri Jun 19 12:56:35 2015 -> Downloading bytecode.cvd [100%]
Fri Jun 19 12:56:35 2015 -> bytecode.cvd updated (version: 260, sigs: 47, f-level: 63, builder: shurley)
Fri Jun 19 12:56:41 2015 -> Database updated (3854539 signatures) from db.local.clamav.net (IP: 200.236.31.1)
Fri Jun 19 12:56:55 2015 -> Clamd successfully notified about the update.
Fri Jun 19 12:56:55 2015 -> --------------------------------------
等到你看到标记为红色文本, Clamd successfully notified about the update.
。
按CTRL+C
键盘上退出尾巴。 这将返回到命令提示符。
您可以使用配置ClamAV的部分继续,如果一切顺利正常。
(可选)故障排除
如果病毒更新耗时过长,可以手动调用。 这在正常情况下不需要。
停止自动更新服务。
sudo service clamav-freshclam stop
手动调用updater并等待其完成。 下载进度将以百分比显示。
sudo freshclam
启动自动更新服务:
sudo service clamav-freshclam start
配置ClamAV
现在我们将允许其他组访问ClamAV。 这是必需的,因为我们将配置病毒扫描代理(HAVP)在以下步骤中使用ClamAV。
编辑ClamAV的配置文件clamd.conf
用你最喜欢的文本编辑器。
sudo vi /etc/clamav/clamd.conf
设置以下参数为true
。
AllowSupplementaryGroups true
保存配置并退出。
重新启动clamav-daemon
sudo service clamav-daemon restart
第4步 - 安装HAVP
HAVP是病毒扫描代理服务器。 它会扫描您访问的网页上的每个项目,并阻止恶意内容。 HAVP不包含病毒扫描程序引擎,但可以使用相当多的第三方引擎。 在本教程中,我们将使用ClamAV进行配置。
从Debian存储库安装HAVP。
sudo apt-get install havp
如果ClamAV库没有足够的内存,HAVP可能无法启动。 您可以忽略此错误(现在),然后继续进行设置。
安装将需要一段时间,所以请耐心等待。
编辑配置文件
在您喜欢的编辑器中加载HAVP的配置文件:
sudo vi /etc/havp/havp.config
我们将需要设置一些配置选项,使HAVP与ClamAV守护程序一起运行。
HAVP可以与ClamAV库(默认情况下)或ClamAV守护程序一起使用。 库模式需要比daemon(套接字扫描器)模式多得多的RAM。 如果你的Droplet有4 GB的RAM或更多,你可以设置ENABLECLAMLIB
为true
,并使用库模式。
否则,请使用位于配置文件底部附近的这些设置。
ENABLECLAMLIB false
. . .
ENABLECLAMD true
HAVP的默认配置可能会干扰某些视频流网站。 要允许HTTP范围请求 ,设置以下参数。
RANGE true
互联网上的很多内容包括图像。 虽然有一些利用图像作为向量,它是或多或少安全不扫描图像。
我们建议设置SCANIMAGES
为false
,但你可以将此设置为true
,如果你想HAVP扫描图像。
SCANIMAGES false
不要扫描具有图像,视频和音频MIME类型的文件。 此设置将提高性能,并使您能够观看流视频内容(如果VPN作为一个整体具有足够的带宽)。 取消注释此行以启用它。
SKIPMIME image/* video/* audio/*
还有一个参数,我们将改变。
该参数将告诉HAVP不记录到日志文件中成功请求/var/log/havp/access.log
。 保留默认值( true
,如果你要检查的访问日志,看是否HAVP工作)。 进行生产,设置此参数为false
,以提高性能和隐私。
LOG_OKS false
保存更改并退出文件。
用户配置
记住我们将ClamAV配置为由其他组访问吗?
现在,我们将ClamAV的用户添加到HAVP组,并允许HAVP访问ClamAV的。 执行以下命令:
sudo gpasswd -a clamav havp
输出:
OutputAdding user clamav to group havp
我们需要重新启动clamav-daemon
我们更改组生效。
sudo service clamav-daemon restart
现在我们已经配置HAVP,我们可以使用以下命令启动它:
sudo service havp restart
服务重新启动命令应静默完成; 控制台上不应显示任何消息。
检查日志
HAVP存储在其日志文件/var/log/havp
目录。 错误和初始化信息进入error.log
文件。 您可以通过检查此文件来检查HAVP的状态。
sudo tail /var/log/havp/error.log
该tail
命令显示文件的最后几行。 如果HAVP已成功启动,您将看到类似下面所示的输出。 当然,日期和时间将是您的系统的:
Output17/06/2015 12:48:13 === Starting HAVP Version: 0.92
17/06/2015 12:48:13 Running as user: havp, group: havp
17/06/2015 12:48:13 --- Initializing Clamd Socket Scanner
17/06/2015 12:48:22 Clamd Socket Scanner passed EICAR virus test (Eicar-Test-Signature)
17/06/2015 12:48:22 --- All scanners initialized
17/06/2015 12:48:22 Process ID: 3896
第5步 - 测试HAVP
在本节中,我们将确保HAVP实际上阻止病毒。
上面显示的日志中提到一种叫做EICAR virus test
。
在初始化时HAVP使用特殊构造的病毒签名测试病毒扫描程序引擎。 所有病毒扫描程序软件检测包含此(无害)签名的文件作为病毒。 你可以得到有关的EICAR更多信息EICAR设计用途页。
让我们用EICAR文件进行我们自己的手动测试,并看到HAVP和ClamAV阻止它。
我们将使用wget
命令行实用程序从EICAR网页上下载文件。
首先,下载EICAR测试文件而不使用代理:
wget http://www.eicar.org/download/eicar.com -O /tmp/eicar.com
您的服务器将下载文件而不投诉:
Outputconverted 'http://www.eicar.org/download/eicar.com' (ISO-8859-1) -> 'http://www.eicar.org/download/eicar.com' (UTF-8)
--2015-06-16 13:53:41-- http://www.eicar.org/download/eicar.com
Resolving www.eicar.org (www.eicar.org)... 188.40.238.250
Connecting to www.eicar.org (www.eicar.org)|188.40.238.250|:80... connected.
HTTP request sent, awaiting response... 200 OK
Length: 68 [application/octet-stream]
Saving to: '/tmp/eicar.com'
/tmp/eicar.com 100%[=====================>] 68 --.-KB/s in 0s
2015-06-16 13:53:41 (13.7 MB/s) - '/tmp/eicar.com' saved [68/68]
正如你所看到的, wget
下载含有病毒签名毫无怨言的测试文件。
现在让我们尝试下载与我们新配置的代理相同的文件。 我们将环境变量设置http_proxy
我们HAVP地址和端口。
http_proxy=127.0.0.1:8080 wget http://www.eicar.org/download/eicar.com -O /tmp/eicar.com
输出:
Outputconverted 'http://www.eicar.org/download/eicar.com' (ISO-8859-1) -> 'http://www.eicar.org/download/eicar.com' (UTF-8)
--2015-06-25 20:47:38-- http://www.eicar.org/download/eicar.com
Connecting to 127.0.0.1:8080... connected.
Proxy request sent, awaiting response... 403 Virus found by HAVP
2015-06-25 20:47:39 ERROR 403: Virus found by HAVP.
我们的代理成功拦截了下载并阻止了病毒。
EICAR还提供了一个隐藏在ZIP压缩文件中的病毒签名文件。
您可以使用以下命令测试HAVP使用ZIP压缩文件扫描文件:
http_proxy=127.0.0.1:8080 wget http://www.eicar.org/download/eicarcom2.zip -O /tmp/eicarcom2.zip
输出:
Outputconverted 'http://www.eicar.org/download/eicarcom2.zip' (ISO-8859-1) -> 'http://www.eicar.org/download/eicarcom2.zip' (UTF-8)
--2015-06-25 20:48:28-- http://www.eicar.org/download/eicarcom2.zip
Connecting to 127.0.0.1:8080... connected.
Proxy request sent, awaiting response... 403 Virus found by HAVP
2015-06-25 20:48:28 ERROR 403: Virus found by HAVP.
HAVP(与ClamAV)再次发现病毒。
第6步 - 安装Privoxy
到目前为止,我们已经配置了一个代理服务器来扫描网页的病毒。 广告和跟踪Cookie如何? 在此步骤中,我们将安装和配置Privoxy。
阻止广告对依赖广告以支付运营成本的网站是有害的。 请考虑向您信任和频繁的网站添加例外。
使用以下命令安装Privoxy:
sudo apt-get install privoxy
Privoxy的配置驻留在该文件中/etc/privoxy/config
。 在开始使用Privoxy之前,我们需要设置两个参数。
在您喜欢的编辑器中打开配置文件。
sudo vi /etc/privoxy/config
现在取消注释并设置以下两个参数:
listen-address 127.0.0.1:8118
. . .
hostname your_server
参数listen-address
确定哪个IP和端口的Privoxy运行。 默认值是localhost:8118
; 我们将其更改为127.0.0.1:8118
。
参数hostname
指定的Privoxy上运行日志主机; 请将其设置为服务器的主机名或DNS地址。 它可以是任何有效的主机名。
现在,使用其新配置重新启动Privoxy。
sudo service privoxy restart
第7步 - 将HAVP链接到Privoxy
HAVP和Privoxy都是HTTP代理服务器。 现在,我们将链中两个代理服务器,这样,当你的客户从HAVP请求一个网页,它会转发这个请求Privoxy的。 Privoxy将检索请求的网页,删除隐私威胁和广告,然后HAVP将进一步处理响应并删除病毒和恶意代码。
将HAVP配置文件加载到您喜欢的文本编辑器:
sudo vi /etc/havp/havp.config
取消以下行(删除#
在行的开头字符)并按下图所示设置它们的值。 Privoxy的运行在IP 127.0.0.1
和端口8118
。
PARENTPROXY 127.0.0.1
PARENTPORT 8118
保存更改并退出文件。
重新启动HAVP以使更改生效:
sudo service havp restart
检查HAVP的错误日志,采取的音符Use parent proxy: 127.0.0.1:8118
消息。
sudo tail /var/log/havp/error.log
输出:
Output17/06/2015 12:57:37 === Starting HAVP Version: 0.92
17/06/2015 12:57:37 Running as user: havp, group: havp
17/06/2015 12:57:37 Use parent proxy: 127.0.0.1:8118
17/06/2015 12:57:37 --- Initializing Clamd Socket Scanner
17/06/2015 12:57:37 Clamd Socket Scanner passed EICAR virus test (Eicar-Test-Signature)
17/06/2015 12:57:37 --- All scanners initialized
17/06/2015 12:57:37 Process ID: 4646
我们的代理服务器配置现已完成。 让它再次与EICAR病毒测试。
http_proxy=127.0.0.1:8080 wget http://www.eicar.org/download/eicarcom2.zip -O /tmp/eicarcom2.zip
如果你的配置还是不错的,你应该再次看到ERROR 403: Virus found by HAVP
消息。
第8步 - 为OpenVPN服务器设置DNS选项
虽然OpenVPN服务器的默认配置足以满足我们的需求,但可以提高一点。
在文本编辑器中加载OpenVPN服务器的配置文件:
sudo vi /etc/openvpn/server.conf
默认情况下,OpenVPN配置为使用OpenDNS的服务器。 如果你想改变它使用谷歌的DNS服务器,修改dhcp-option DNS
下面的参数。
添加一个新行push "register-dns"
其中一些Windows客户端可能需要以使用的DNS服务器。
此外,添加新行push "block-ipv6"
来阻止IPv6的同时连接到VPN。 (IPv6流量可以绕过我们的VPN服务器。)
以下是此部分应该是什么样子:
push "dhcp-option DNS 8.8.8.8"
push "dhcp-option DNS 8.8.4.4"
push "register-dns"
push "block-ipv6"
如果你想允许多个客户端使用相同的OVPN文件连接,取消注释以下行。 (这是方便,但不更安全!)
duplicate-cn
重新启动OpenVPN服务以使更改生效。
sudo service openvpn restart
第9步 - 配置透明代理
我们现在将设置我们的隐私服务器来拦截其客户端(您的浏览器)和互联网之间的HTTP流量。
启用数据包转发
对于我们的服务器将HTTP流量转发到代理服务器,我们需要启用数据包转发。 你应该已经在OpenVPN设置教程中启用它。
使用以下命令测试配置。
sudo sysctl -p
它应该显示更改的参数如下。 如果没有,请重新访问OpenVPN教程。
Outputnet.ipv4.ip_forward = 1
配置UFW
我们需要将源自OpenVPN客户端的HTTP数据包转发到HAVP。 我们将使用ufw
用于此目的。
首先,我们需要允许源自OpenVPN客户端的流量
sudo ufw allow in on tun0 from 10.8.0.0/24
在OpenVPN的教程中,你应该已经改变了/etc/ufw/before.rules
文件,并增加了OpenVPN的一些规则。 现在我们将重新访问同一个文件并为透明代理配置端口重定向。
sudo vi /etc/ufw/before.rules
更改您在OpenVPN配置中添加的行,如下所示。 将行添加为红色。
# START OPENVPN RULES
# NAT table rules
*nat
:PREROUTING ACCEPT [0:0]
:POSTROUTING ACCEPT [0:0]
# transparent proxy
-A PREROUTING -i tun+ -p tcp --dport 80 -j REDIRECT --to-port 8080
# Allow traffic from OpenVPN client to eth0
-A POSTROUTING -s 10.8.0.0/8 -o eth0 -j MASQUERADE
COMMIT
# END OPENVPN RULES
重新加载防火墙配置。
sudo ufw reload
检查UFW的状态:
sudo ufw status
输出:
OutputStatus: active
To Action From
-- ------ ----
22 ALLOW Anywhere
1194/udp ALLOW Anywhere
Anywhere on tun0 ALLOW 10.8.0.0/24
22 ALLOW Anywhere (v6)
1194/udp ALLOW Anywhere (v6)
启用HAVP的透明模式
在前面的步骤中,我们强制所有HTTP数据包通过HAVP。 这种配置被称为透明代理 。
我们需要配置HAVP
本身。
sudo vi /etc/havp/havp.config
设置以下参数:
TRANSPARENT true
重新启动HAVP服务:
sudo service havp restart
我们的服务器现在可以使用。
第10步 - 测试客户端配置
在您的客户端(Windows,OS X,平板电脑...)将您的客户端连接到您的OpenVPN服务器。 请注意,您可以使用相同的.ovpn
从原来的OpenVPN的教程文件; 所有的更改都在服务器端。
为您的OpenVPN客户端详细的安装说明,请参阅安装客户端配置文件在Ubuntu 14.04教程。
VPN连接建立后,您应该在OpenVPN客户端日志中看到您首选的DNS设置。 以下示例取自IOS客户端。
DNS Servers
8.8.8.8
8.8.4.4
Search Domains:
如果你使用Tunnelblick,你可能会看到这样的行:
Changed DNS ServerAddresses setting from '8.8.8.8 208.67.222.222 8.8.4.4' to '8.8.8.8 8.8.4.4'
测试您的配置,转到[EICAR测试页]( www.eicar.org )在浏览器中,并尝试下载EICAR测试文件。 你应该看到一个HAVP -拒绝访问页面。
-
http://www.eicar.org/download/eicarcom2.zip
-
http://www.eicar.org/85-0-Download.html
第1步1 - 故障排除
本部分将帮助您解决一些常见问题。
无法观看视频或使用我最喜欢的网站
对于加载速度太慢的站点,可以将Privoxy配置为较不严格。 此行为是在配置user.action
配置文件。
将用户操作文件加载到您喜欢的文本编辑器中。
sudo vi /etc/privoxy/user.action
转到文件末尾并添加以下内容以及您需要的其他网站地址。
{ fragile -deanimate-gifs }
.googlevideo.com
.youtube.com
.imgur.com
.example.com
完成这些更改后,您不需要重新启动Privoxy。 但是,您应该清除浏览器的缓存并刷新几次。
如果仍然遇到问题,请将白名单网域添加到HAVP白名单文件。 HAVP将检查此文件,如果主机名匹配,则不执行病毒扫描。
vi /etc/havp/whitelist
在文件末尾添加您的网站。
# Whitelist Windowsupdate, so RANGE is allowed too
*.microsoft.com/*
*.windowsupdate.com/*
*.youtube.com/*
浏览器在大量使用Internet时停止响应
如果您一次打开多个网页,则服务器的内存可能不足以让HAVP扫描您的所有请求。
您可以尝试增加Droplet的RAM和/或添加交换内存。 请参阅如何在VPS配置虚拟内存(交换文件)的文章。
请记住,在大多数情况下,为您的浏览体验添加VPN会增加一些延迟。
结论
遵循本教程后,您将使用VPN的更高级别,浏览隐私和安全。