squid

Welcome to squid

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

2024.09.14 23:38


β Как стать автором Моя лента Все потоки Разработка Администрирование Дизайн Менеджмент Маркетинг Научпоп Войти itzme 2 мар 2023 в 07:22

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

Средний 4 мин 37K Настройка Linux * Системное администрирование * Сетевые технологии * Из песочницы

Всем привет. Появилась необходимость сменить в компании старичка 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

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

Теги: Squid 5 + Kerberos прокси-сервер linux ubuntu kerberos squid Настройка squid 5 Хабы: Настройка Linux Системное администрирование Сетевые технологии +10 125 28 7 Карма 0 Рейтинг Vladislav @itzme

Системный администратор

Подписаться Комментарии 28

Публикации

Лучшие за сутки Похожие Показать лучшие за всё время

Истории

Работа

Системный администратор 86 вакансий DevOps инженер 50 вакансий Все вакансии

Ближайшие события

27 августа – 7 октября Премия digital-кейсов «Проксима» Москва Онлайн Больше событий в календаре Маркетинг Другое 19 сентября CDI Conf 2024 Москва Больше событий в календаре Маркетинг Аналитика 20 – 22 сентября BCI Hack Moscow Москва Больше событий в календаре Разработка 24 сентября Конференция Fin.Bot 2024 Москва Онлайн Больше событий в календаре Разработка Менеджмент Маркетинг 24 сентября Вебинар «Коммуникации компаний на Хабре: привлекаем внимание IT-специалистов» Онлайн Больше событий в календаре Разработка Другое 25 сентября Конференция Yandex Scale 2024 Москва Онлайн Больше событий в календаре Разработка Аналитика 28 – 29 сентября Конференция E-CODE Москва Онлайн Больше событий в календаре Разработка Другое 28 сентября – 5 октября О! Хакатон Онлайн Больше событий в календаре Разработка Другое 30 сентября – 1 октября Конференция фронтенд-разработчиков FrontendConf 2024 Москва Онлайн Больше событий в календаре Разработка 3 – 18 октября Kokoc Hackathon 2024 Онлайн Больше событий в календаре Разработка Менеджмент Аналитика 3 октября Лекторий Хабра. IT-культура: какая она и как создать свою Москва Больше событий в календаре Другое 9 ноября Конференция для фронтендеров «EXOZ { “conf” : “frontend” }» Калуга Онлайн Больше событий в календаре Разработка

Ваш аккаунт

Войти Регистрация

Разделы

Статьи Новости Хабы Компании Авторы Песочница

Информация

Устройство сайта Для авторов Для компаний Документы Соглашение Конфиденциальность

Услуги

Корпоративный блог Медийная реклама Нативные проекты Образовательные программы Стартапам Настройка языка Техническая поддержка © 2006–2024, Habr

Vivamus fermentum nibh