Установка і настройка Squid на CentOS. Установка Squid - Енциклопедія хостингу Установка squid

Squid - це популярний проксі-сервер, який використовується в основному для кешування часто запитуваної веб-контенту, щоб зменшити час відгуку сторінок, а також для фільтрації мережевого трафіку. Він підтримує безліч різних протоколів таких як HTTP, FTP, TLS, SSL, Internet Gopher і HTTPS. А ще ця штука може бути дуже корисною при повільному інтернет-з'єднанні. Спочатку Squid був розроблений як Unix демон, але потім було випущено кілька портів для WIndows. Squid поширюється під ліцензією GNU General Public License.

У цій інструкції ви дізнаєтеся як встановити Squid в Ubuntu 16.04. Просто послідовно виконуйте ці інструкції і установка squid ubuntu не викличе жодних проблем. Squid це досить багатофункціональна програма і ми не зможемо охопити в цій статті всі її функції, але спробуємо розглянути основні, щоб ви змогли її повністю налаштувати і використовувати. Почнемо з установки.

Є кілька способів установки Squid в Ubuntu, один з найпоширеніших - установка з офіційних репозиторіїв за допомогою утиліти apt.

Спочатку відкрийте термінал сполучення клавіш Ctrl + Alt + T і обновіть індекс пакетів:

Після оновлення списку пакетів можна переходити до установки проксі-сервера просто виконайте команду:

sudo apt install squid

Потім утиліта запитає чи потрібно продовжувати установку, введіть Y і дочекайтеся закінчення завантаження і установки:

Потім можна переходити до налаштування.

Налаштування Squid

Конфігураційний файл сервера знаходиться в директорії / etc / squid. Залежно від версії Squid назву папки і самого файлу може відрізнятися, наприклад, /etc/squid3/squid.conf або /etc/squid/squid.conf. Всі налаштування знаходяться в цьому файлі. Давайте його розглянемо.

vim /etc/squid3/squid.conf

Коли відкриється файл ви побачите щось схоже:

Файл містить кілька опцій настройок, а також дуже багато документації по їх використанню. Ми не будемо чіпати багато з них, але основні розглянемо.

Контроль доступу

Спочатку нам потрібно налаштувати правила доступу клієнтів до нашого проксі-сервера. Squid проектувався як програма для організацій і навіть якщо ви використовуєте його будинку, настройка squid 3 теж повинна бути виконана.

Для це використовується acl список. це звичайний список об'єктів, зараз він взагалі нічого не означає. Це можуть бути ip адреси, порти і т д. Потім ми вкажемо програмі що потрібно робити з цим списком, дозволяти або забороняти доступ. Синтаксис створення acl списку такий:

acl назва_списку тіп_спіска елемент_спіска

Таких рядків може бути кілька з одним ім'ям і типом, з них виходить список. Ім'я списку може бути довільним, ми його ще будемо використовувати. Тип списку це набагато цікавіше. Може бути одним з:

  • src- ip адреса звідки виходить з'єднання, адреса клієнта;
  • dst- ip адреса призначення з'єднання, адреса сервера, до якого хоче отримати доступ клієнт;
  • dstdomain- домен призначення з'єднання;
  • srcdomain- домен клієнта;
  • arp- MAC адресу мережевої карти клієнта;
  • time- час, коли виконується з'єднання;
  • port- порт, до якого намагається отримати доступ клієнт;
  • proto- протокол, по якому встановлюється з'єднання;
  • method- метод передачі даних, наприклад, GET - передача даних HTTP, POST - передача даних форм в HTTP, CONNECT - запит з'єднання з сервером;
  • http_status- відповідь сервера;
  • browser- браузер клієнта;
  • url_regex- url адресу, до якого намагаються отримати доступ.

Це далеко не всі типи списків, але для початку вистачить, а більш детальна інформація є в тому ж файлі конфігурації.

Додамо список, щоб отримати доступ до сервера з локальної мережі:

acl localnet src 192.168.0.0/16

Створимо список Safe_ports, щоб дозволити трафік на порти основних мережевих служб, а також незареєстровані порти за 1024:

acl Safe_ports port 80 # http
acl Safe_ports port 21 # ftp
acl Safe_ports port 443 # https
acl Safe_ports port 70 # gopher
acl Safe_ports port 210 # wais
acl Safe_ports port 1025-65535 # unregistered ports
acl Safe_ports port 280 # http-mgmt
acl Safe_ports port 488 # gss-http
acl Safe_ports port 591 # filemaker
acl Safe_ports port 777 # multiling http

Створимо ще два списки - SSL_ports і connect, щоб дозволити використовувати метод connect тільки для ssl з'єднань. Це заборонить клієнту використовувати інші проксі-сервери поверх нашого:

