
1.简介
学校中的内容过滤这一主题颇具技巧性,并充满了信息,但是由于许多站点向安全HTTPS协议的过渡,该内容已经过时了,大多数提议的解决方案都无法使用该协议。 因此,我决定写从A到Z的最完整的文章,收集我在Google扩展中发现的所有信息。 本文专为管理领域的基础知识而设计,适合计算机科学教师使用。
2.职权范围
给定的: 436-FZ和一所学校,其中许多计算机通过MikroTik路由器或任何其他路由器进行联网并连接到Internet。
目标:通过白名单对除您心爱的学校管理人员之外的所有人进行HTTP和HTTPS内容过滤。
3.解决问题
发现未使用的台式计算机具有双核Intel-ohm,1 GB RAM和80 GB硬磁盘。
为了解决这个问题,将执行以下操作:
- 已安装Linux Ubuntu Server 18.04 LTS
- 透明代理Squid已在服务器上安装和配置,并通过具有HTTPS支持的源代码进行编译。
- 通过将请求重定向到Proxy或其他选项(最后),将服务器集成到子网中
让我们开始吧。
3.1。 安装和配置Ubuntu 18.04
安装过程很简单。 从官方站点下载Ubuntu Server 18.04发行版。 我建议使用旧的安装程序进行下载,因为新的安装程序(是我本人亲自安装的)在安装过程中会无休止地下载。 我们以任何方便的方式将图像写入USB闪存驱动器/磁盘。 对于在USB闪存驱动器上进行录制,我建议使用Rufus,并在录制开始时选择“录制DD图像”。 接下来,按照屏幕上的信息,安装系统。 我们只讨论组件的选择,您可以在其中立即选择OpenSSH就是这样。 我们不需要太多,但是我们需要安装所需的东西。
因此,已安装Ubuntu。 如果您有DHCP,则网络已配置。 我们将进入超级用户模式,这样每次我们都不会在命令中添加sudo。
sudo -s
输入密码并更新系统。
apt-get update apt-get upgrade
安装文本编辑器和文件管理器。
apt-get install nano mc
要将文件保存在
nano中 ,必须按
Ctrl + O,然后按
Y。 按下
Ctrl + X退出编辑器
。 您可以在退出前按
Ctrl + X,然后按
Y ,以立即保存文件。
要打开文件管理器,请输入
mc 。 典型的NortonCommander DOS或Windows TotalCommander / FAR带有两个面板。 尽管我习惯于使用控制台,但文件管理器有时还可以帮助例如更快地找到所需的文件。
如果您没有DHCP或想要一个服务器的单独IP地址(如我所愿),那么我们将继续进行配置。
配置静态IP地址与以前版本的Ubuntu不同,在新的18.04中,不再在通常的
/ etc / network / interfaces中配置
网络 ,而是通过
/etc/netplan/*.yaml文件中的
netplan进行配置 。 该文件的名称可能不同,但仅此名称而已。 / etc / network / interfaces本身给我们写了以下内容:

另外,如果您想从18.04之前的版本升级,网络设置将保持原样。 Netplan仅与18.04的全新安装有关。
让我们开始建立网络。
首先,让我们看一下分配给OS的网络接口的名称,并记住它。
ifconfig
现在打开设置文件。
nano /etc/netplan
它应该已经有一个DHCP设置。 让我们将文件转换为以下格式。
# This file describes the network interfaces available on your system # For more information, see netplan(5). network: version: 2 renderer: networkd ethernets: : dhcp4: no dhcp6: no addresses: [/24] gateway4: nameservers: addresses: [77.88.8.7, 77.88.8.3]
输入您的界面,地址和网关。 DNS建议不要使用这些内容-Yandex.DNS Children将作为附加保护。 在我的路由器中配置了相同的DNS。 无论如何,您都必须指定路由器分发的DNS。
在这里,您需要注意空格(即空格,而不是制表符)。 每个段落都与前一个空格分开。 例如,如果在名称服务器之后地址行不是由空格隔开,而是与上面的行对齐,那么当您尝试应用设置时,netplan将给出错误。
应用设置。
netplan apply
重新启动服务器,以防万一。
reboot
此外,如果netplan不适合,他还为DHCP和静态IP添加了备用网络配置选项。
备用网络设置在Ubuntu 18.04中,您可以通过
/ etc / network / interfaces返回熟悉的网络配置选项。 为此,文件本身指示您需要安装
ifupdown实用程序。 安装它:
apt-get install ifupdown
现在在netplan中打开初始设置文件
nano /etc/netplan
并注释掉其所有内容,以免发生冲突。
接下来,打开网络设置文件
nano /etc/network/interfaces
并添加到它:
用于静态IP
auto ___ iface ___ inet static address IP- netmask gateway dns-nameservers 77.88.8.7 77.88.8.3
用于动态(DHCP)
auto ___ iface ___ inet dhcp
重新启动服务器
reboot
如果您将此选项用于网络设置,则可以在“防火墙”设置中完全选择退出Webmin,并使用扰流板下的配置选项(尽管带有Webmin的变体也可以使用)
现在,您需要启用通过我们服务器的数据包传递。 打开文件
/etc/sysctl.conf nano /etc/sysctl.conf
我们在其中
寻找字符串
net.ipv4.ip_forward = 1并取消注释。 如果值为
0 ,则更改为
1 。
输入命令以应用设置
sysctl -p /etc/sysctl.conf
设置网络后,建议您直接进入终端并继续操作。 为此,如果在安装阶段未选择OpenSSH,请安装它。
apt-get install ssh
默认情况下,SSH已经配置为在端口22上用于用户/密码登录,但是您可以通过(例如)授权密钥和其他端口为自己配置SSH,以保护服务器免受外部攻击。 如何做到这一点充满了Internet上的信息。
作为终端,我使用XShell。 您可以使用自己喜欢的一种。
我们不需要DHCP服务器和第二个网卡,因为我们将使用路由器本身将用户请求重定向到代理。
奠定基础。 现在,让我们继续安装和配置Squid。
3.2。 使用HTTPS支持和列表过滤安装和配置Squid
3.2.1。 编译并安装Squid由于在存储库中没有现成的具有SSL支持的Squid软件包,因此您将不得不从源代码中手动组装它。 首先,使用存储库打开文件。
nano /etc/apt/sources.list
在其中,我们取消注释(在开头删除#)以
deb-src开头的行。
之后,我们将更新软件包。
apt-get update
接下来,安装组装工具。
apt-get install fakeroot build-essential devscripts
并添加所有必需的程序包。
apt-get build-dep squid3
安装该库以获得SSL支持。
apt-get install libssl1.0-dev
让我们转到主文件夹并为程序集创建一个文件夹,立即为其设置必要的权限。
cd ~ mkdir build chown _apt:root build
转到创建的文件夹并下载Squid源。
cd build apt-get source squid3
一个文件夹将出现在构建文件夹中,名称为squid3和发行版号。 在Ubuntu 18.04.3上为3.5.27。 让我们开始吧。
cd squid3-3.5.27
组装之前,必须指定选项。 与他们一起打开文件。
nano debian/rules
我们正在寻找选项列表,如图所示

添加以下选项。
--enable-ssl \ --enable-ssl-crtd \ --with-openssl
请注意,图片中已经添加了选项,并且
除最后一行
外,选项中的每行之后均应出现
“ \”字符。
因此,一切准备就绪。 现在让我们继续进入Squid源文件夹,尽管您应该已经在其中了。
cd ~/build/squid3-3.5.27
并输入要构建的命令。
debuild -d
组装将花费很长时间,平均花了我2到4个小时。 取决于计算机的速度。 在程序集的末尾,您将看到程序包签名错误。 这是正常现象-忽略该错误。
现在转到Build文件夹。
cd ~/build
并安装Squid。
dpkg -i squid*.deb
立即遇到关于不满足的依赖关系的错误,并输入命令
apt-get install -f
安装后,我们会标记软件包,以使它们在更新系统后不会被覆盖。
apt-mark hold squid apt-mark hold squid-common apt-mark hold squidclient
3.2.2。 配置鱿鱼和过滤因此,已经安装了Squid,仍然可以根据需要配置它。
所有设置都在
/etc/squid/squid.conf文件中。 它包含许多评论,乍一看似乎很复杂,但实际上没有什么超级复杂的。 首先,如果您突然想更详细地研究它,我们将通过首先复制原件将其从注释中清除。 为了方便起见,我们将直接转到带有Squid的文件夹。
cd /etc/squid cp squid.conf squid.conf.backup cat squid.conf.backup | egrep "^[^#]" > squid.conf
现在打开squid.conf
nano squid.conf
如您所见,他清除了评论,不再像看起来那样笨重。
在“破坏者”下,我将使用可以完美工作的设置来发布文件,在下面我将逐块描述内容和方式。
Squid.conf配置 acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist" http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1 ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB # cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320
第一个块如下。
acl localnet src 192.168.0.0/24 acl worktime time 08:00-15:00 acl SSL_ports port 443 acl Safe_ports port 80 # http acl Safe_ports port 21 # ftp acl Safe_ports port 443 # https acl Safe_ports port 70 # gopher acl Safe_ports port 210 # wais acl Safe_ports port 1025-65535 # unregistered ports acl Safe_ports port 280 # http-mgmt acl Safe_ports port 488 # gss-http acl Safe_ports port 591 # filemaker acl Safe_ports port 777 # multiling http acl CONNECT method CONNECT
他负责标准acl参数。 在其中,我们在localnet中将本地网络更改为我们自己的网络,并且还添加了acl的工作时间(可选)。 考虑到教师经常来找我抱怨他们找不到任何东西,一切都无法访问,我增加了工作时间。 当然,我很高兴一切都能正常运行,但是,坦白地说,我已经厌倦了听这些。 现在,我向他们报告他们的主张:15:00之后,过滤功能已关闭,他们可以自由地(几乎)找到所需的信息。 您可以添加时间,也可以全天候进行过滤,而无需添加此ACL。
第二个块定义了HTTP允许和禁止站点的列表,如下所示。
acl blacklist url_regex -i "/etc/squid/blacklist" acl whitelist url_regex -i "/etc/squid/whitelist"
稍后,我们将添加允许和禁止站点的列表,并将它们放置在acl中指定的文件中。
第三块通过HTTP确定访问参数,如下所示
http_access allow localhost http_access deny manager http_access deny !Safe_ports http_access deny CONNECT !SSL_ports http_access allow CONNECT http_access deny blacklist http_access allow whitelist http_access deny all worktime http_access allow all
这里的
http_access allow CONNECT项是必需的,因为没有它,Squid不会允许互联网上的任何人。 接下来是黑白名单上的规则。
deny和
allow参数分别
拒绝和
允许访问。 在它们出现之后,该规则将完全禁止在工作时间内使用所有HTTP通信。 如果您未设置工作时间,请删除
worktime ,并且该禁令将是永久性的。 重要的一点是规则的顺序,因为Squid从上到下读取它们
第四个块定义了Squid的端口设置。
http_port 3128 http_port 3129 intercept https_port 3130 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/squid.pem
第一个参数是必需的,以便“错误:未配置正向代理端口”错误不会无限出现在日志中。 它填充日志,并因此填充内存。 这是一个常见的错误,但是由于某种原因,在我们的细分市场中,我没有找到解决方法,外国论坛对此有所帮助。 第二个参数定义HTTP协议端口。
拦截意味着代理透明,也就是说,无需在每台计算机上规定设置。
第三个参数定义HTTPS端口及其选项。 这是一条长线。
squid.pem文件是我们的证书,我们将在以后创建。
第五块定义与Squid的SSL连接的参数。 他特别指出,所有流量都应立即引导到Internet,而不使用更高的缓存,并且后两者即使出现证书验证错误也允许连接,因为访问此类资源的决定必须由用户而非服务器决定。 看起来像这样。
always_direct allow all sslproxy_cert_error allow all sslproxy_flags DONT_VERIFY_PEER
第六块设置“黑名单”和“白名单”的acl参数(稍后将创建)以及HTTPS流量的拦截深度。
acl blacklist_ssl ssl::server_name_regex -i "/etc/squid/blacklist_ssl" acl whitelist_ssl ssl::server_name_regex -i "/etc/squid/whitelist_ssl" acl step1 at_step SslBump1
第七块使用HTTPS协议确定访问参数。 在这里,禁令和许可已经分别负责
终止和
拼接 。 同样,如果您没有指定的工作时间,请不要忘记删除工作时间。
ssl_bump peek step1 ssl_bump terminate blacklist_ssl ssl_bump splice whitelist_ssl ssl_bump terminate all worktime ssl_bump splice all sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB
第八块设置鱿鱼的缓存和日志。 此处仅值得注意
logfile_rotate参数,该参数指示存储日志的天数。
# cache_mem 512 MB maximum_object_size_in_memory 512 KB memory_replacement_policy lru cache_dir aufs /var/spool/squid 2048 16 256 # access_log daemon:/var/log/squid/access.log squid logfile_rotate 1 coredump_dir /var/spool/squid refresh_pattern ^ftp: 1440 20% 10080 refresh_pattern ^gopher: 1440 0% 1440 refresh_pattern -i (/cgi-bin/|\?) 0 0% 0 refresh_pattern (Release|Packages(.gz)*)$ 0 20% 2880 refresh_pattern . 0 20% 4320
这样就完成了squid.conf的设置。 我们保存文件并继续创建证书和列表。
让我们用鱿鱼去文件夹
cd /etc/squid/
并输入以下命令来创建证书
openssl req -new -newkey rsa:1024 -days 36500 -nodes -x509 -keyout squid.pem -out squid.pem
接下来,您将需要输入证书数据。 该证书的有效期为100年,可长时间忘记。 仅代理服务器才需要。
现在创建我们的列表文件。
touch blacklist touch whitelist cp whitelist whitelist_ssl cp blacklist blacklist_ssl
网站以正则表达式的形式列出。 例如,要解锁mail.ru,请打开
白名单 nano whitelist
并添加以下表达式。
mail\.ru
现在阻止Games.Mail.ru。 打开
黑名单 nano blacklist
并将以下表达式写入其中
games\.mail\.ru
由于通常情况下,黑名单阻止程序位于我们的白名单上方,因此当您切换到mail.ru时,该站点将按预期方式打开(图片除外,但稍后会更多),如果您尝试切换到游戏,请乌贼不会放手。
一些站点具有许多子域,子域等。 例如,mail.ru将其图像存储在imgsmail.ru上。 对于其他类似的网站,您需要在任何浏览器(我使用Chrome)中打开所需的网站,然后在开发人员工具中打开(在Chrome中,按F12即可调用它们)。

转到“源”选项卡,查看网站从哪些其他资源加载信息。
添加站点后,将它们复制到HTTPS列表中。
cp whitelist whitelist_ssl cp blacklist blacklist_ssl
列表填充提示在您的计算机上创建一个纯文本文件,找到并将允许的站点列表复制到其中,然后将其添加到您的计算机中。 然后,在常规笔记本中,用斜杠(\。)自动替换该点,并使用相同的自动替换(www,http,“ /”字符等)删除不必要的点。 然后,可以使用终端将此类文件立即复制到服务器上的工作表中。
现在检查配置。
squid -k check
如果一切正常,请停止鱿鱼。
/etc/init.d/squid stop
重建缓存
squid -z
再次运行乌贼
/etc/init.d/squid start
对列表或Squid配置进行任何更改后,必须使用以下命令重新加载它
/etc/init.d/squid restart
您还可以在路径
/ usr / share / squid / errors /〜Russian-1251下更改访问限制页面(仅在HTTP上有效)。 在文件夹中查找
ERR_ACCESS_DENIED文件并进行编辑。 文件语法为HTML。
3.3。 监视服务器状态并配置防火墙
要监视服务器的状态,请安装
Webmin实用程序,并借助它配置防火墙。 此外,通过它,您可以监视CPU,RAM等的状态,更新软件包,添加和配置组件等等。 它有自己的终端,尽管笨拙。 该实用程序可通过任何浏览器运行,因此,您可以从网络上的任何计算机连接到我们的服务器,这虽然不安全,但也很方便。 如果需要,可以将连接仅限制为Webmin本身的“ IP访问控制”中的各个IP地址。
开始安装之前,请添加Webmin存储库。 打开sources.list。
nano /etc/apt/sources.list
并在下面添加行。
deb http:
现在,在Webmin资源库中安装用于签名软件包的GPG密钥
cd /root wget http:
接下来,我们更新软件包列表并安装实用程序
apt-get update apt-get install webmin
您可以通过输入地址栏在任何浏览器中连接到服务器
IP__:10000
默认情况下,Webmin通过SSL连接,并且大多数浏览器都会给出不受信任的证书错误。 为了不每次都选择信任,请禁用SSL。 为此,请打开文件
/etc/webmin/miniserv.conf nano /etc/webmin/miniserv.conf
在其中找到字符串
ssl = 1并将其替换为
ssl = 0 。 在同一文件中,您可以更改连接端口。 默认情况下为10000。您可以放置任意一个。
连接到Webmin后,转到
Webmin-> Webmin配置 ,然后将语言切换为俄语。 然后转到
网络->防火墙 。 默认情况下,我们的防火墙是干净的。 我们转到最底部,在“
启动时启用”对面选择
“是” 。 单击
“应用配置” 。 现在,我们的防火墙设置已在
/etc/webmin/firewall/iptables.save文件中指定,并随系统一起启动。 如果没有这样的文件,请查看Webmin中“防火墙”选项卡上“带有规则的文件”行中写的内容。 让我们在终端中打开它。
nano /etc/webmin/firewall/iptables.save
我们转到
* nat块,最后在
COMMIT之前添加以下规则。
-A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130
这些规则将流向服务器端口80(HTTP)和443(HTTPS)的流量定向到我们的Squid端口。 在这里,我介绍了DNAT和REDIRECT规则的两种变体。 您可以同时使用它们,也可以通过放置适当的端口来选择一个选项。
配置FIrewall以进行备用网络设置如果您使用了上述替代网络设置,则此选项适用。
首先,使用防火墙规则创建一个文件,并赋予其执行权。
touch /etc/nat chmod +x /etc/nat
打开它
nano /etc/nat
并添加以下内容
#!/bin/sh #Firewall iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 80 -j DNAT --to-destination ip_:3129 iptables -t nat -A PREROUTING -p tcp -m tcp -i _ --dport 443 -j REDIRECT --to-ports 3130
与Webmin一样,我用DNAT和REDIRECT提出了规则的两个变体。 您可以同时使用它们,也可以通过放置适当的端口来选择一个选项。
现在,在启动网络后立即将我们的文件添加到下载文件中。 打开网络设置文件
nano /etc/network/interfaces
并在文件底部添加该行
post-up /etc/nat
PS:该选项的优点是将来您可以通过编辑/ etc / nat文件来添加自己的规则。 Webmin有点复杂。
这样就完成了服务器设置。 重新启动它。
reboot
让我们继续设置MikroTik路由器。
3.4。 配置MikroTik路由器以将流量重定向到代理
我们假设您已经下载了
WinBox实用程序进行远程控制,已配置Internet和本地网络,路由器上的防火墙是干净的。 您知道LAN接口的名称(可以在
IP-DHCP Server-DHCP中看到它)。
a)转到WinBox,转到
IP-DHCP服务器-租赁 。 在列表中,我们寻找无法进行过滤的IP计算机(导演,管理),右键单击它们,然后在菜单中选择“
设为静态 ”。 在它们旁边,字母“ D”应消失,表示动态。 现在,无论租用时间长短,这些地址都将立即通过MAC地址静态分配给这些计算机。 如果通过Wi-Fi和电缆使用笔记本电脑,则必须在两个MAC地址上选择“设为静态”。
b)接下来,转到
IP-防火墙-地址列表 ,然后单击蓝色
加号
“ +” 。 在
名称字段中,为我们的一组
明亮的未过滤地址指定名称,例如“ Admins”。 在
地址字段中,从已分配静态IP地址的
地址中指定一个IP地址。 我们对每个地址重复此操作,在带有箭头的“名称”字段中选择我们的组。
c)转到同一
IP-防火墙中的
Mangle选项卡,然后单击
“ +” 。 将打开一个选项卡式窗口。 在“
常规”选项卡上,填写以下字段:
Chain - Prerouting Src. Address - __proxy Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __
在“
操作”选项卡上,检查值“
接受” ,然后单击“确定”。
重复该过程,但在
Dst字段中
。 端口将值设置为
443 。
d)再次单击“ +”,然后在“
常规”选项卡上再次填写以下字段:
Chain - Prerouting Protocol - 6 (tcp) Dst. Port - 80 In. Interface - __
转到“ 高级”选项卡,然后在“ 源代码”字段中。地址列表选择我们的“ 管理员 ” 管理地址列表。确保单击列表旁边出现的框。将会出现一个感叹号“!”。,表示逻辑非或负逻辑。转到“ 操作”标签,然后填写以下字段: Action - mark routing New Routing Mark - to_proxy Passthrough -
单击“确定”并执行相同的操作,但在“目标”字段中。端口指定值443。e)最后,添加最后一条规则。单击加号,然后在“ 常规”选项卡上填写以下字段: Chain - Prerouting In. Interface - __ Routing Mark - to_proxy
结果,您的参数将发生以下情况。订单很重要!
f)我们进入IP-路由,然后按“ +”。填写以下字段: Dst. Address - 0.0.0.0/0 Gateway - __proxy Routing Mark - to_proxy
单击确定,仅此而已。打开服务器后,所有HTTP和HTTPS流量都将通过我们的Squid。3.5。MikroTik和其他路由器的替代设置
此选项既适用于MikroTik路由器,也适用于任何其他路由器,即使是最简单的路由器也适用(除了租用的提供商,您自己知道什么)。在这种情况下,我们不是在路由器上而是在Squid本身上实现Internet访问共享。因此,让我们开始吧。
a)我们将假定您已完成上述所有步骤,包括在MikroTik中设置重定向到代理的位置,从而达到了这一点。为了使所描述的选项无故障运行,我们需要取消本文第3.4段的e)项。您可以取消整个点3.4(也许保留a子节,这样我们的IP不会改变),但这是可选的-对我们来说取消路由本身很重要。为此,请转到IP-路线,查找我们的路线,选择它并单击红叉(不是加号,而是复选标记旁边的叉)。该路线将变为灰色=>禁用。过滤功能也已关闭,现在所有客户端都直接通过路由器进入Internet。b)现在转到我们的服务器,并转到包含Squid的文件夹 cd /etc/squid/
打开配置文件 nano squid.conf
然后在块中添加:在 acl localnet行之后的第一个块中 ... acl admins src "/etc/squid/admins-ip" # IP acl students src "/etc/squid/students-ip" # IP
我们不需要教师计算机的清单,因为据了解其他所有人都是教师。但是您可以自己添加其他块中的相应规则。在第二块 acl whitelist-stud url_regex -i "/etc/squid/whitelist-stud" #
在 http_access之后的第三个区块中拒绝黑名单 http_access allow admins # http_access allow students whitelist-stud # http_access deny students #
此外,由于教师(所有其他IP)紧随其后,按白名单和在工作时间(如果有)进行过滤,因此该块保持不变。您还可以通过将禁止规则设置为禁止规则之上,或将单独的IP(例如,您自己的IP)添加到单独的ACL中,并将其放入黑名单之上的规则中,来让管理员组绕过黑名单。第四和第五块保持不变。在第六块中,添加 acl whitelist-stud_ssl ssl::server_name_regex -i "/etc/squid/whitelist-stud_ssl"
在第七块中,在ssl_bump终止blacklist_ssl后添加 ssl_bump splice admins ssl_bump splice students whitelist-stud_ssl ssl_bump terminate students
原理与第三块相同。其余的保持不变。保存并退出c)现在创建我们的IP地址列表。 touch admins-ip touch students-ip
以及学生的白名单。 touch whitelist-stud cp whitelist-stud whitelist-stud_ssl
将所需的IP地址和站点添加到适当的列表。在学生站点列表中,您可以通过删除学生不需要的站点来复制教师列表。在Linux上复制文件由以下命令完成 cp < > < >
重启鱿鱼 /etc/init.d/squid restart
d)我们谈到了最重要的事情,即如何使客户通过我们的代理服务器上网。我们需要将DHCP服务器的网关从路由器的地址更改为服务器的地址。当然,为此,服务器地址必须是静态的或绑定到MAC。在MikroTik中:转到IP-DHCP服务器-网络,然后双击我们的网络。在“网关”字段中,将路由器的地址更改为代理服务器的地址。单击确定,仅此而已。您可以重新启动路由器,以便为所有活动客户端正确更新设置。此后,客户端可能会将网络类型更改为公共网络(如果是私有网络)。在普通路由器中:在路由器的手册中查找更改DHCP服务器网关的位置,但我会说一下其设置:)底线:作为此替代解决方案的结果,我们能够按IP和列表微调访问权限,并在Squid日志中获取客户端的常规IP地址。如果您需要一些客户端通过路由器绕过Proxy来联机,请阅读破坏者。4.结论
因此,总结以上所有内容。我们设法从头开始安装和配置Linux Ubuntu 18.04 LTS,构建并安装具有HTTPS支持的Squid,配置白名单过滤,将代理服务器集成到我们的网络中,而无需安装其他DHCP服务器。5.来源清单
创建文章时,使用了Interface LLC技术博客和Web安全专家的站点-Web Filter for Your Network的各种材料以及个人知识和经验。在编辑和补充本文时,以下用户提供了很多帮助:Kanlas,PetRiot和Barsook。非常感谢他们的帮助和帮助。6.作者的评论
- 必须在超级用户模式下完成服务器的任何工作,方法是在命令前添加sudo或一次输入sudo -s命令。
- Squid \ , , , . .
- , . , 1000 .
, IP- Squid. Squid IP- — Mikrotik. , DHCP , . , , , IP . — Barsook- 为了使Squid与大量客户端(超过50个)一起使用,至少需要1 GB的RAM。更优选地,因为鱿鱼吞噬了记忆。您可以通过输入top命令来检查内存状态。
- 我建议同时使用这两个选项来配置路由器,因为如果您在网络设置(路由器本身)中明确指定了其他网关,则可以绕过锁定。
UPD1:添加了备用网络配置,而防火墙UPD2:添加了备用路由器配置选项,解决了在Squid日志中显示地址的问题。UPD3:在3.1中添加了一个修复程序-使数据包能够通过服务器,而他最初忘记添加该数据包。否则,Internet无法正常工作。感谢Dmitry1986对文章的测试。