Поиск по сайту:

Как создать 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 для блокировки некоторых веб-сайтов в рабочее время, чтобы не отвлекаться. Если у вас есть какие-либо вопросы или комментарии, пожалуйста, оставьте их в разделе комментариев ниже.