acl SSL_ports port 443

acl connect method CONNECT

Як я вже говорив, ці списки самі по собі нічого не значать і ніяк не впливають на роботу сервера. Щоб застосувати список потрібно використовувати директиву http_access. Її синтаксис:

http_access дію назва_списку

Дія може бути allow (дозволити) або deny (заборонити). тепер заборонимо доступ до всіх портів, крім заданих в Safe_ports:

http_access deny Connect! SSL_ports

Тепер дозволимо доступ з цього комп'ютера (acl список localhos зумовлений):

http_access allow localhost

Дозволимо доступ з локальної мережі:

http_access allow localnet

І заборонимо все інше:

http_access deny all

інші налаштування

Контроль доступу, це один з найважливіших компонентів, але настройка squid ubuntu на цьому незакончена. Є ще багато цікавих параметрів, ми розглянемо лише кілька з них:

http_port- задає ip адресу і порт, на якому буде працювати програма. Можна запускати проксі тільки на цьому комп'ютері такою конструкцією:

http_port localhost: 3218

Або в локальній мережі:

https_port- задає ip адресу і порт, на якому будуть прийматися https з'єднання. Ми не розглядаємо роботу з https в цій статті.

cache_mem- кількість пам'яті, яка виділяється для кешування об'єктів.

cache_dir - дозволяє задати папку для зберігання кешу. За замовчуванням весь кеш зберігається в оперативній пам'яті. синтаксис:

cache_dir файлова_системапапка размер_в_мб L1 L2

L1 і L2 - кількість підпапок першого і другого рівня. Файлова система визначає яким чином дані будуть писатися на диск. наприклад:

cache_dir aufs / var / spool / squid 100 16 256

coredump_dir- директорія, в яку буде збережений дамп пам'яті в разі помилки.

refresh_pattern- дуже цікавий параметр, який дозволяє продовжити час життя об'єктів в кеші. Синтаксис такий:

refresh_pattern -i регулярное_вираженіе мінімальное_времявідсоток максімальное_времяпараметри

  • регулярний вираз- задає об'єкти, до яких потрібно застосовувати параметр;
  • мінімальное_время- час у хвилинах поки об'єкт вважається свіжим;
  • максімальное_время- максимальний час в хвилинах, поки об'єкт буде свіжим;

параметри можуть бути такі:

  • override-expire- ігнорувати заголовок expire;
  • override-lastmod- ігнорувати останню дату зміни файлу;
  • reload-into-ims- вмістити не кешувати відправляти запит If-Modified-Since;
  • ignore-reload- ігнорувати запити клієнта не кешувати.

наприклад:

refresh_pattern -i \ .gif $ 43200 100% 43200 override-lastmod override-expire

Вам можуть знадобитися і інші настройки після того, як установка squid ubuntu Буде завершена. Але вони виходять за рамки цієї статті. Тепер збережіть зміни, закрийте файл і перезавантажте Squid:

sudo service squid3 restart

Якщо ця команда поверне помилку, спробуйте іншу:

sudo service squid restart

Залишилося перевірити роботу нашого проксі-сервера. Це можна зробити за допомогою будь-якого браузера. Відкрийте настройки браузера і виконайте настройку проксі. Я покажу як це зробити в Mozilla Firefox. Якщо у вас інший браузер, наприклад, Google Chrome думаю ви розберетеся як там налаштовується проксі.

Налаштування клієнтської сторони

Відкрийте браузер, перейдіть в Налаштування --> додатково --> Мережа. потім натисніть налаштуванняв розділі підключенняі виберіть налаштувати проксі вручну:

У полі HTTP проксівкажіть IP адресу машини, на якій встановлені раніше Squid сервера, а в полі порт - номер порту 3128. Цей порт використовується за умовчанням в Squid, але ви можете змінити номер порту за допомогою /etc/squid/squid.conf

Сьогодні ми поговоримо про проксі-серверах.

Проксі-сервер - це така штука, що забезпечує доступ декількох комп'ютерів з однієї мережі в іншу мережу (але не плутати з маршрутизаторами - це зовсім різні речі, проксі-сервер працює на прикладному рівні). Найбільш расспространенія завдання проксі-сервера - забезпечити доступ в інтернет для ПК, на яких його немає через один ПК, який має доступ до глобальної мережі. Розглянемо цю задачу в разі використання Windows-комп'ютера в якості шлюзу в інтернет.

Для вирішення цього завдання можна користуватися пропрієтарними рішеннями з візуальним інтерфейсом - наприклад, UserGate.Но у мене не вийшло змусити його коректно працювати на ПК з Windows 7 та й він платний :) Тому кращим рішенням я вважаю що дістався нам з * nix десятків Squid. Завантажити цей витвір можна за адресою: Squid 2.7 (остання версія на момент написання статті)

