Как SQUID следит за http и https трафиком

Posted by

Сегодня я покажу, как реализовать вот такую вот схему:

Компьютер с двумя сетевыми картами, одна eth0 смотрит в интернет, а другая eth1 смотрит в локальную сеть. Далее на этой системе будет развернут пакет DNSMASQ (для управления DNS и DHCP в локальной сети) и пакет SQUID версии 3.5.19 с поддержкой анализа, как трафика http так и зашифрованного трафика https на котором уже большинство ресурсов работает. Также будет разобрано, как получать статистику использования интернета не по назначению. Для чего все это? — дело в том, что на текущем месте поставили задачу нужно руководству предоставлять статистику по сотрудникам как они в рабочее время используют ресурсы интернета, а то что-то в последнее время упала производительность отделов и нужно это хоть как-то обосновать перед учредителями. Ну это если честно не моё дело, мне поручено предоставить сформированную статистику, чем я и займусь в рамках описания пошаговых действий.

И так в моем распоряжении система (.5 Server amd64) со следующими характеристиками:

  • CPU = 2
  • HDD = 50
  • RAM = 2

если нужно будет больше, то HDD я расширю через LVM (система обязательно должна стоять на LVM разделе), а CPU & RAM через vSphere Client в свойствах виртуальном машины, физическое же использование серверов уже подошло к концу или применяется под выполнение конкретных задач, я же с таким редко сталкиваюсь, а потому стараюсь задействовать виртуализацию.

Начинаю…

Шаг №1: Настройка сетевых интерфейсов:

ekzorchik@srv-host:~$ sudo nano /etc/network/interfaces

auto eth0

iface eth0 inet dhcp

auto eth1

iface eth1 inet static

address 10.90.90.1

netmask 255.255.255.0

ekzorchik@srv-host:~$ sudo ifup eth1

(У меня интерфейс eth0 получает от Mikrotik (который является шлюзом в интернет) сетевой адрес который прописан, как статика для данной системы)

Шаг №2: Привожу систему к актуальному состоянию в рамках текущего релиза Ubuntu Trusty:

ekzorchik@srv-host:~$ sudo rm -Rf /var/lib/apt/lists/

ekzorchik@srv-host:~$ sudo apt-get update && sudo apt-get upgrade -y

Итого информация по системе:

ekzorchik@srv-host:~$ uname -a && lsb_release -a

Linux srv-host 3.19.0-25-generic #26~14.04.1-Ubuntu SMP Fri Jul 24 21:16:20 UTC 2015 x86_64 x86_64 x86_64 GNU/Linux

No LSB modules are available.

Distributor ID: Ubuntu

Description: Ubuntu 14.04.5 LTS

Release: 14.04

Codename: trusty

Шаг №3: Указываю именование системы, настраиваю часовой пояс, время:

ekzorchik@srv-host:~$ sudo nano /etc/hosts

10.90.90.1 srv-host.polygon.local srv-host

ekzorchik@srv-host:~$ sudo nano /etc/hostname

srv-host.polygon.local

ekzorchik@srv-host:~$ sudo apt-get install ntpdate ntp -y

ekzorchik@srv-host:~$ sudo nano /etc/ntp.conf

server <IP_ADDRESS_MIKROTIK>

Шаг №4: Устанавливаю пакет dnsmasq и настраиваю его:

ekzorchik@srv-host:~$ sudo apt-get install dnsmasq -y

ekzorchik@srv-host:~$ dnsmasq --version | head -n 1

Dnsmasq version 2.68 Copyright (c) 2000-2013 Simon Kelley

ekzorchik@srv-host:~$ sudo cp /etc/dnsmasq.conf /etc/dnsmasq.conf.backup

ekzorchik@srv-host:~$ sudo bash -c "cat > /etc/dnsmasq.conf"

^C — по клавиатурному сочетанию Ctrl + C прерываем выполнение команды выше по очистке содержимого файла /etc/dnsmasq.conf

ekzorchik@srv-host:~$

ekzorchik@srv-host:~$ sudo nano /etc/dnsmasq.conf

interface=eth1

resolv-file=/etc/resolv.dnsmasq.conf

domain=polygon.local

server=/polygon.local/10.90.90.1

server=/90.90.10.in-addr.arpa/10.90.90.1

dhcp-range=10.90.90.20,10.90.90.30,1D

dhcp-option=3,10.90.90.1

dhcp-leasefile=/var/lib/misc/dnsmasq.leases

log-queries

