На всякий случай делаем резервную копию файла настроек Squid. Для этого сначала переходим в каталог /etc/squid/ с помощью команды cd
:
cd /etc/squid/
После чего копируем файл squid.conf, изменив имя итогового файла на squid.conf.default
с помощью команды cp
:
# cp squid.conf squid.conf.default
Файл настроек Squid будет находиться там же, но его исходный вариант не будет перезаписываться при работе с утилитой.
Далее редактируем файл конфигурации /etc/squid/squid.conf прокси-сервера Squid, чтобы он приобрел следующий вид (в нашем примере используется простой текстовый редактор vim):
vim /etc/squid/squid.conf
Приводим файл конфигурации к следующему виду:
# порт на котором доступен прокси
http_port 3128
dns_nameservers 208.67.222.222 208.67.220.220
# авторизация, по паролю
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5 startup=5 idle=1
auth_param basic realm Welcome to Proxy
auth_param basic credentialsttl 2 hours
acl Users proxy_auth REQUIRED
# пускать товарища с этого ip без пароля
acl KnownUsers src "/etc/squid/KnownUsers.acl"
# все остальные
acl all src all
acl SSL_ports port 443 # https
acl SSL_ports port 563 # snews
acl SSL_ports port 873 # rsync
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 Safe_ports port 631 # cups
acl Safe_ports port 873 # rsync
acl Safe_ports port 901 # SWAT
acl purge method PURGE
acl CONNECT method CONNECT
# доступ только с доверенных ip или по паролю
http_access allow Users
http_access allow KnownUsers
http_access deny purge
http_access deny !Safe_ports
http_access deny CONNECT !SSL_ports
http_access deny all
icp_access deny all
# превращаем squid в анонимный прокси
forwarded_for off
header_access From deny all
header_access Server deny all
header_access User-Agent deny all
header_replace User-Agent Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:101.0) Gecko/20100101 Firefox/101.0
header_access Referer deny all
header_replace Referer unknown
header_access WWW-Authenticate deny all
header_access Link deny all
header_access X-Forwarded-For deny all
header_access Via deny all
header_access Cache-Control deny all
# отправять URL источника запроса, многие сайты без него ведут себя некорректно. При параноидальном подходе следует использовать
##header_access Referer deny all
coredump_dir /var/spool/squid
# Отключаем дисковый кэш полностью
cache_mem 8 MB
cache_dir null /tmp
cache deny all
shutdown_lifetime 5 seconds
# обрезаем логи, хранить лишнюю информацию о нас не нужно
access_log none all
cache_store_log none
refresh_pattern ^ftp: 1440 20% 10080
refresh_pattern ^gopher: 1440 0% 1440
refresh_pattern -i (/cgi-bin/|\?) 0 0% 0
refresh_pattern \/(Packages|Sources)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern \/Release(|\.gpg)$ 0 0% 0 refresh-ims
refresh_pattern \/InRelease$ 0 0% 0 refresh-ims
refresh_pattern \/(Translation-.*)(|\.bz2|\.gz|\.xz)$ 0 0% 0 refresh-ims
refresh_pattern . 0 20% 4320
Далее запускаем Squid. Для этого воспользуемся командой systemctl restart
и добавим к ней в качестве аргумента squid
:
# systemctl restart squid
Добавляем в список KnownUsers.acl доверенные IP-адреса клиентов, у них мы пароль спрашивать не будем.
root@proxy:/etc/squid# vim KnownUsers.acl
# KnownUsers
176.38.167.41
213.111.122.3
Добавляем пользователя, аутентификация у которого будет проходить по паролю:
root@proxy:/etc/squid# htpasswd /etc/squid/passwd new-user
New password:
Re-type new password:
Adding password for user new-user
Для того чтобы избавиться от рекламы, устанавливаем Pi-Hole, воспользовавшись инструментом curl
с опциями -sS
:
curl -sSL https://install.pi-hole.net | bash
Далее меняем dns_nameservers на 127.0.0.1 в файле /etc/squid/squid.conf — и никакой рекламы.
Вот и все! Теперь наш прокси-сервер Squid готов к использованию!