Завантажуємо і розпаковуємо бажано в корінь диска. Не намагайтеся що-небудь запустити звідти - в цій програмі немає графічного інтерфейсу - і нехай вас це не лякає :)
Далі відкриваємо консоль - Win + R / СMD / переходимо в папку з встановленим СКВИДов (далі я буду писати для шляху установки c: \ squid)

c: \
cd c: \ squid \ sbin

Тепер необхідно встановити сквид як службу Windows командою:

squid -i -f c: /squid/etc/squid.conf -n Squid27

Де Squid27 - ім'я служби, яке в принципі може бути будь-яке припустиме.

Тепер треба підредагувати файл настройок squid.conf, який знаходиться в папці c: / squid / etc / раджу забекапіть оригінальний файл. Далі видаляємо з цього файлу весь текст і прописуємо наступне:

http_port 3128
acl localnet src 192.168.3.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny all

cache_log none
cache_store_log none

де

  • http_port 3128 - номер порту на сервері, через який працює скві д. Т. е. в налаштуваннях клієнтів будемо вказувати адресу сервера і цей порт;
  • acl localnet src 192.168.0.0/255.255.0.0- ця строчка вказує діапазон ip-адрес, для яких можливе підключення до нашого проксі. Маску можна вказувати як / 8, / 16, / 24 (для 255.0.0.0, 255.255.0.0, 255.255.255.0 соответсвенно), а localnet - це ім'я. По суті, цим рядком ми оголошуємо змінну, з якої далі будемо працювати. наступний рядок аналогічно оголошує змінну all, де вказані всі існуючі ip;
  • http_access allow localnet - цим рядком ми дозволяємо доступ з ip, зазначених у змінній localnet до нашого проксі;
  • http_access deny all - забороняємо всім іншим доступ до проксі. Ці дозволи працюють зверху-вниз, тому цей рядок потрібно вказувати останньої! Інакше ніхто до проксіка НЕ ​​достукаєтеся :)
  • cache_log none - потрібна, як і наступний рядок, щоб логи НЕ розрослися в гігабайти)
Ще можна внести наступні параметри:
  • cache_mem 32 MB - визначає розмір додаткового кеша сквіду в оперативній пам'яті;
  • cache_dir ufs c: / squid / var / cache 100 16 256- визначає шлях до папки кеша, розмір його в Мб (100) і кількість підпапок (навіщо останнє - я так і не зрозумів :))
Тепер треба в тій же папці прибрати ".default" в назві файлу mime.conf або просто створити порожній текстовий файл з таким ім'ям. Це потрібно для формування кеша. В консолі набираємо команду (перебуваючи в папці sbin):

squid -z -f c: \ squid \ etc \ squid.conf

Ось, в принципі, ми і готові до запуску нашого проксі. Пишемо в командному рядку (або можна зайти в Служби і запустити мишкою :)

net start Squid27

зупинка:

net stop squid27

переконфігурація:

squid -n Squid27 -f з: /squid/etc/squid.conf -k reconfigure

Ще можна багато чого накоїти в цьому проксі, наприклад, задати обмеження різним користувачам за часом, за швидкістю, заборонити доступ на певні сайти і т. Д. І т. П. Але в завдання цієї статті не входить описування цього всього - такий матеріал легко знайти на просторах Інтернету.

Сьогодні ми поговоримо про проксі-серверах.

Проксі-сервер - це така штука, що забезпечує доступ декількох комп'ютерів з однієї мережі в іншу мережу (але не плутати з маршрутизаторами - це зовсім різні речі, проксі-сервер працює на прикладному рівні). Найбільш расспространенія завдання проксі-сервера - забезпечити доступ в інтернет для ПК, на яких його немає через один ПК, який має доступ до глобальної мережі. Розглянемо цю задачу в разі використання Windows-комп'ютера в якості шлюзу в інтернет.

Для вирішення цього завдання можна користуватися пропрієтарними рішеннями з візуальним інтерфейсом - наприклад, UserGate.Но у мене не вийшло змусити його коректно працювати на ПК з Windows 7 та й він платний :) Тому кращим рішенням я вважаю що дістався нам з * nix десятків Squid. Завантажити цей витвір можна за адресою: Squid 2.7 (остання версія на момент написання статті)

Завантажуємо і розпаковуємо бажано в корінь диска. Не намагайтеся що-небудь запустити звідти - в цій програмі немає графічного інтерфейсу - і нехай вас це не лякає :)
Далі відкриваємо консоль - Win + R / СMD / переходимо в папку з встановленим СКВИДов (далі я буду писати для шляху установки c: \ squid)

