Squid Proxy Server (Ubuntu 20.04 LTS)

Squid (Proxy) — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и HTTPS.

Прокси-сервер Squid (Proxy) - это бесплатный высокопроизводительный кэширующий и перенаправляющий HTTP веб-прокси-сервер с открытым исходным кодом. В основном он используется для ускорения работы веб-сервера путем кэширования повторяющихся запросов, кэширования DNS и веб-поиска в общей сети. Он также добавляет политику безопасности для фильтрации нежелательного трафика для веб-пользователей или офисных пользователей. В данной заметке объясняется, как установить, настроить и сконфигурировать прокси-сервер Squid на сервере Ubuntu 20.04 LTS Linux.

Установите прокси-сервер Squid на Ubuntu.

Сначала войдите в систему с помощью команды ssh:

ssh user@server-ip-here

ssh vivek@server1.kaa-otdel.org

Затем обновите систему с помощью команды apt:

sudo apt update

sudo apt upgrade

Мы можем посмотреть пакет squid следующим образом:

apt show squid

Теперь, когда системное программное обеспечение обновлено, пришло время установить сервер Squid, введите:

sudo apt install squid

Настройка сервера Squid.

Файл конфигурации squid находится в директории /etc/squid/squid.conf и /etc/squid/conf.d/. Давайте отредактируем файл /etc/squid/squid.conf с помощью текстового редактора. Сделайте резервную копию исходного файла, чтобы мы могли вернуться назад, если что-то пойдет не так, используя команду cp:

sudo cp -v /etc/squid/squid.conf{,.factory}

sudo nano /etc/squid/squid.conf

По умолчанию squid прослушивает все IP-адреса на всех интерфейсах. Порт по умолчанию - TCP 3128. Найдите строку:

http_port 3128

Измените его следующим образом или в соответствии с вашими потребностями:

http_port 10.8.0.1:3128

Настройка ACL для портов.

ACL означает схему управления доступом, и мы можем использовать ее для запрета или разрешения доступа в соответствии с вашыми потребностями. Например, time acl позволяет установить для пользователей время суток и день недели для просмотра сайтов. Не нравятся домены социальных сетей? Мы можем заблокировать такие домены, как Facebook и другие, используя прокси-сервер Squid. Существует несколько различных списков доступа. Давайте рассмотрим некоторые общие примеры. 

Определите SSL и безопасные порты, которые вы хотите разрешить.

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

Адаптировать список ваших (внутренних) IP-сетей, из которых должен быть разрешен просмотр сайтов.

acl localnet src 0.0.0.1-0.255.255.255  # RFC 1122 "this" network (LAN)
acl localnet src 10.0.0.0/8             # RFC 1918 local private network (LAN)
acl localnet src 100.64.0.0/10          # RFC 6598 shared address space (CGN)
acl localnet src 169.254.0.0/16         # RFC 3927 link-local (directly plugged) machines
acl localnet src 172.16.0.0/12          # RFC 1918 local private network (LAN)
acl localnet src 192.168.0.0/16         # RFC 1918 local private network (LAN)
acl localnet src fc00::/7               # RFC 4193 local private network range
acl localnet src fe80::/10              # RFC 4291 link-local (directly plugged) machines

Определите свой LAN acl следующим образом:

acl mylan src 10.8.0.0/24

Мы также можем определить другие домены, которые вы хотите заблокировать:

acl baddomain1 dstdomain www-vk-moskva

Разрешить или запретить доступ. Используйте http_access, который позволяет HTTP-клиентам, таким как браузеры, получить доступ к HTTP-порту. Это основной список управления доступом:

# Block access to all Unsafe ports i.e. only allow Safe_ports defined in acl above #
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
# Block domains #
http_access deny baddomain1
# only allow cachemgr access from localhost #
http_access allow localhost manager
http_access deny manager
# Allow internet access to localhost and mylan sub/net #
http_access allow localhost
http_access allow mylan
# and finally deny all other access to this proxy server #
http_access deny all

Изменение исходящего IP-адреса прокси-сервера Squid. Скажем, если у вас несколько IP-адресов, назначенных вашему серверу, мы можем изменить исходящий IP-адрес прокси-сервера следующим образом:

tcp_outgoing_address 139.1.2.3

Установите размер кэш-памяти в соответствии с вашими потребностями:

cache_mem 256 MB

Заставьте squid скрывать реальный IP-адрес клиента:

forwarded_for delete
via off
forwarded_for off
follow_x_forwarded_for deny all
request_header_access X-Forwarded-For deny all
forwarded_for delete

Укажите список серверов имен DNS для использования:

dns_nameservers 127.0.0.1 10.8.0.1

У Squid гораздо больше возможностей. Здесь я рассмотрел основные. Проверьте правильность параметров конфигурации. Чтобы разобрать и проверить файл конфигурации, введите:

sudo /usr/sbin/squid -k check

echo $?

sudo /usr/sbin/squid -k parse

Запуск/остановка/перезапуск Squid. Во-первых, включите службу Squid во время загрузки с помощью команды systemctl:

sudo systemctl enable squid.service

Синтаксис следующий:

sudo systemctl start squid.service

sudo systemctl stop squid.service

sudo squid -k shutdown

sudo systemctl restart squid.service

sudo systemctl status squid.service

Перезагрузите Squid после изменений конфигурации. Каждый раз, когда вы вносите изменения в squid.conf, перезагружайте его следующим образом:

sudo squid -k reconfigure

sudo systemctl reload squid.service

Блокировка доменов. Давайте заблокируем twitter.com и facebook.com:

acl socialsite dstdomain .twitter.com
acl socialsite dstdomain .facebook.com
http_access deny socialsite

Блокирование URL-адресов с использованием ключевых слов. Скажем, если какой-либо URL содержит ключевое слово, например "foo" или "browse.php?u=", заблокируйте его с помощью url_regex acl:

acl urlkeywordsblocks url_regex -i "/etc/squid/blocked-urls-keyword.conf"
http_access deny urlkeywordsblocks

Создайте файл с именем /etc/squid/blockd-urls-keyword.conf следующим образом:

sudo vim /etc/squid/blocked-urls-keyword.conf

Добавьте ключевые слова:

foo browse.php?u=

Блокирование расширений файлов. Мы также можем блокировать нежелательные расширения файлов с помощью squid proxy:

acl blockedexentions urlpath_regex -i "/etc/squid/blocked-file-externsions.conf"    
http_access deny blockedexentions

Добавьте следующее в файл /etc/squid/blocked-file-externsions.conf:

.exec

.mp4

.mp3

.zip

.pdf

Разрешить доступ в интернет только с 9:00 утра до 18:00 в будние дни:

acl official_hours time M T W H F 09:00-18:00
http_access deny all
http_access allow official_hours

На этом пока все. Вы узнали, как установить, настроить и развернуть сервер Squid 4 для доступа в интернет и фильтрации нежелательного трафика на Ubuntu Linux 20.04 LTS. Более подробную информацию о сервере Squid можно найти в документации.


Сервер Squid развивается в течение уже многих лет. Обеспечивает совместимость с большинством важнейших протоколов Интернета.

 

Последние материалы