Как создать HTTP-прокси с помощью Squid в CentOS 7/8
Веб-прокси существуют уже довольно давно и используются миллионами пользователей по всему миру. У них широкий спектр целей, наиболее популярной из которых является анонимность в Интернете, но есть и другие способы воспользоваться преимуществами веб-прокси. Вот несколько идей:
- Анонимность онлайн
- Улучшите онлайн-безопасность
- Улучшите время загрузки
- Блокировать вредоносный трафик
- Регистрируйте свою онлайн-активность
- Чтобы обойти региональные ограничения
- В некоторых случаях может снизить использование полосы пропускания.
Как работает прокси-сервер
Прокси-сервер — это компьютер, который используется в качестве посредника между клиентом и другими серверами, с которых клиент может запрашивать ресурсы. Простой пример: когда клиент делает онлайн-запросы (например, хочет открыть веб-страницу), он сначала подключается к прокси-серверу.
Затем прокси-сервер проверяет свой локальный дисковый кэш и, если данные там можно найти, он возвращает данные клиенту; если они не кэшированы, он выполняет запрос от имени клиента, используя IP-адрес прокси (отличный от клиенты), а затем вернуть данные клиенту. Прокси-сервер попытается кэшировать новые данные и будет использовать их для будущих запросов к тому же серверу.
Что такое прокси-сервер Squid
Squid — это веб-прокси, который использовался многими организациями. Он часто используется в качестве прокси-сервера для кэширования, что позволяет улучшить время отклика и сократить использование полосы пропускания.
Для целей этой статьи я установлю Squid на VPS Linode CentOS 7 и буду использовать его в качестве прокси-сервера HTTP.
Как установить Squid на CentOS 7/8
Прежде чем мы начнем, вы должны знать, что Squid не имеет каких-либо минимальных требований, но объем использования оперативной памяти может варьироваться в зависимости от клиентов, просматривающих Интернет через прокси-сервер.
Squid включен в базовый репозиторий, поэтому установка проста и понятна. Однако перед установкой убедитесь, что ваши пакеты обновлены, запустив их.
yum -y update
Продолжайте установку squid, запустите и включите его при запуске системы, используя следующие команды.
yum -y install squid
systemctl start squid
systemctl enable squid
На этом этапе ваш веб-прокси Squid уже должен быть запущен, и вы можете проверить статус службы с помощью него.
systemctl status squid
Пример вывода
● squid.service - Squid caching proxy
Loaded: loaded (/usr/lib/systemd/system/squid.service; enabled; vendor preset: disabled)
Active: active (running) since Thu 2018-09-20 10:07:23 UTC; 5min ago
Main PID: 2005 (squid)
CGroup: /system.slice/squid.service
├─2005 /usr/sbin/squid -f /etc/squid/squid.conf
├─2007 (squid-1) -f /etc/squid/squid.conf
└─2008 (logfile-daemon) /var/log/squid/access.log
Sep 20 10:07:23 tecmint systemd[1]: Starting Squid caching proxy...
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: will start 1 kids
Sep 20 10:07:23 tecmint squid[2005]: Squid Parent: (squid-1) process 2007 started
Sep 20 10:07:23 tecmint systemd[1]: Started Squid caching proxy.
Вот некоторые важные местоположения файлов, о которых вам следует знать:
- Файл конфигурации Squid: /etc/squid/squid.conf
- Журнал доступа Squid: /var/log/squid/access.log
- Журнал кэша Squid: /var/log/squid/cache.log
Минимальный файл конфигурации squid.conf
(без комментариев) выглядит так:
acl localnet src 10.0.0.0/8 # RFC1918 possible internal network
acl localnet src 172.16.0.0/12 # RFC1918 possible internal network
acl localnet src 192.168.0.0/16 # RFC1918 possible internal network
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 в качестве HTTP-прокси
Здесь мы покажем вам, как настроить squid в качестве HTTP-прокси, используя для аутентификации только IP-адрес клиента.
Добавить списки ACL Squid
Если вы хотите разрешить IP-адресу доступ к Интернету через новый прокси-сервер, вам нужно будет добавить новую строку ACL (список управления доступом) в файл конфигурации. .
vim /etc/squid/squid.conf
Строка, которую вы должны добавить:
acl localnet src XX.XX.XX.XX
Где XX.XX.XX.XX — это фактический IP-адрес клиента, который вы хотите добавить. Эту строку следует добавить в начало файла, в котором определены списки ACL. Рекомендуется добавить комментарий рядом с ACL, в котором будет описано, кто использует этот IP-адрес.
Важно отметить, что если Squid находится за пределами вашей локальной сети, вам следует добавить общедоступный IP-адрес клиента.
Вам нужно будет перезапустить Squid, чтобы новые изменения вступили в силу.
systemctl restart squid
Открытые прокси-порты Squid
Как вы, возможно, видели в файле конфигурации, для подключения разрешены только определенные порты. Вы можете добавить больше, отредактировав файл конфигурации.
acl Safe_ports port XXX
Где XXX — это фактический порт, который вы хотите загрузить. Опять же, хорошей идеей будет оставить комментарий рядом с описанием того, для чего будет использоваться порт.
Чтобы изменения вступили в силу, вам нужно будет перезапустить squid еще раз.
systemctl restart squid
Аутентификация прокси-клиента Squid
Скорее всего, вы захотите, чтобы ваши пользователи прошли аутентификацию перед использованием прокси. Для этой цели вы можете включить базовую аутентификацию HTTP. Его легко и быстро настроить.
Во-первых, вам понадобится установить httpd-tools.
yum -y install httpd-tools
Теперь давайте создадим файл, в котором позже будет храниться имя пользователя для аутентификации. Squid запускается от имени пользователя “squid”, поэтому владельцем файла должен быть этот пользователь.
touch /etc/squid/passwd
chown squid: /etc/squid/passwd
Теперь мы создадим нового пользователя с именем proxyclient и установим для него пароль.
htpasswd /etc/squid/passwd proxyclient
New password:
Re-type new password:
Adding password for user proxyclient
Теперь, чтобы настроить аутентификацию, откройте файл конфигурации.
vim /etc/squid/squid.conf
После ACL портов добавьте следующие строки:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5
auth_param basic realm Squid Basic Authentication
auth_param basic credentialsttl 2 hours
acl auth_users proxy_auth REQUIRED
http_access allow auth_users
Сохраните файл и перезапустите Squid, чтобы новые изменения вступили в силу:
systemctl restart squid
Блокировка веб-сайтов на прокси-сервере Squid
Наконец, мы создадим последний ACL, который поможет нам блокировать нежелательные веб-сайты. Сначала создайте файл, в котором будут храниться сайты, занесенные в черный список.
touch /etc/squid/blacklisted_sites.acl
Вы можете добавить несколько доменов, которые хотите заблокировать. Например:
.badsite1.com
.badsite2.com
Следующая точка указывает squid заблокировать все ссылки на эти сайты, включая www.badsite1, subsite.badsite1.com, и т. д.
Теперь откройте файл конфигурации Squid.
vim /etc/squid/squid.conf
Сразу после портов ACL добавьте следующие две строки:
acl bad_urls dstdomain "/etc/squid/blacklisted_sites.acl"
http_access deny bad_urls
Теперь сохраните файл и перезапустите Squid:
systemctl restart squid
После того, как все настроено правильно, теперь вы можете настроить локальный клиентский браузер или сетевые настройки операционной системы для использования HTTP-прокси squid.
Заключение
В этом руководстве вы узнали, как самостоятельно установить, защитить и настроить HTTP-прокси-сервер Squid. Используя только что полученную информацию, вы можете добавить базовую фильтрацию входящего и исходящего трафика через Squid.
Если вы хотите сделать все возможное, вы даже можете настроить squid для блокировки некоторых веб-сайтов в рабочее время, чтобы не отвлекаться. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, оставьте их в разделе комментариев ниже.