c: \
cd c: \ squid \ sbin

Тепер необхідно встановити сквид як службу Windows командою:

squid -i -f c: /squid/etc/squid.conf -n Squid27

Де Squid27 - ім'я служби, яке в принципі може бути будь-яке припустиме.

Тепер треба підредагувати файл настройок squid.conf, який знаходиться в папці c: / squid / etc / раджу забекапіть оригінальний файл. Далі видаляємо з цього файлу весь текст і прописуємо наступне:

http_port 3128
acl localnet src 192.168.3.0/255.255.255.0
acl localhost src 127.0.0.1/255.255.255.255
acl all src 0.0.0.0/0.0.0.0
http_access allow localnet
http_access allow localhost
http_access deny all

cache_log none
cache_store_log none

де

  • http_port 3128 - номер порту на сервері, через який працює скві д. Т. е. в налаштуваннях клієнтів будемо вказувати адресу сервера і цей порт;
  • acl localnet src 192.168.0.0/255.255.0.0- ця строчка вказує діапазон ip-адрес, для яких можливе підключення до нашого проксі. Маску можна вказувати як / 8, / 16, / 24 (для 255.0.0.0, 255.255.0.0, 255.255.255.0 соответсвенно), а localnet - це ім'я. По суті, цим рядком ми оголошуємо змінну, з якої далі будемо працювати. наступний рядок аналогічно оголошує змінну all, де вказані всі існуючі ip;
  • http_access allow localnet - цим рядком ми дозволяємо доступ з ip, зазначених у змінній localnet до нашого проксі;
  • http_access deny all - забороняємо всім іншим доступ до проксі. Ці дозволи працюють зверху-вниз, тому цей рядок потрібно вказувати останньої! Інакше ніхто до проксіка НЕ ​​достукаєтеся :)
  • cache_log none - потрібна, як і наступний рядок, щоб логи НЕ розрослися в гігабайти)
Ще можна внести наступні параметри:
  • cache_mem 32 MB - визначає розмір додаткового кеша сквіду в оперативній пам'яті;
  • cache_dir ufs c: / squid / var / cache 100 16 256- визначає шлях до папки кеша, розмір його в Мб (100) і кількість підпапок (навіщо останнє - я так і не зрозумів :))
Тепер треба в тій же папці прибрати ".default" в назві файлу mime.conf або просто створити порожній текстовий файл з таким ім'ям. Це потрібно для формування кеша. В консолі набираємо команду (перебуваючи в папці sbin):

squid -z -f c: \ squid \ etc \ squid.conf

Ось, в принципі, ми і готові до запуску нашого проксі. Пишемо в командному рядку (або можна зайти в Служби і запустити мишкою :)

net start Squid27

зупинка:

net stop squid27

переконфігурація:

squid -n Squid27 -f з: /squid/etc/squid.conf -k reconfigure

Ще можна багато чого накоїти в цьому проксі, наприклад, задати обмеження різним користувачам за часом, за швидкістю, заборонити доступ на певні сайти і т. Д. І т. П. Але в завдання цієї статті не входить описування цього всього - такий матеріал легко знайти на просторах Інтернету.

Опис параметрів файлу конфігурації Squid.conf

Squid.confце файл конфігурації проксі-сервера Squid.
Стаття дає опис параметрів squid.conf, Не зв'язуючи їх між собою.
Приклад робочого файлу конфігурації наведено в статті про Squid.

Опис параметрів файлу

