Настройка кэширующего SSL прокси сервера на Ubuntu 16.04 | 17.04

В этой статье рассмотрим настройку, установку и сборку кэширующего прокси сервера Squid3 с поддержкой SSL сертификатов на Ubuntu Server 16.04 | 17.04. Так же будет показан пример фильтрации сайтов по протоколу https и http.

В данной статье рассматривается пример установки Squid-SSL на чистую операционную систему Ubuntu Server 16.04 | 17.04.

Для начала установки Squid3 из исходников нам потребуется скачать сами исходники, но для этого необходимо включить репозитории для исходников. Для этого набираем:

sudo nano /etc/apt/source.list

И снимаем коментарии со строчек начинающихся cо слов deb-src

Далее обнавляем репозиторий

sudo apt update && sudo apt upgrade -y

Сборка Squid с поддержкой SSl

После обнавления репозитория установим необходимые зависимости:

sudo apt install devscripts build-essential dpkg-dev libssl-dev -y

Теперь необходимо подгрузить зависимости:

sudo build-dep squid3

И теперь скачиваем сами исходники:

sudo source squid3

Если выдает ошибку:

Невозможно прочитать права на скачивания squid3_версия-squid.dsc

Для ее исправления назначим права 777 на данный файл:

sudo chmod 777 squid3_версия-squid.dsc

И повторяем скачку исходника squid

sudo source squid3

Далее переходим в директорию squid (в моем случае 3.5.12):

cd squid-3.5.12/

Откроем файл rules на редактировани:

sudo nano debian/rules

Добавим в него директивы для сборки с поддержкой SSL

--enable-ssl\
--enable-ssl-crtd \
--with-openssl \

Теперь собираем пакет при помощи программы dpkg-buildpackage с ключом -D

sudo dpkg-buildpackage -d

Далее набираем:

cd ..
sudo dpkg -i *.deb -y

При установке покетов установщик будет ругатся на нехватку зависимостей, давате исправим данную проблему. В терминале набираем:

sudo apt install -f -y

Теперь повторим предыдущюю команду

sudo dpkg -i *.deb

Вот теперь наш squid установлен.

Настройка Squid с поддержкой ssl

Для того чтобы наш squid мог работать с SSL нам потребуется создать сертификат. Давайте сделаем это следующей командой:

sudo openssl req -new -newkey rsa:2048 -days 365 -nodes x509 -keyout squidCA.pem

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

sudo cp /etc/squid/squid.conf /etc/squid/squid.conf.bak

Теперь для облегчения процесса редактирования уберем все закоментированный строки из него

sudo cat /etc/squid/squid.conf | grep -v "^#" | grep -v "^&" > /etc/squid/squid.conf

Вот теперь можно открыть файл для редактирования

sudo nano /etc/squid/squid.conf

Допешите недастоющие строчки как у меня в примере

Пример конфигурационного файла squid.conf

# Создаем правило
 acl localnet src 10.5.5.0/24 # Ставим свой IP адерес который смотрит в локальную сеть
 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 sites dstdomain "/etc/squid/bad_url" # Файл bad_url необходимо создать
 
# Настраиваем правило блокировок и разрешений
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access allow localhost manager
http_access deny manager
http_access allow localnet
http_access deny sites
http_access allow localhost
http_access deny all

#Настройка опций, интерфейсов и портов
# intercept - прозрачное проксирование в старых версиях указываем transparent ----#
### Для http протокола ###
http_port 10.5.5.1:3128 intercept options=NO_SSLv3:NO_SSLv2
### Для https протокола ###
https_port 10.5.5.1:3129 intercept ssl-bump options=ALL:NO_SSLv3:NO_SSLv2 connection-auth=off key=/etc/squid/ssl/squid_CA.pem

### Настраиваем необходимые параметры для ssl
always_direct allow all
sslproxy_cert_error allow all
sslproxy_flags DONT_VERIFY_PEER
ssl_bump client-first all
ssl_bump server-first all
ssl_bump none all
# Параметры для старых версий squid'a
#sslcrtd_program /usr/local/squid/libexec/ssl_crtd -s /usr/local/squid/var/lib/ssl_db -M 4MB
#sslcrtd_children 32 startup=5 idle=1

# Расположения кэша на диске
cache_dir aufs /var/spool/squid 100 16 256
maximum_object_size 10 MB minimum_object_size 3 KB
# Параметры кэша на диске
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 . 0 20% 4320

# Настройка кэша ОЗУ cache_mem 512 Mb
## Загруженность кэше в процентах
cache_swap_low 90
cache_swap_high 95
## Максимальный размер объекта в кэше
maximum_object_size_in_memory 1 MB
### Остаток объекта, при котором закачка будет прервана в случае обрыва соединения
quick_abort_max 1024 KB
memory_replacement_policy lru

# Настройка лог файлов
logfile_rotate 4

подробно о параметрах написано в этой статье (статья находится в разработке).

Пробуем запустить squid:

sudo systemctl start squid

И видим что сервис не запустился. Почему? Потому что checkinstall не включил в пакет файлы сервиса Squid. Но к большому нашему счастью этот файл расположен в исходниках squid’a.

Копируем его в необходимую директорию:

sudo cp /home/Ваш_Пользователь/squid-3.5.23/tools/systemd/squid.service /etc/systemd/system

Включаем сервис squid

sudo systemctl enable squid.service

И это еще не все. Создаем необходимые директории и файлы нужные для запуска squid’a.

1. Создаем файл для URL адресов, которые мы будем блокировать

sudo touch /etc/squid/bad_url

2. Создадим лог-файл squid’a и назначим ему необходимые права

sudo touch /var/log/squid/access.log
sudo chown proxy /var/log/squid/access.log

3. После этого формируем дамп squid’a

squid -z

4. Далее необходимо занести все сайты которые хотите заблокировать в файл bad_url

sudo nano /etc/squid/bad_sires

в формате

.site.ru
.vk.com

5. Рестартуем сервис

sudo service squid restart

6. Перенаправляем весь трафик по портам 80, 8080, 443 через squid:

sudo iptables -t nat -A PREROUTING -s 10.5.5.0/24 -p tcp -m multiport --dports 80,8080 -j REDIRECT --to-ports 3128
sudo iptables -t nat -A PREROUTING -s 10.5.5.0/24 -p tcp -m multiport --dports 443 -j REDIRECT --to-ports 3129

Все кэширующий сервер squid с поддержкой ssl запустился и готов к работе.

Попробуйте открыть сайт в вконтакте, запрос не должен проходить. Если все в порядке, то открываем файл bad_url и вписываем все необходимые сайты для их блокировки.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Настройка кэширующего SSL прокси сервера на Ubuntu 16.04 | 17.04
5 (100%) 2 votes

Оставить комментарий

avatar
  Подписаться  
Уведомление о
Меню

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам:

Рейтинг@Mail.ru