Всем привет. Появилась необходимость сменить в компании старичка Squid 3.5 с NTLM на FreeBSD, трудящегося с лохматых годов, так как как он не управлял скоростями и функционал работал криво. Было решено ставить Squid 5.2 с авторизацией по Kerberos на Ubuntu 22.04. Конфиг от 3.5 не подходит для 5 версии, поэтому все писалось с нуля. Для удобства чтения настройка будет разбита не несколько статей:
Серверная часть и настройка авторизации Kerberos (Active Directory)
Настройка файла конфигурации Squid
Настройка доступов и скоростей
Немного теории для тех, кто вообще не знает, что это и с чем "едят" кальмара..
Гугл говорит нам замысловато..
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