# /Etc/squid/squid.conf: файл конфігурації проксі-сервера Squid http_port 192.168.0.1:3128 - де знаходиться проксі hierarchy_stoplist cgi-bin? | acl QUERY urlpath_regex cgi-bin \? | no_cache deny QUERY | -> заборона кешування файлів знаходяться в каталозі cgi-bin cache_mem 64 MB - обсяг пам'яті під кешування (наприклад 1/3 ОЗУ) maximum_object_size 10240 KB - максимальний розмір кешувального об'єкта cache_dir ufs / var / spool / squid 10240 16 256 - місцезнаходження і структура кеша squid cache_access_log /var/log/squid/access.log - місцезнаходження файлу конфігурації cache_mgr [Email protected] сайт - e-mail адміністратора cache_store_log none - заборона створення файлу реєструючий видалення і переміщення об'єктів в кеш # cache_store_log /var/log/squid/store.log ssl_unclean_shutdown on - включення підтримки роботи squid з браузерами некоректно підтримують ssl log_fqdn on - дозвіл запису в файли реєстрації доменних імен замість ip (знижує продуктивність) emulate_httpd_log on - дозвіл створення файлів реєстрації squid в форматі apache cache_effective_user proxy cache_effective_group proxy # настройка редиректора для фільтрації зовнішньої програмою redirector_bypass on - якщо жоден з екзепляри squidGuard не відповідає то працювати безпосередньо #redirector_bypass off - працювати тільки через squidGuard ## url_rewrite_program / usr / bin / squidGuard -c /etc/squid/squidGuard.conf # дозвіл використання squidGuard redirect_program / usr / bin / squidGuard -c /etc/squid/squidGuard.conf - дозвіл використання squidGuard redirect_children 5 - кількість одночасно працюючих користувачів з редиректором auth_param basic children 5 auth_param basic realm Squid proxy-caching web server auth_param basic credentialsttl 2 hours auth_param basic casesensitive off refresh_pattern ^ ftp 1440 20% 10080 refresh_pattern ^ gopher 1440 0% 1440 refresh_pattern. 0 20% 4320 # блок визначення імена списків acl all src 0.0.0.0/0.0.0.0 # визначення методу елемента acl для методу PURGE (очищення кеша) #ident_lookup on #acl allowed_users myuser root #acl aclname ident myuser root #acl aclname proxy_auth myuser root acl manager proto cache_object acl localhost src 127.0.0.1/255.255.255.255 acl localnet src 192.168.0.0/255.255.255.0 acl to_localhost dst 127.0.0.0/8 acl SSL_ports port 443 563 acl Safe_ports port 80 21 443 563 70 210 1025-65535 280 488 591 777 # відкриті порти, опис див. нижче acl CONNECT method CONNECT # визначення методу елемента acl для методу CONNECT acl our_networks src 192.168.0.0/24 acl limited src 192.168.0.31/255.255.255.255 acl full src 192.168.0.1/255.255 .255.255 acl god src 192.168.0.2/255.255.255.255 acl poor_urls url_regex -i "/ etc / squid / poor / urls" #acl poor_path urlpath_regex -i "/ etc / squid / poor / path" acl good_urls url_regex -i "/ etc / squid / good / urls "acl good_path urlpath_regex -i" / etc / squid / good / path "acl squidGuard src 192.168.0.31/255.255.255.255 #redirector_access allow squidGuard # блок настройки правил доступу http_access allow manager localhost - дозвіл доступу групі manager по протоколу з localhost # правило 2: налаштовуємо порти і метод підключення # правило 3: група good # правило 4: група full http_access deny! Safe_ports - заборона обігу до небезпечних портів http_access deny CONNECT! SSL_ports - заборона звернення до портів, невживаних SSL, за допомогою методу CONNECT #http_access deny CONNECT # заборона методу CONNECT http_access deny manager #http_access deny to_localhost # http_access allow localhost - дозвіл доступу до squid з локальної машини # http_access allow localnet - дозвіл доступу до squid з усієї локальної мережі http_access allow god all - групі god дозволено все http_access allow full all! poor_urls - групі full дозволяємо вихід всюди крім поганих сайтів http_access allow limited good_urls! poor_urls - групі limited забороняємо вихід всюди крім дозволених сайтів http_access deny all - заборона доступу для всіх хостів http_reply_access allow all icp_access allow all visible_hostname gw - ім'я шлюзу для звітів buffered_logs on - підтримка прискорення запису файлів реєстрації refresh_pattern [-i] regex min percent max- установка правил виїмки об'єкта з кеша в зв'язку з його старінням в кеші де regexчутливі до регістру маска об'єкта у вигляді регулярного виразу [-I]вказівка ​​ігнорування регістра для regex minмінімальний час (у хвилинах) для об'єктів, яким воно не задано явно, протягом якого вони (об'єкти) вважаються "свіжими". Рекомендоване значення 0. Збільшення цього значення може стати причиною помилок - видачі об'єкта з кешу, в той час як клієнтові він потрібен актуальний в це конкретний час. percentвідсоток від віку об'єкта (час минув з моменту останнього зміни) протягом котрого об'єкт вважається "свіжим". maxмаксимальний час (у хвилинах) для об'єктів, яким воно не задано явно, протягом якого вони (об'єкти) вважаються "свіжими". додаткові параметри правила override-expireвикористовувати встановлене мінімальне час "свіжості" об'єктів, якщо сервер відправляє заголовок Expires, тобто що об'єкт застарів. Використання цієї опції ПОРУШУЄ стандарт HTTP. Включаючи цю опцію, ви приймаєте на себе відповідальність за можливі проблеми. override-lastmodвикористовувати встановлене мінімальне час "свіжості" об'єктів, які були змінені недавно. reload-into-imsзмінює клієнтські запити "no-cache" або "reload" на "If-Modified-Since". Використання цієї опції ПОРУШУЄ стандарт HTTP. Включаючи цю опцію, ви приймаєте на себе відповідальність за можливі проблеми. ignore-reloadігнорування клієнтських заголовків "no-cache" або "reload". Використання цієї опції ПОРУШУЄ стандарт HTTP. Включаючи цю опцію, ви приймаєте на себе відповідальність за можливі проблеми. ignore-no-cacheігнорувати заголовки "Pragma: no-cache" і "Cache-control: no-cache" прийняті від сервера. HTTP RFC ніколи не дозволяло використовувати Pragma заголовки серверами. Це дозволяється тільки клієнтам, але сервера все одно відсилають ці заголовки. ignore-privateігнорувати заголовки "Cache-control: private" прийняті від сервера. Використання цієї опції ПОРУШУЄ стандарт HTTP. Включаючи цю опцію, ви приймаєте на себе відповідальність за можливі проблеми. ignore-authкешувати відповіді на запити авторизації, якщо зовнішній (оригінальний) сервер відправив заголовок "Cache-control: public" у відповіді. Використання цієї опції ПОРУШУЄ стандарт HTTP. Включаючи цю опцію, ви приймаєте на себе відповідальність за можливі проблеми. Правила refresh_pattern проходяться по порядку зверху вниз. Перше збіг і буде використовуватися. Якщо збігів, не знайдено, то будуть використовуватися стандартні параметри.

