squid
Всем привет. Появилась необходимость сменить в компании старичка 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 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
Так как все пользователи распределены по ролям, 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/
Теги: Squid 5 + Kerberos прокси-сервер linux ubuntu kerberos squid Настройка squid 5 Хабы: Настройка Linux Системное администрирование Сетевые технологии +10 125 28 7 Карма 0 Рейтинг Vladislav @itzme
Системный администратор
Подписаться Комментарии 28Ваш аккаунт
Войти РегистрацияРазделы
Статьи Новости Хабы Компании Авторы ПесочницаИнформация
Устройство сайта Для авторов Для компаний Документы Соглашение КонфиденциальностьУслуги
Корпоративный блог Медийная реклама Нативные проекты Образовательные программы Стартапам Настройка языка Техническая поддержка © 2006–2024, Habr