Проксі Squid з авторизацією в домені Active Directory
Якось ми розглядали налаштування проксі squid для початківців у середовищі Windows. Потім ми налаштовували squid у "роутері з коробки" - pfSense. А сьогодні ми покажемо, як створити потужний проксі сервер у Linux Debian. Навіщо? Справа в тому, що навіть у pfSense ми не можемо розкрити всю міць squid без бубна. Тому, якщо перед вами стоїть завдання зробити безкомпромісний проксі сервер - Linux єдиний варіант. Що ми робитимемо? Ну ... наприклад, змусимо працювати Squid відразу в двох режимах: прозорому (transparent) і звичайному. Це потрібно на той випадок, якщо у вашій організації є окрема гостьова мережа для людей, що приходять, і ви хочете фільтрувати трафік, але при цьому зайві логіни і паролі для кожного гостя створювати/вести/видавати немає жодного бажання. При цьому всі співробітники будуть правильно враховуватися, тому що ми налаштуємо взаємодію проксі сервера з Active Directory. На закінчення ще прикрутимо аналізатор логів, щоб завжди знати хто і як використовує інтернет.
Перше, що нам знадобиться, - це встановлений Debian з налаштованою мережею. Для майбутнього проксі-сервера на роутері має бути відкритий доступ до інтернету. Як варіант, можна поєднати роутер і проксі-сервер в одній машині, але це вже інша історія, яку ми теж як-небудь торкнемося. А доки на всіх цих дрібницях ми зупинятися не будемо, просто наведемо посилання на потрібні огляди: 1. Встановлення Linux Debian 2. Налаштування мережі в Linux Debian
Приєднання до Active Directory
Нам потрібно підключити нашу Linux машину до домену Active Directory. Для цього потрібно виконати ряд підготовчих дій. Спочатку нам потрібно навчити наш майбутній проксі сервер синхронізувати час з домен-контролером. Встановлюємо команду NTPapt-getinstall ntp
Після встановлення знову правимо конфіг-файли. Почнемо з самби. Відкриваємо файл/etc/samba/smb.conf, стираємо з нього все нафіг і пишемо заново наступні рядки:
[global] workgroup = MYDOMAIN netbios name = PROXY realm = MYDOMAIN.LOCAL server string = security = ads encrypt passwords = true password server = dc .mydomain.local winbind enum users = yes winbind enum groups = yes winbind use default domain = yse winbind u winbind g Якщо ви уважно подивилися цей лістинг, то помітили, що в рядку server string після знаку рівності стоїть пропуск — це не випадково. Додайте там пробіл, інакше самба сама буде заповнювати цей параметр на свій розсуд, що не завжди добре. показано на скріншоті нижче. Замість mydomain.local та dc підставляєте свої назви. Зверніть увагу, що в різних частинах файлу ці назви написані в різному регістрі - це дуже важливо! Перезавантажуємося.
Виконуємо командуkinit adminде замістьadminвказуємо логін адміністратора домену. Нас повинні запитати пароль цього адміна.
Тепер виконуємо командуnet ads join -U adminде замістьadminпишемо логін адміністратора домену. Після виконання цієї команди може виникнути помилка сервера DNS. Сміливо можна проігнорувати. Ще виконаємо командиwbinfo -pтаwbinfo -tОбидві команди мають завершитися успішно. Якщо так воно і вийшло, то не полінуйтеся перезавантажити комп'ютер проксі-сервера.
Важливе зауваження:з описаними вище командами просто так краще не грати. Під час підготовки цього огляду я від нефіга робити виконав ці команди на своєму бойовомусервер проксі. Самі команди виконалися успішно, але проксі після цього перестав сприймати доменних користувачів. Допомогло лише перезавантаження машини.Встановлюємо squid командоюapt-get install squid
Налаштування squid
Відкриваємо файл/etc/squid/squid.confМожна стерти там все, ми напишемо заново тільки потрібні нам речі. Потім додаємо ось такі рядки (власне завдяки їм squid звертається до Active Directory) : auth_param ntlm program /usr/bin/ntlm_auth —helper-protocol=squid-2.5-ntlmssp auth_param ntlm children 5
у конфізі пропишемо посилання на ці групи: acl Full external nt_group Internet_Full acl Medium external nt_group Internet_Medium acl Low external nt_group Internet_Low
acl all src 0.0.0.0/0.0.0.0 acl guests src 192.168.18.0/255.255.255.0
Робимо перевірку сотркдників через домен обов'язковою: acl nt_group proxy_auth REQUIRED
Щоб наші гості не з'їли всю пропускну спроможність інтернет-каналу, треба «зарізати» їх за швидкістю. Для цього створюється пул затримок в термінології проксі-сервера. Цьому пулу призначається обмеження швидкості і до кого ця справа застосовується. У підсумку ми напишемо такі рядки: delay_pools 1 delay_class 1 1 delay_parameters 1 128000/128000 delay_access 1 allow guests
У delay_parameters вказується номер нашого пулу та обмеження швидкості на хідний та вихідний трафік через дріб у байтах/сек. У моєму прикладі для гостей вийде швидкість 1 Мбіт/с.
Тепер пишемо самі правила доступу. Для гостьової мережі доступ без обмежень: http_access allow guests
для доменних груп: http_access allow Low white_list http_access deny Low deny http_access deny Medium black_list http_access allow Medium http_access allow Full
Тепер додамо кілька рядків з логування доступу до інтернету (це нам знадобиться трохи пізніше): access_log /var/log/squid/access.log logfile_rotate 100
Зберігаємо цей конфіг, про тонке налаштування та деякі інші моменти ми розповімо в окремому огляді.
Створіть файли/etc/squid/white_listта/etc/squid/black_listУ цих файлах у стовпчик можна просто писати назви сайтів. У файл чорного списку – погані сайти, у білий – хороші 🙂
Для того, щоб усі гості ходили також через проксі-сервер, на роутері необхідно «загорнути» гостьовий трафік. У випадку, якщо у вас роутер на базі linux, то це робиться простою командою iptables -t nat -A PREROUTING -s 192.168.18.0/24 -p tcp -dport 80 -j DNAT -to 192.168.17.6:3127
Якщо ви сквід встановлювали прямо на роутер, то ще простіше:iptables -t nat -A PREROUTING-s 192.168.18.0/24-p tcp -dport 80 -j REDIRECT-to-port 3127
З ймовірністю 99% ваш підсумковий конфігураційний файл буде відрізнятись від нашого прикладу, вам захочеться щось змінити, додати або видалити. Так ось, є одна чудова консольна команда, яка пишеться так: squid -k reconfigure Працює вона як кнопка «Застосувати» після того як ви внесли зміни в конфіг.
Аналіз логів
Картина буде така: За умовчанням статистика оновлюється раз на п'ять хвилин, що в принципі достатньо. Всіх користувачів можна розбити на групи, щоб полегшити сприйняття. Можна дізнатися, хто коли і куди ходив. Загалом якщо ставите сквід, то аналізатор логів lightsquid - маст хев!