Матеріали про побудову роутера на базі Squid - одні з найпопулярніших на нашому сайті. Таке рішення дозволяє з мінімальними витратами (перш за все на програмну частину) організувати і впорядкувати доступ до мережі інтернет на підприємстві. Але що розглядаються нами варіанти призначалися переважно для роботи в складі робочої групи. Відсутність інтеграції з Active Directory різко знижувало зручність застосування такого роутера в доменних мережах, тому ми вирішили виправити це упущення.

В процесі підготовки даного матеріалу ми не планували окремо зупинятися на підготовці сервера, маючи намір використовувати для цього вже існуючий матеріал:. Однак, коли кількість уточнень і відмінностей стало перевищувати розумні межі, ми вирішили присвятити цьому питанню окрему статтю. У той же час ми припускаємо, що читач знайомий з вищевказаним матеріалом і тому не будемо пояснювати детально багато використовувані нами настройки і не будемо зупинятися на другорядних деталях.

Особливості інтеграції з Active Directory

У чому сенс інтеграції проксі-сервера Squid в Active Directory? Скажемо відразу, що якщо ваша основна мета - просто роздати інтернет всім і без обмежень, ну хіба що закривши соціальні мережі, то далі можна не читати, вже описана нами конфігурація повністю задовольнить ваші потреби. Основна перевага інтеграції роутера в Active Directory - це використання єдиної точки аутентифікації і управління доступом до мережі інтернет на базі вже існуючих в домені облікових записів і груп безпеки.

Звідси випливають деякі особливості. Так прозорий режим не підтримує аутентифікацію і від нього доведеться відмовитися, вказуючи налаштування проксі безпосередньо в настройках браузера. Цей процес нескладно автоматизувати за допомогою DHCP-сервера і протоколу WPAD.

Як DNS-серверів, в тому числі і на роутері, Повинні обов'язково зазначатися тільки доменні DNS, за замовчуванням DNS-сервером є кожен контролер домену. З цієї причини роутер не повинен мати ролі DNS-сервера. Також, для забезпечення інтеграції з AD, роль DHCP-сервера також слід передати Windows Server, зазвичай на один або кілька контролерів домену.

Тепер підходимо до того, заради чого все це затівалося. Аутентифікація по доменним облікових записів дозволяє використовувати єдину точку входу ( SSO, Single Sign-On), Коли користувач вводить логін і пароль один раз - при вході в систему. Це досягається застосуванням протоколу Kerberos, Який є способом аутентифікації в AD за замовчуванням. На відміну від авторів інших посібників, ми не бачимо сенсу налаштовувати або Basic-аутентифікацію, в першу чергу з міркувань безпеки. Тим більше Kerberos підтримують всі сучасні операційні системи.

Наступним кроком є ​​авторизація на основі існуючих груп безпеки, це особливо актуально при переході з ForefrontTMGабо ISA Server. Це дозволяє один раз налаштувавши Linux-сервер подальше управління доступом здійснювати звичним способом - через групи Active Directory, що дозволяє знизити поріг входження для адміністраторів.

Так як Active Directory має більш складну структуру і більшу кількість "дійових осіб", то щоб ви не заплуталися в використовуваних нами адресах і іменах хостів ми підготували невелику схему:


