Thank you for reading this post, don't forget to subscribe!
Squid – это полнофункциональный веб-прокси-сервер, который предоставляет услуги прокси и кэширования для HTTP, FTP, SSL-запросов и DNS lookup.
Он также выполняет прозрачное кэширование, которое снижает пропускную способность и улучшает время отклика за счет кэширования и повторного использования часто запрашиваемых веб-страниц.
Установка и настройка Squid на Rocky Linux
Запустите обновление системы
Обновите кэш системных пакетов:
dnf update
Установка Squid в cистеме Rocky Linux
Squid proxy доступен в репозиториях Rocky Linux 8 по умолчанию и может быть установлен путем выполнения команды;
dnf install squid
Запуск Squid на Rocky Linux 8
После завершения установки запустите и включите Squid для запуска при загрузке системы.
systemctl enable --now squid
Настройка Squid Proxy в Rocky Linux 8
/etc/squid/squid.conf – это файл конфигурации Squid Proxy по умолчанию.
Он поставляется с рекомендуемыми минимальными настройками конфигурации.
Ниже приведено содержимое этого файла с удаленными строками комментариев;
grep -vE "^#|^$" /etc/squid/squid.conf
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 |
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 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 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 allow localhost http_access deny all http_port 3128 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 |
Прежде чем приступить к настройке конфигурации Squid в соответствии с вашими потребностями, создайте резервную копию файла конфигурации.
cp /etc/squid/squid.conf{,.bak}
Настройка политик доступа Squid
Создайте список контроля доступа, чтобы определить локальные сети, которые должны использовать Squid в качестве прокси-сервера.
Каждый ACL состоит из имени, типа и значения и задается с помощью опции acl.
Например, чтобы настроить хосты в сети 192.168.60.0/24 на использование Squid в качестве прокси-сервера, можно использовать ACL следующего вида;
acl mylocalnet src 192.168.60.0/24
Прокси создает ACL под названием mylocalnet, который определяет хосты в указанной сети.
После определения ACL необходимо добавить строку, которая ссылается на определенный ACL, чтобы разрешить или запретить доступ к функции кэша.
Например, используйте http_access, чтобы разрешить или запретить веб-браузерам доступ к веб-кэшу;
http_access allow mylocalnet
Squid читает конфигурацию сверху вниз, поэтому порядок опций конфигурации важен.
Вы можете закомментировать существующие сетевые ACLS, добавив хэш (#) в начале этих строк, и добавить свои собственные ACL
… ### Добавление пользовательского ACL#######
acl mylocalnet src 192.168.60.0/24
http_access allow mylocalnet
1 2 3 4 5 6 7 8 9 |
# #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 |
Блокирование определенных веб-сайтов
Squid proxy можно использовать для ограничения доступа к определенным веб-сайтам.
Например, чтобы заблокировать доступ к youtube, facebook, netflix, необходимо создать файл, определяющий домены этих сайтов, как показано ниже;
vim /etc/squid/restricted-sites.squid
.youtube.com
.facebook.com
.netflix.com
После этого создайте ACL для ограниченных выше сайтов в конфигурационном файле squid и установите правило запрета для определенного ACL.
… ### Adding Custom ACL ####### acl mylocalnet src 192.168.60.0/24 ## Adding Sites to Block access to ###
acl blockedsites dstdomain “/etc/squid/restricted-sites.squid”
http_access deny blockedsites http_access allow mylocalnet …
1 2 3 4 5 6 7 8 |
... acl mylocalnet src 192.168.60.0/24 acl blockedsites dstdomain "/etc/squid/restricted-sites.squid" http_access deny blockedsites http_access allow mylocalnet ... |
Вместо того чтобы использовать файл для определения сайтов для блокирования, вы можете поместить домены в пространство файла squid.conf, разделенное на операторы ACL.
acl blockedsites dstdomain youtube.com facebook.com netflix.com
Блокирование сайтов по определенным ключевым словам
Вы также можете ограничить доступ к сайту по ключевому слову.
Создайте файл с определенными ключевыми словами, как показано ниже;
vim /etc/squid/banned-keywords.squid
porn
ads
movie
gamble
Внесите необходимые изменения в конфигурационный файл squid.
1 2 3 4 5 6 7 8 9 10 |
... acl mylocalnet src 192.168.100.0/24 acl blockedsites dstdomain "/etc/squid/restricted-sites.squid" acl keyword-ban url_regex "/etc/squid/keyword-ban.squid" http_access deny blockedsites http_access deny keyword-ban http_access allow mylocalnet ... |
Закомментируйте строку ниже, поскольку мы закомментировали ACL сети localnet.
Также закомментируйте правило доступа для localnet.
#http_access allow localnet
Маскировка исходящего трафика
Чтобы предотвратить возможность раскрытия прокси-серверами ваших IP-адресов в исходящих HTTP-запросах, включите следующие директивы в конец вашего конфигурационного файла squid.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 |
... 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 # Anonymize Traffic via off forwarded_for off request_header_access From deny all request_header_access Server deny all request_header_access WWW-Authenticate deny all request_header_access Link deny all request_header_access Cache-Control deny all request_header_access Proxy-Connection deny all request_header_access X-Cache deny all request_header_access X-Cache-Lookup deny all request_header_access Via deny all request_header_access X-Forwarded-For deny all request_header_access Pragma deny all request_header_access Keep-Alive deny all |