log-facility=/var/log/dnsmasq.log

dhcp-option=1,255.255.255.0

Проверяю конфигурационный файл /etc/dnsmasq.conf на корректность:

ekzorchik@srv-host:~$ /usr/sbin/dnsmasq --test

dnsmasq: syntax check OK.

Советую после внесения изменений в файл /etc/dnsmasq.conf делать (stop && start, restart у меня почему-то не отрабатывал и я кучу времени убил на это чтобы выяснить):

ekzorchik@srv-host:~$ sudo /etc/init.d/dnsmasq stop

ekzorchik@srv-host:~$ sudo /etc/init.d/dnsmasq start

Снимаем символ комментария со строки в файле dhclient.conf:

ekzorchik@srv-host:~$ sudo nano /etc/dhcp/dhclient.conf

prepend domain-name-servers 127.0.0.1;

Шаг №5: Нужно настроить правила маршрутизации для обработки соединений от локальной сети.

ekzorchik@srv-host:~$ sudo ufw enable

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y

Firewall is active and enabled on system startup

ekzorchik@srv-host:~$ sudo nano /etc/default/ufw

IPV6=no

DEFAULT_FORWARD_POLICY="ACCEPT"

ekzorchik@srv-host:~$ sudo nano /etc/ufw/sysctl.conf

net/ipv4/ip_forward=1

#IPv6

net.ipv6.conf.all.disable_ipv6=1

net.ipv6.conf.default.disable_ipv6=1

net.ipv6.conf.lo.disable_ipv6=1

ekzorchik@srv-host:~$ sudo ufw default deny

Default incoming policy changed to 'deny'

(be sure to update your rules accordingly)

ekzorchik@srv-host:~$ sudo ufw allow ssh

Для DNS — это 53 порт (TCP+UDP)

ekzorchik@srv-host:~$ sudo ufw allow domain

Для DHCP — это порт 67 и 68 UDP

ekzorchik@srv-host:~$ sudo ufw allow from any port 68 to any port 67 proto udp

ekzorchik@srv-host:~$ sudo ufw logging on

ekzorchik@srv-host:~$ sudo nano /etc/ufw/before.rules

*nat

:POSTROUTING ACCEPT [0:0]

-A POSTROUTING -s 10.90.90.0/24 -o eth0 -j MASQUERADE

COMMIT

ekzorchik@srv-host:~$ sudo ufw disable && sudo ufw enable

Firewall stopped and disabled on system startup

Command may disrupt existing ssh connections. Proceed with operation (y|n)? y

Firewall is active and enabled on system startup

ekzorchik@srv-host:~$ sudo ufw reload

ekzorchik@srv-host:~$ sudo ufw status

Шаг №6: Проверяю, что рабочие станции в локальной сети за данной системой (srv-host) получают (если не получают то попробуйте прописать вручную, если работает то значит Вы что-то намудрили в конфигурационном файле dnsmasq.conf) сетевой адрес из диапазона и видят интернет.

C:\Windows\system32>ping ya.ru

Обмен пакетами с ya.ru [93.158.134.3] с 32 байтами данных:

Ответ от 93.158.134.3: число байт=32 время=8мс TTL=53

Ответ от 93.158.134.3: число байт=32 время=7мс TTL=53

Шаг №7: Теперь собственно самый ответственный шаг — это установка и настройка squid на данной Ubuntu‘овской системе которая в настоящий момент выполняет роль шлюза ориентированного для малой сети, где использование домен контроллера не оправдано (к примеру сеть полностью состоит из Linux машин, или парк машин ограничен малым числом, и т.д).

Текущая версия squid из дефолтных репозитариев слишком стара, а потому я произведу установку репозитария в котором я убедился присутствует версию deb пакета squid равным 3.5.19

ekzorchik@srv-host:~$ apt-cache show squid3 | grep Version

Version: 3.3.8-1ubuntu6.8

Version: 3.3.8-1ubuntu6

ekzorchik@srv-host:~$ sudo nano /etc/apt/sources.list

deb http://ubuntu.diladele.com/ubuntu trusty main

deb-src http://ubuntu.diladele.com/ubuntu trusty main

На заметку: советую выделить отдельно стоящую систему на которой развернуть сервер кэширующих пакетов (deb), в частности задействовав утилиту apt-cacher. Этим вы всегда будете иметь все пакеты (deb-пакеты) которые вы когда либо ставили, по сути это будет Ваша резервная копия и Вы не будете зависеть ни от кого.

Обновляю информацию по репозитариям добавленным в систему:

ekzorchik@srv-host:~$ sudo apt-get update

Теперь смотрю какая версия squid мне доступна для установки:

ekzorchik@srv-host:~$ apt-cache show squid3 | grep Version

Version: 3.5.19-1

Version: 3.3.8-1ubuntu6.8

Version: 3.3.8-1ubuntu6

Отлично, а теперь приступаю к установке:

ekzorchik@srv-host:~$ nano script-tools.sh

# install build tools

apt-get -y install devscripts build-essential fakeroot debhelper dh-autoreconf cdbs

# install build dependences for squid

apt-get -y build-dep libecap

apt-get -y build-dep squid3

# uninstall libecap2 as we will be using the libecap3

apt-get -y --purge remove libecap2-dev libecap2

# install additional packages for new squid

apt-get -y install nettle-dev libgnutls28-dev libssl-dev libdbi-perl

ekzorchik@srv-host:~$ sudo sh ./script-tools.sh

После ставлю пакет libecap3:

ekzorchik@srv-host:~$ sudo apt-get install libecap3 libecap3-dev -y --force-yes

А теперь ставлю Squid версии 3.5.19 с поддержкой OpenSSL:

ekzorchik@srv-host:~$ sudo apt-get install squid-langpack squid-common squid squidclient -y --force-yes

ekzorchik@srv-host:~$ squid -v

Squid Cache: Version 3.5.19

Service Name: squid

Ubuntu linux

configure options: '--build=x86_64-linux-gnu' '--prefix=/usr' '--includedir=${prefix}/include' '--mandir=${prefix}/share/man' '--infodir=${prefix}/share/info' '--sysconfdir=/etc' '--localstatedir=/var' '--libexecdir=${prefix}/lib/squid3' '--srcdir=.' '--disable-maintainer-mode' '--disable-dependency-tracking' '--disable-silent-rules' 'BUILDCXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -D_FORTIFY_SOURCE=2 -Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' '--datadir=/usr/share/squid' '--sysconfdir=/etc/squid' '--libexecdir=/usr/lib/squid' '--mandir=/usr/share/man' '--enable-inline' '--disable-arch-native' '--enable-async-io=8' '--enable-storeio=ufs,aufs,diskd,rock' '--enable-removal-policies=lru,heap' '--enable-delay-pools' '--enable-cache-digests' '--enable-icap-client' '--enable-follow-x-forwarded-for' '--enable-auth-basic=DB,fake,getpwnam,LDAP,NCSA,NIS,PAM,POP3,RADIUS,SASL,SMB' '--enable-auth-digest=file,LDAP' '--enable-auth-negotiate=kerberos,wrapper' '--enable-auth-ntlm=fake,smb_lm' '--enable-external-acl-helpers=file_userip,kerberos_ldap_group,LDAP_group,session,SQL_session,time_quota,unix_group,wbinfo_group' '--enable-url-rewrite-helpers=fake' '--enable-eui' '--enable-esi' '--enable-icmp' '--enable-zph-qos' '--enable-ecap' '--disable-translation' '--with-swapdir=/var/spool/squid' '--with-logdir=/var/log/squid' '--with-pidfile=/var/run/squid.pid' '--with-filedescriptors=65536' '--with-large-files' '--with-default-user=proxy' '--with-openssl' '--enable-ssl' '--enable-ssl-crtd' '--enable-build-info=Ubuntu linux' '--enable-linux-netfilter' 'build_alias=x86_64-linux-gnu' 'CFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security -Wall' 'LDFLAGS=-Wl,-Bsymbolic-functions -fPIE -pie -Wl,-z,relro -Wl,-z,now' 'CPPFLAGS=-D_FORTIFY_SOURCE=2' 'CXXFLAGS=-g -O2 -fPIE -fstack-protector --param=ssp-buffer-size=4 -Wformat -Werror=format-security'

Определяю местонахождение конфигурационного файла:

ekzorchik@srv-host:~$ sudo updatedb

ekzorchik@srv-host:~$ sudo locate squid.conf

/etc/squid/squid.conf

/usr/share/doc/squid-common/squid.conf.documented.gz

/var/lib/dpkg/info/squid.conffiles

Делаю резервную копию дефолтного конфигурационного файла:

ekzorchik@srv-host:~$ sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.backup

Очищаю содержимое конфигурационного файла squid.conf, т. к. в нем будет содержаться только то, что необходимо мне в рамках данной заметки:

ekzorchik@srv-host:~$ sudo bash -c "cat > /etc/squid/squid.conf"

Теперь создаю сертификат текущего сервера с которым будет работать SQUID:

ekzorchik@srv-host:~$ sudo mkdir /etc/squid/ssl

ekzorchik@srv-host:~$ cd /etc/squid/ssl/

ekzorchik@srv-host:/etc/squid/ssl$ sudo openssl req -new -newkey rsa:2048 -days 3650 -nodes -x509 -keyout squidca.pem -out squidca.pem

Common Name (e.g. server FQDN or YOUR name) []:<указываем IP&FQDN имя текущего сервера который смотрит в локальную сеть, в моем случае это 10.90.90.1>

Ограничиваем доступ к полученному приватному ключу squidca.pem:

ekzorchik@srv-host:/etc/squid/ssl$ sudo chmod 400 squidca.pem
ekzorchik@srv-host:/etc/squid/ssl$ cd ~/

А теперь собственно и конфигурационный файл squid.conf:

На заметку: описание директив для данной версии SQUID можно найти здесь: http://www.squid-cache.org/Versions/v3/3.5/cfgman/

ekzorchik@srv-host:~$ sudo nano /etc/squid/squid.conf

######################################

# Обслуживаемые прокси-сервером сети #

######################################

acl localnet src 10.90.90.0/24 # RFC1918 possible internal network

#################################################

# Правила какие порты разрешены прокси-сервером #

#################################################

# Порт SSL для подключений по HTTPS-протоколу

acl SSL_ports port 443

# Список портов, к которым разрешен доступ через прокси-сервер по протоколу HTTP

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

visible_hostname srv-host.polygon.local

# ниже две директивы для подробного логирования

strip_query_terms off

log_mime_hdrs on

################################################################

# Пути к файлам запрещающих, разрешающих определенные действия #

################################################################

# Листинг IP-адресов компьютеров которые игнорируются SQUID запреты

acl SuperIP src "/etc/squid/SuperIP.txt"
# Разрешенный список сайтов

acl WhiteList dstdomain "/etc/squid/WhiteList.txt"

# Запрещенный список сайтов

acl BlackList dstdomain "/etc/squid/BlackList.txt"

#########################

# Параметры DNS записей #

#########################

# Список DNS серверов(IP адреса), которые будут использоваться вместо тех, что определены в /etc/resolv.conf файле

dns_nameservers 10.90.90.1

#########################################

# Правила ограничений доступа клиентов #

#########################################
# Запретить доступ к портам, отсутствующим в списке выше

http_access deny !Safe_ports

# Запретить метод CONNECT не на SSL-порт

http_access deny CONNECT !SSL_ports

# Разрешить только локальное управление кэшем

http_access allow localhost manager

http_access deny manager

# Не ограничивать локальный доступ с сервера

http_access allow localhost

# Не ограничивать доступ администраторам

http_access allow SuperIP

# Блокировать запрещенные сайты

http_access deny BlackList
# Правила разрешающего доступ в интернет из локальной сети указанной в localnet

http_access allow localnet

# Блокирует все, что не было разрешено выше

http_access deny all

################################################

# Правила подключений клиентов к прокси-серверу#

################################################

# Подключения через прозрачный порт

http_port 10.90.90.1:3128 intercept options=NO_SSLv3:NO_SSLv2

# Подключение через указания прокси-сервера на строне клиента

http_port 10.90.90.1:3130 options=NO_SSLv3:NO_SSLv2

# Подключение по HTTPS через прозрачный порт с параметрами подставки сертификата

https_port 10.90.90.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off cert=/etc/squid/ssl/squidca.pem

# Принимаем сертификаты, даже если они не прошли проверку.

always_direct allow all

sslproxy_cert_error allow all

sslproxy_flags DONT_VERIFY_PEER
# Укажем список запрещенный сайтов (в файле домены вида .domain.com) и правила блокировки их

acl blocked ssl::server_name "/etc/squid/BlackList.txt"

# Устанавливаем защищенное соединение и считываем заголовок HTTP

acl step1 at_step SslBump1

ssl_bump peek step1

# Закрываем соединение, если клиент заходит на ресурс указанные в blocked

ssl_bump terminate blocked

ssl_bump splice all

sslcrtd_program /usr/lib/squid/ssl_crtd -s /var/lib/ssl_db -M 4MB

#########################################

# Дополнительные параметры конфигурации #

#########################################

# Путь для дискового кеширования

cache_dir aufs /var/spool/squid 20000 49 256