У наших прикладах буде використовуватися домен Active Directory з FQDN ім'ям interface31.lab, За який відповідають два контролера домену SRV-DC01і SRV-DC02з адресами 192.168.31.101 і 102 відповідно. Обидва контролера реалізовані на базі Windows Server 2012 R2.

Роутер виконаний на базі Ubuntu Server 14.04 (Debian 7/8) і має ім'я SRV-GW01з адресою 192.168.31.100. Також в мережі є група серверів зі статичними адресами 192.168.31.103-105 і клієнтські ПК, адреси яких видаються DHCP сервером з діапазону 192.168.31.111-199.

Налаштування мережі

Мережа налаштовується традиційним чином, за допомогою редагування конфігураційного файлу / Etc / network / interfaces. Приймемо що зовнішньої мережі відповідає інтерфейс eth0, А внутрішньої eth1. В результаті настройки у нас повинно вийти приблизно наступне:

Auto lo
iface lo inet loopback

auto eth0
iface eth0 inet static
address 172.18.0.106
netmask 255.255.240.0
gateway 172.18.0.1
dns-search interface31.lab
dns-nameservers 192.168.31.101 192.168.31.102

auto eth1
iface eth1 inet static
address 192.168.31.100
netmask 255.255.255.0

post-up / etc / nat

Зверніть увагу, що незважаючи на те, що в налаштуваннях зовнішнього інтерфейсу використаний зовнішній адресу і шлюз, адреси DNS-серверів вказані внутрішні. Також вказана опція dns-search, Яка визначає домен для дозволу не FQDN-імен. Це означає, що до кожного короткому імені вони будуть додані вказаний домен, наприклад, srv-dc01буде доповнено до srv-dc01.interface31.lab.

Якщо вас бентежить вказівку внутрішніх DNS в налаштуваннях зовнішньої мережевої карти, то можете перенести ці рядки в секцію eth1, на роботу сервера це не вплине.

DNS-сервера провайдера або публічні DNS слід вказати в розділі сервери пересилкивнутрішнього DNS-сервера на будь-якому з контролерів домену.

Якщо ви отримуєте мережеві настройки від провайдера по DHCP, то для використання внутрішніх серверів імен, замість DNS провайдера секція eth0 повинна мати вигляд:

Auto eth0
iface eth0 inet dhcp
dns-search interface31.lab
dns-nameservers 192.168.31.101 192.168.31.102

Таким чином явно зазначені настройки перекриють отримані автоматом від провайдера.

Зберігаємо вміст файлу, перезавантажується. Перевіряємо наявність інтернету на сервері і дозвіл імен. Наприклад, виконайте команду:

Nslookup srv-dc02

Відповісти вам повинен перший зазначений доменний сервер імен, в нашому випадку 192.168.33.101 і видати повне FQDN-ім'я хоста і його IP-адресу.

Після чого перевірте дозвіл зовнішніх імен:

Nslookup ya.ru

Ви також повинні отримати відповідь від внутрішнього сервера. На цьому настройку мережі можна вважати закінченою.

Налаштування NAT і брандмауера

Базова настройка брандмауера принципово нічим не відрізняється від варіанту роутера для робочої групи, за одним винятком. Так як наш проксі є непрозорим, то існує можливість виходу безпосередньо через NAT, якщо з якоїсь причини браузер не буде налаштований на роботу з проксі-сервером. Тому обмежимо доступ по HTTP (порт 80) для всіх клієнтів локальної мережі, за винятком серверів і окремих хостів, яким може знадобитися прямий доступ.

Ми вважаємо, що проксі-сервер потрібен в першу чергу для контролю користувачів, тому загортати на нього сервера і службові хости, які не надають доступ до інтернет користувачам, не бачимо ніякого сенсу.

Створимо і відкриємо файл / Etc / nat

touch / etc / nat

внесемо в нього наступне вміст:

# Включаємо форвардного пакетів
echo 1> / proc / sys / net / ipv4 / ip_forward

# Скидаємо настройки брандмауера
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X

# Дозволяємо доступ з локальної мережі
iptables -A INPUT -i eth1 -j ACCEPT

# Дозволяємо ініційовані нами підключення ззовні
iptables -A INPUT -i eth0 -m state --state ESTABLISHED, RELATED -j ACCEPT

# Дозволяємо підключення по SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

# Забороняємо входять ззовні
iptables -A INPUT -i eth0 -j DROP

# Дозволяємо ініційовані нами транзитні підключення ззовні
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED, RELATED -j ACCEPT

# Дозволяємо HTTP серверів
iptables -A FORWARD -i eth1 -s 192.168.31.101 -p tcp --dport 80 -j ACCEPT
...
iptables -A FORWARD -i eth1 -s 192.168.31.105 -p tcp --dport 80 -j ACCEPT

