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

Веб-прокси уже давно существуют и используются миллионами пользователей по всему миру.

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

Вот несколько идей:

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

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

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

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

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

Что такое Squid Proxy

Прежде чем мы начнем, вы должны знать, что 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 Proxy

Наконец, мы создадим один последний ACL, который поможет нам заблокировать нежелательные сайты.

Сначала создайте файл, в котором будут храниться сайты с черным списком.

# touch /etc/squid/blacklisted_sites.acl

Вы можете добавить некоторые домены, которые хотите заблокировать. Например:

.tsarev.org
.code.by

Контрольная точка указывает squid, чтобы блокировать все ссылки на эти сайты, включая www.tsarev, oleg.tsarev.org и т. д.

Теперь откройте файл конфигурации 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.

Вывод

В этом уроке вы узнали, как устанавливать, защищать и настраивать собственный сервер Squid HTTP Proxy.

С информацией, которую вы только что получили, теперь вы можете добавить базовую фильтрацию для входящего и исходящего трафика через Squid.

См. также:

cryptoparty

Cryptography is typically bypassed, not penetrated.

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

5e7fa976b0640d40