# Путь сохранения дампов аварийного завершения

coredump_dir /var/spool/squid

# Время жизни объектов для протоколов FTP и GOPHER

refresh_pattern ^ftp: 1440 20% 10080

refresh_pattern ^gopher: 1440 0% 1440

# Нулевое время жизни для динамического контента

refresh_pattern -i (/cgi-bin/|\?) 0 0% 0

# Время жизни по умолчанию

refresh_pattern . 0 20% 4320

maximum_object_size 61440 KB

minimum_object_size 3 KB

cache_swap_low 90

cache_swap_high 95

# Максимальный размер объекта, сохраняемого в оперативной памяти

maximum_object_size_in_memory 512 KB

memory_replacement_policy lru

logfile_rotate 4

По окончании не забываем сохранить внесенные изменения в конфигурационный файл squid.conf.

Создаю необходимые текстовые файлы предопределенные в конфигурационном файле squid.conf:

ekzorchik@srv-host:~$ sudo touch /etc/squid/SuperIP.txt

ekzorchik@srv-host:~$ sudo touch /etc/squid/WhiteList.txt

ekzorchik@srv-host:~$ sudo nano /etc/squid/BlackList.txt

.fishki.net

.yaplaka.com

.odnoklassniki.ru

games.mail.ru

hh.ru

superjob.ru

Теперь нужно проверить конфигурационный файл squid.conf на корректность: (в выводе не должно быть ни какого упоминания об ERROR)

ekzorchik@srv-host:~$ sudo squid -k parse

Наполняю файл запрещающих сайтов не относящихся к работе:

ekzorchik@srv-host:~$ sudo bash -c "echo .yandex.ru > /etc/squid/BlackList.txt"

Теперь запускаю SQUID:

ekzorchik@srv-host:~$ sudo /etc/init.d/squid stop

ekzorchik@srv-host:~$ sudo /etc/init.d/squid start

ekzorchik@srv-host:~$ sudo /etc/init.d/squid status

* squid is running

ekzorchik@srv-host:~$ sudo netstat -tulpn | grep 'squid'

tcp 0 0 192.168.1.174:3128 0.0.0.0:* LISTEN 2108/(squid-1)

tcp 0 0 192.168.1.174:3129 0.0.0.0:* LISTEN 2108/(squid-1)

tcp 0 0 192.168.1.174:3130 0.0.0.0:* LISTEN 2108/(squid-1)

udp 0 0 0.0.0.0:35255 0.0.0.0:* 2108/(squid-1)

udp6 0 0 :::45353 :::* 2108/(squid-1)

ekzorchik@srv-host:~$ sudo tail -f /var/log/squid/cache.log

Теперь осталось дополнить правила в брандмауэре на заворачивание всего трафика из локальной сети на SQUID:

ekzorchik@srv-host:~$ sudo nano /etc/ufw/before.rules

*nat

:POSTROUTING ACCEPT [0:0]

:PREROUTING ACCEPT [0:0]

-A POSTROUTING -s 10.90.90.0/24 -o eth0 -j MASQUERADE

-A PREROUTING -p tcp -m tcp -s 10.90.90.0/24 --dport 443 -j REDIRECT --to-ports 3129

-A PREROUTING -p tcp -m tcp -s 10.90.90.0/24 --dport 80 -j REDIRECT --to-ports 3128

COMMIT

ЛИБО ДАТЬ ДОСТУП ИЗ ВСЕЙ СЕТИ — НО  ЛУЧШЕ ИСПОЛЬЗОВАТЬ РЕДАКТИРОВАНИЕ ФАЙЛА /etc/ufw/before.rules

ekzorchik@srv-host:~$ sudo ufw allow from 10.90.90.0/24 to any port 3128

ekzorchik@srv-host:~$ sudo ufw allow from 10.90.90.0/24 to any port 3129

После перезапускаю ufw:

ekzorchik@srv-host:~$ sudo ufw reload

Шаг №8: Проверяю, как отрабатывает блокировка и собственно сама работа squid с клиентской станции в локальной сети:

, но вот что всплыло, если добавить себя IP адрес в файлы SuperIP.txt то интернет как и нужно работает без ограничений, а если себя туда не добавлять то на всех страницах я получаю отбивку, что доступ запрещен:

Получаю отбивку, что доступ запрещен

Анализ логов сервера привел меня:

ekzorchik@srv-host:~$ sudo tail -f /var/log/squid/access.log