# Забороняємо HTTP
iptables -A FORWARD -i eth1 -p tcp --dport 80 -j DROP

# Забороняємо транзитний трафік ззовні
iptables -A FORWARD -i eth0 -o eth1 -j DROP

# Включаємо NAT
iptables -t nat -A POSTROUTING -o eth0 -s 192.168.31.0/24 -j MASQUERADE

секція # Дозволяємо HTTP серверівмає на увазі набір ідентичних правил для кожного хоста, з яким ми дозволяємо вихід в інтернет в обхід проксі. У нашому випадку це адреси від 192.168.31.101 до 192.168.31.105, щоб не захаращувати приклад ми написали перший і останній, розділивши їх трьома крапками (якого в реальному конфіге бути не повинно).

Збережемо файл і дамо йому права на виконання:

Chmod + x / etc / nat

перезавантажити:

Після чого можна перевірити інтернет на клієнтах, на тих, які входять в список виключень - він буде, на інших немає. Інші протоколи: пошта (SMTP, POP3, IMAP), FTP, HTTPS і т.п. повинні працювати на всіх клієнтах.

Налаштування синхронізації часу

Для успішної роботи з доменом Active Directory і проходження Kerberos-аутентифікації важливо щоб годинник роутера були синхронізовані з годинником контролера домену.

Встановимо NTP-клієнт:

Apt-get install ntp

Потім відкриємо файл конфігурації /etc/ntp.confі закомментіруем всі рядки, що починаються на server. Після чого додамо дві свої записи:

Server srv-dc01.interface31.lab
server srv-dc02.interface31.lab

Як ви вже, напевно, здогадалися, ми закоментувавши записи сторонніх серверів часу і додали в цій якості контролери домену.

Потім додамо в кінець файлу два рядки, що обмежують роботу NTP-клієнта внутрішнім інтерфейсом:

Interface ignore wildcard
interface listen eth1

Зберігаємо файл і перезапускаємо службу:

Service ntp restart

Щоб переконатися, що NTP працює тільки на внутрішньому інтерфейсі, виконайте:

Ss -l | grep 123

У висновку команди повинні бути тільки внутрішні адреси і адреси локальної петлі (localhost):

Перевірити синхронізацію можна командою:

У висновку звертаємо увагу на колонки: when-час з останньої відповіді сервера, pool- час опитування сервера, offset- різниця часу в секундах.

Якщо ваш роутер розташований у віртуальному середовищі, то при завантаженні, поки система не знає з ким синхронізувати час, час всередині віртуальної машини синхронізується з часом гипервизора. Тому або вимкніть цю функцію в налаштуваннях віртуальної машини, або синхронізуйте годинник гипервизора з годинником домену.

Налаштування кешируючого проксі-сервера Squid3

Увага!Якщо ви перенастроювати сервер для робочої групи, то обов'язково видалітьпакет dnsmasqабо інші DNS і DHCP сервера!

Важливо!Починаючи з Debian 9і Ubuntu 16.04замість пакета squid3знову використовується squid, Також аналогічним чином слід змінити всі шляхи, тобто замість / Etc / squid3використовувати / Etc / squid.

Встановимо проксі-сервер squid3 командою:

Apt-get install squid3

Відкриємо конфігураційний файл /etc/squid3/squid.confі поставимо мінімальну конфігурацію, додавши або Розкоментувати в відповідних секціях зазначені рядки.

Зазначимо acl елемент для локальної мережі:

Acl localnet src 192.168.31.0/24

Мінімальний набір списків доступу:

Http_access allow localnet
http_access allow localhost
http_access deny all

Інтерфейси, порти і режими роботи проксі:

Http_port 192.168.31.100:3128
http_port 127.0.0.1:3128

Налаштування кешу:

Cache_mem 1024 MB
maximum_object_size_in_memory 512 KB

cache_dir ufs / var / spool / squid3 2048 16 256

maximum_object_size 4 MB

Налаштування балки:

Access_log daemon: /var/log/squid3/access.log squid
logfile_rotate 31

Для squid 3.1 і нижче перший рядок повинна виглядати так:

Access_log /var/log/squid3/access.log squid

Збережіть і перевірте конфігурацію:

Squid3 -k check

Якщо немає помилок, то перезапускаємо squid:

Service squid3 restart

Розбудовуємо кеш:

Service squid3 stop
squid3 -z
service squid3 start

На DNS-сервері домену додайте A-запис для нашого роутера:

Тепер в настройках браузера вкажіть повне FQDN ім'я сервера і порт 3128:

Оскільки ніяких обмежень поки не встановлено, то ви повинні отримати доступ в інтернет.

Сподобалася стаття? Поділіться з друзями!