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

Как создать HTTP-прокси с помощью Squid на CentOS 7/8


Веб-прокси существуют уже довольно давно и используются миллионами пользователей по всему миру. У них есть широкий спектр целей, самой популярной из которых является онлайн-анонимность, но есть и другие способы использования веб-прокси. Вот несколько идей:

  • Анонимность в интернете
  • Улучшить онлайн-безопасность
  • Улучшить время загрузки
  • Блокировать вредоносный трафик
  • Ведите журнал вашей онлайн-активности
  • Обойти региональные ограничения
  • В некоторых случаях может уменьшить использование пропускной способности

Как работает прокси-сервер

Прокси-сервер — это компьютер, который используется в качестве посредника между клиентом и другими серверами, у которых клиент может запрашивать ресурсы. Простым примером этого является ситуация, когда клиент делает онлайн-запросы (например, хочет открыть веб-страницу), он сначала подключается к прокси-серверу.

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

Что такое Squid Proxy

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 Cache: /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 Proxy

Скорее всего, вы захотите, чтобы ваши пользователи проходили аутентификацию перед использованием прокси. Для этой цели вы можете включить базовую 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 так, чтобы он блокировал некоторые веб-сайты в рабочее время, чтобы предотвратить отвлекающие факторы. Если у вас есть вопросы или комментарии, пожалуйста, оставьте их в разделе комментариев ниже.