Thank you for reading this post, don't forget to subscribe!
squid - это бесплатная программа для настройки прокси-сервера. Является кроссплатформенным программным обеспечением и может быть установлено на операционные системы семейства Windows или UNIX (например, FreeBSD, Ubuntu, CentOS).
Для анализа потребления трафика через Squid Proxy могут использоваться SAMS или SARG.
Подготовка CentOS
Обновляем систему:
yum update
Добавляем правило в firewalld:
firewall-cmd --permanent --add-port=3128/tcp
* где 3128 — порт, на котором будет настроен наш прокси-сервер.
и перезапускаем firewalld:
firewall-cmd --reload
Установка и настройка Squid
Устанавливаем прокси-сервер следующей командой:
yum install squid
И открываем на редактирование конфигурационный файл:
vi /etc/squid/squid.conf
Если сеть клиентских компьютеров отличается от стандартной (192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8), необходимо ее добавить в acl, например:
acl localnet src 217.66.157.0/24
или через файл:
acl localnet src "/etc/squid/acl_localnet"
* кавычки обязательны
** после необходимо создать файл /etc/squid/acl_localnet и с каждой строчки перечислить разрешенные IP-адреса.
Чтобы разрешить весь трафик, добавляем следующую строчку:
http_access allow all
* важно, чтобы она была выше запрещающей — http_access deny all
Настраиваем директорию для кэша:
cache_dir ufs /var/spool/squid 4096 32 256
* где ufs — файловая система (ufs для SQUID является самой подходящей); /var/spool/squid — директория хранения кэша; 4096 — объем пространства в мегабайтах, которое будет выделено под кэш; 32 — количество каталого первого уровня, которое будет создано для размещение кэша; 256 — количество каталого второго уровня, которое будет создано для размещение кэша.
Теперь создаем структуру папок под кэш следующей командой:
squid -z
И уже можно запускать squid:
systemctl start squid
Не забываем разрешить его автозапуск:
systemctl enable squid
Проверка
Заходим в настройки браузера и настраиваем использование прокси-сервера. Например, в Mozilla Firefox настройки нужно выставить такими:
* где 192.168.163.166 — IP-адрес моего прокси-сервера.
Теперь открываем сайт 2ip.ru. После его загрузки мы увидем внешний IP-адрес — он должен соответствовать той сети, от которой работает настроенный SQUID.
Прозрачный прокси
Прозрачный прокси позволяет автоматически использовать прокси-сервер, не настраивая при этом браузер компьютера. Пользователи могут даже не знать, что трафик идет через squid.
Открываем конфигурационный файл:
vi /etc/squid/squid.conf
Находим строчку:
http_port 3128
И приводим ее к следующему виду:
http_port 3128 transparent
И перезагружаем squid:
systemctl restart squid
Squid + HTTPS
Специально настраивать https для squid в CentOS 7 мне не пришлось — все заработало по умолчанию.
Авторизация по логину и паролю
Открываем конфигурационный файл:
vi /etc/squid/squid.conf
Вставляем следующее:
auth_param basic program /usr/lib64/squid/basic_ncsa_auth /etc/squid/auth_users
auth_param basic children 25
auth_param basic realm SQUID PROXY
auth_param basic credentialsttl 3 hours
acl auth_users proxy_auth REQUIRED
* где /usr/lib64/squid/basic_ncsa_auth — расположение ncsa_auth (в зависимости от системы может находиться в другом каталоге); /etc/squid/auth_users — файл с логинами и паролями; children 25 разрешает 25 одновременных подключений; SQUID PROXY — произвольная фраза для приветствия; credentialsttl 3 hours будет держать сессию 3 часа, после потребуется повторный ввод логина и пароля.
И после:
http_access deny !Safe_ports
Добавляем:
http_access allow auth_users
Создаем файл с пользователями и создаем первую пару логина и пароля:
htpasswd -c /etc/squid/auth_users user1
* если система вернет ошибку «bash: htpasswd: command not found» установим htpasswd командой yum install httpd-tools
Создаем второго пользователя:
htpasswd /etc/squid/auth_users user2
И перезагружаем squid:
systemctl restart squid
Исходящий сетевой интерфейс
На нашем сервере может быть несколько внешний IP-адресов. По умолчанию, все исходящие запросы будут работать через интерфейс со шлюзом по умолчанию. Чтобы иметь возможность работы со squid через разные интерфейсы в настройку вносим:
vi /etc/squid/squid.conf
acl 217_66_157_33 localip 217.66.157.33
tcp_outgoing_address 217.66.157.33 217_66_157_33
acl 217_66_157_34 localip 217.66.157.34
tcp_outgoing_address 217.66.157.34 217_66_157_34
* в данном примере, при подключении к прокси через IP 217.66.157.33, исходящие пакеты будут от IP 217.66.157.33; аналогично для IP 217.66.157.34.