1472897326.734 144614 10.90.90.26 TAG_NONE/200 0 CONNECT 217.69.133.148:443 - HIER_NONE/- -

1472897326.734 144539 10.90.90.26 TCP_TUNNEL/200 11013 CONNECT top-fwz1.mail.ru:443 - ORIGINAL_DST/217.69.133.148 -

1472897340.692 5001 10.90.90.26 TCP_DENIED/200 0 CONNECT 5.255.255.5:443 - HIER_NONE/- -

1472897348.502 0 10.90.90.26 TCP_DENIED/200 0 CONNECT 5.255.255.5:443 - HIER_NONE/- -

1472897348.513 0 10.90.90.26 TCP_DENIED/200 0 CONNECT 5.255.255.5:443 - HIER_NONE/- -

1472897348.525 1 10.90.90.26 TAG_NONE/403 3768 GET https://yandex.ru/ - HIER_NONE/- text/html

1472897348.534 0 10.90.90.26 TCP_DENIED/200 0 CONNECT 5.255.255.5:443 - HIER_NONE/- -

1472897348.553 0 10.90.90.26 TAG_NONE/403 3768 GET http://srv-host.polygon.local:0/squid-internal-static/icons/SN.png - HIER_NONE/- text/html

1472897357.933 59 10.90.90.26 TCP_DENIED/403 4383 GET http://yahoo.com/ - HIER_NONE/- text/html

1472897358.036 2 10.90.90.26 TCP_DENIED/403 4428 GET http://srv-host.polygon.local:0/squid-internal-static/icons/SN.png - HIER_NONE/- text/html

^Cekzorchik@srv-host:~$ sudo tail -f /var/log/squid/cache.log

2016/09/03 13:07:49 kid1| ERROR: No forward-proxy ports configured.

2016/09/03 13:07:57 kid1| ERROR: No forward-proxy ports configured.
У меня просто в squid.conf Не правильно была указана сеть для которой работает squid:

acl localnet src 10.90.90.0/24 # RFC1918 possible internal network

ekzorchik@srv-host:~$ sudo service squid restart

ekzorchik@srv-host:~$ sudo service squid status

* squid is running

Вот теперь с клиентской станции все прекрасно открывается, за исключением домена Yandex, если же попробовать перейти на https://yandex.ru в ответ получится отбивка от squid:

Так выглядит дефолтная блокировка при посещении заблокированного ресурса

Отлично, работает как и планировалось.

Если же нужно подсадить на прокси не всю локальную сеть, а только конкретные компьютеры, то нужно в настройках браузера прописать:

10.90.90.1:3130

а на сервере squid поправить правила:

ekzorchik@srv-host:~$ sudo nano /etc/ufw/before.rules

# другие правила не трогает, оставляем как есть.

#-A PREROUTING -p tcp -m tcp -s 10.90.90.0/24 --dport 443 -j REDIRECT --to-ports 3129

-A PREROUTING -p tcp -m tcp -s 10.90.90.0/24 --dport 443 -j REDIRECT --to-ports 3130
-A PREROUTING -p tcp -m tcp -s 10.90.90.0/24 --dport 80 -j REDIRECT --to-ports 3130

Либо так, но лучше будет как сделано выше.

ekzorchik@srv-host:~$ sudo ufw allow from 10.90.90.0/24 to any port 3130 proto tcp

ekzorchik@srv-host:~$ sudo ufw reload

Затем на избранных компьютерах прописать:

Пуск — Панель управления — Свойства обозревателя — вкладка «Подключение» — «Настройка сети» —

отметить галочкой: Использовать прокси-сервер для локальных подключений.

Адрес: 10.90.90.1 Порт:3130

и после нажать OK, Применить, OK и все, данный компьютер теперь будет логироваться.

Вот собственно и все поданной задаче которую я запланировал. Только вот в самом начале я упомянул, для удобного формирования логов потребуется Вам уже самостоятельно по опубликованным ранее заметкам поставить:

либо Sarg

либо Free-sa

Если также как и я используете Sarg, то вот так выглядит сформированная статистика:

На основе данных мониторинга squid - sarg формирует статистику

И не забываем настроить планировщик создания отчетов:

ekzorchik@srv-host:~$ sudo crontab -e

00 07-22 * * * root sarg-reports today

00 23 * * * root sarg-reports daily

59 23 * * 0 root sarg-reports weekly

59 23 1 * * root sarg-reports monthly

Вот теперь уже все. На этом я прощаюсь и до новых встреч на моем блоге. C уважением, автор блога — ekzorchik.