Pull to refresh

Боевой прокси-сервер Squid 5.2 с нуля

Level of difficultyMedium
Reading time4 min
Views39K

Всем привет. Появилась необходимость сменить в компании старичка Squid 3.5 с NTLM на FreeBSD, трудящегося с лохматых годов, так как как он не управлял скоростями и функционал работал криво. Было решено ставить Squid 5.2 с авторизацией по Kerberos на Ubuntu 22.04. Конфиг от 3.5 не подходит для 5 версии, поэтому все писалось с нуля. Для удобства чтения настройка будет разбита не несколько статей:

  1. Серверная часть и настройка авторизации Kerberos (Active Directory)

  2. Настройка файла конфигурации Squid

  3. Настройка доступов и скоростей

Немного теории для тех, кто вообще не знает, что это и с чем "едят" кальмара..

Гугл говорит нам замысловато..

Squid — программный пакет, реализующий функцию кэширующего прокси-сервера для протоколов HTTP, FTP, Gopher и HTTPS. Разработан сообществом как программа с открытым исходным кодом. Все запросы выполняет как один неблокируемый процесс ввода-вывода.

Для новичка может быть вообще ничего непонятно. Проще говоря прокси-сервер встраивается между конечным сайтом и пользователем. Кэширует данные с сайтов, «режет» скорость и позволяет правильно распределить нагрузки на интернет-канал, предоставляет или наоборот закрывает доступы к разным сайтам, например соц.сетям, магазинам и т.п., чтобы ничего не отвлекало наших сотрудников от выполнения их обязанностей ?

Hidden text

Постарался все максимально объяснить с разных сторон, чтобы было понятно даже человеку, который делает это впервые. Надеюсь знания окажутся полезными.

Обозначения:

yourdomain.com – вместо этого подставляйте свой домен.

user-px – пользователь от которого запускается squid.

proxy_comp - имя прокси сервера в DNS.

proxy_k – пользователь для Squid в Active Directory.

dc01 – Active Directory 1 сервер.

dc02 - Active Directory 2 сервер (может и не быть в компании).

192.168.10.100 – сервер прокси (у вас будет свой).

192.168.10.1 – шлюз (у вас будет свой).

192.168.10.9 - DNS (у вас будет свой).

192.168.10.10 – DNS (у вас будет свой).

192.168.10.222 - IP нашего админского компа.

Переходим к базовой настройке сервера Ubuntu 22.04

Устанавливаем актуальную версию Ubuntu server LTS отсюда:

https://ubuntu.com/download/server

Настраиваем статический ip адрес в sudo vim /etc/netplan/00-installer-config.yaml

Листинг:

# This is the network config written by 'subiquity'

network:

  ethernets:

    ens192:

      addresses:

      - 192.168.10.100/24

      gateway4: 192.168.10.1

      nameservers:

        addresses:

        - 192.168.1.10

        - 192.168.1.11

        search:

        - yourdomain.com

  version: 2

 

Настраиваем синхронизацию времени с доменом:

Устанавливаем клиент

apt-get install ntp

В файле /etc/ntp.conf комментируем все строки с серверами и добавляем свой сервер Active Directory:

server dc01.yourdomain.com

server dc02.yourdomain.com

В конец файла дописать:

interface ignore wildcard

interface listen eth1

Сохранить файл и перезапустить службу ntp:

service ntp restart

 

Далее обновляем пакеты и устанавливаем squid

sudo apt update

sudo apt install squid

 

По завершению проверяем работу службы

sudo systemctl status squid

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

sudo useradd user-px

chown user-px:user-px /etc/squid/*

chmod 640 /etc/squid/*

И ставим squid в автозагрузку

systemctl enable squid

На DNS-сервере делаем соответствующую А запись:

IP и имя сервера, на котором будет крутиться прокси, порт указываем 3128


Настраиваем авторизацию через Active Directory (Kerberos)

Так как все пользователи распределены по ролям, squid будет проверять вхождение пользователя в определенную группу из AD и на основании неё выдавать доступ. Чтобы это реализовать нам нужно получить доступ к AD. Приступим..

Создаем в AD пользователя, под которым Squid будет авторизовываться для получения списка пользователей и групп. Имя пользователя указывайте своё.

Обязательно ставьте галки

  • Запретить смену пароля пользователем

  • Срок действия пароля не ограничен

Заходим на сервер AD (dc01) и в командной строке от имени Администратора пишем:

ktpass -princ HTTP/yourdomain.com@YOURDOMAIN.COM /mapuser user-px /pass "ПарольОтУчеткиProxy_k" /out C:\squid.keytab /ptype KRB5_NT_PRINCIPAL /mapop set

Регистр очень важен! В целом во всем проекте все может ничерта не работать, а оказывается где-то неверный регистр..

Получившийся файл переносим с Active Directory на наш прокси сервер в директорию /etc/squid

Предоставляем пользователю, от которого запускается служба Squid права на файл.

chown user-px:user-px /etc/squid/squid.keytab

chmod 640 /etc/squid/squid.keytab

Устанавливаем пакет для поддержки аутентификации:

apt-get install krb5-user

При установке вводите домен ЗАГЛАВНЫМИ буквами.

Делаем копию файла /etc/krb5.conf и открываем его.

Вносим правки:

[libdefaults]

        default_realm = YOURDOMAIN.COM

        default_keytab_name = /etc/squid/squid.keytab

[realms]

        MASTESOFT.LOCAL = {

                kdc = dc01.yourdomain.com

                kdc = dc02.yourdomain.com

                admin_server = dc01.yourdomain.com

                default_domain = yourdomain.com

        }

[domain_realm]

        .yourdomain.com = YOURDOMAIN.COM

       yourdomain.com = YOURDOMAIN.COM

Сохраняем файл и проверяем работу.

kinit -kV -p HTTP/proxy_comp.yourdomain.com

Получили сообщение об успешной аутентификации.

Удаляем билет командой.

Kdestroy

Настройка файлов для аутентификации по Kerberos и подготовка сервера закончена.

Буду рад ответить на комментарии и возникшие вопросы :)

Часть 2

https://habr.com/ru/post/719902/

Tags:
Hubs:
Total votes 12: ↑10 and ↓2+10
Comments28

Articles