Лабораторна робота №12, Листи доступу
Код роботи: 3762
Вид роботи: Лабораторна робота
Предмет: Комп’ютерні системи та мережі
Тема: №12, Листи доступу
Кількість сторінок: 9
Дата виконання: 2015
Мова написання: українська
Ціна: безкоштовно
Мета: Оволодіти базовими навичками конфігурування листів доступу.
Короткі теоретичні відомості
Управління доступом
Механізми управління доступом в Squid дозволяють гнучко реалізовувати політику доступу до інтернет-ресурсів, ґрунтуючись на тимчасових інтервалах, інформації про кешування, доступу до певних сайтів і т.д. Управління доступом в Squid ґрунтується на двох різних компонентах: ACL-елементах і списках доступу (асcess list). Список доступу фактично дозволяє або забороняє доступ до сервісу.
Деякі найважливіші типи ACL-елементів перераховані нижче
src: IP-адреса джерела (клієнт)
dst: IP-адреса призначення (сервер)
myip: локальний IP-адресу клієнтського з'єднання
srcdomain: ім'я домену джерела (клієнт)
dstdomain: ім'я домену призначення (сервер)
srcdom_regex: шаблон регулярного виразу джерела (клієнт)
dstdom_regex: шаблон регулярного виразу призначення (сервер)
time: час дня і день тижня
url_regex: шаблон регулярного виразу для URL
urlpath_regex: шаблон регулярного виразу для частини URL, виключаючи протокол і ім'я хоста
port: номер порту призначення (сервер)
myport: номер локального порту куди підключається клієнт
proto: тип протоколу передачі (http, ftp, etc)
method: метод HTTP-запиту (get, post, etc)
browser: шаблон регулярного виразу збігається з заголовком user-agent із запиту
ident: рядок збігу з ім'ям користувача
ident_regex: шаблон регулярного виразу імені користувача
src_as: номер Автономної Системи джерела (клієнт)
dst_as: номер Автономної Системи призначення (сервер)
proxy_auth: аутентифікація користувача через зовнішній процес
proxy_auth_regex: регулярний вираз аутентифікації користувача через зовнішній процес
snmp_community: рядок SNMP-спільноти
maxconn: обмеження максимального кількості з'єднань з одного клієнтського IP-адреси
req_mime_type: шаблон регулярного виразу для заголовка content-type запиту
arp: Ethernet (MAC)-адреса
Регулярні вирази (англ. Regular expressions) - формальна мова пошуку і здійснення маніпуляцій з підрядками в тексті, заснований на використанні метасимволов (символів-джокерів, англ. Wildcard characters). Для пошуку використовується рядок-зразок (англ. Pattern, по-українськи її часто називають «шаблоном», «маскою» "паттерном" ), що складається з символів і метасимволів і задає правило пошуку. Для маніпуляцій з текстом додатково задається рядок заміни, яка також може містити в собі спеціальні символи
Синтаксис регулярних виразів можна подивитися за посиланням https://msdn.microsoft.com/ru-ru/library/ae5bf541%28v=vs.100%29.aspx
Основні регулярні вирази включають в себе наступні метасимволи (про їх значеннях нижче):
• .
• [ ]
• [^ ]
• ^
• $
• *
• { } — перший варіант для { } (в розширених)
• ( ) — перший варіант для ( )(в розширених)
• n, где n — номер от 1 до 9
Особливості використання даних метасимволов:
• Зірочка повинна слідувати після висловлення, що відповідає одиничному символу. Приклад: [xyz] *.
• Вираз (блок ) * слід вважати неправильним. У деяких випадках воно відповідає нулю або більше повторень блоку рядків. В інших воно відповідає рядку блоку *.
• Усередині символьного класу спеціальні значення символів, в основному, ігноруються. Особливі випадки:
• Щоб додати символ ^ в набір, його слід помістити туди не першим.
• Щоб додати символ -в набір, його слід помістити туди першим або останнім. наприклад:
• шаблон DNS-імені, куди можуть входити літери, цифри, мінус і точка-роздільник: [-0-9a-zA-Z.];
• будь-який символ, крім мінуса і цифри: [^ -0-9].
• Щоб додати символ [аb] в набір, його слід помістити туди першим. наприклад: [] [Ab] відповідає], [, a або b.
Щоб застосувати, треба визначити набір ACL і застосувати до них правила. Формат ACL-виразів:
асl acl_element_name type_of_acl_element values_to_acl
Зауваження:
1. acl_element_name може бути любим ім'ям, призначеним користувачем ACL елементу.
2. Два ACL не можуть мати одинакових імені;
3. Будь-який ACL складається із списку значень. При перевірці на відповідність декільком значенням використовується АБО-логика. Іншими словами, ACL елемент відповідає, коли знайдена відповідність хоча б для одного із значень.
4. Не всі ACL-эементы можуть використовуватися із списками доступу всіх типів.
5. Різні ACL елементи, розташовані на різних рядках, групуються Squid'ом в єдиний список;
Доступні декілька різних типів списків доступу. Ті які ми збираємося використовувати приведені нижче:
* http_access: Дозволяє HTTP-клієнтам здійснювати доступ на HTTP-порт. Це основний список управління доступом.
* no_cache: Визначає кешування відповідей на запити.
Зауваження:
1. Правила перевіряються в тому порядку, в якому вони записані; перевірка уривається, як тільки знайдена відповідність одному з правил;
2. Список доступу може складатися з декількох правил;
3. Якщо не була знайдена відповідність жодному з правил, то виконується дія за умовчанням, протилежне останньому правилу в списку. Дію за умовчанням краще указувати явно.
4. Над всіма елементами в списку доступу виконується операція І (AND), а декілька виразів http_acess об'єднуються операцією АБО (OR). Виконання відбувається таким чином:
5. http_access Action statement1 AND statement2 AND statement OR http_access Action statement3
6. Запам'ятайте, що правила завжди читаються від низу до верху.
Управління доступом
Існують наступні типи списків доступу:
http_access: надати доступ HTTP-клієнтам (броузерам) до порту HTTP. Це основний тип списку контролю доступу.
icp_access: дозволяє братнім кешам доступ до вашого кешу по ICP.
miss_access: дозволяє певним клієнтам передавати cache misses через ваш кеш.
no_cache: оголошує відповіді, які не повинні кешироваться.
redirector_access: контролює, які запити повинні пройти через процес редиректора.
ident_lookup_access: котнролює, які запити вимагають Ident lookup.
always_direct: контролює, які запити завжди повинні надсилатися безпосередньо до сервера призначення.
never_direct: контролює, які запити ніколи не повинні надсилатися безпосередньо до сервера призначення.
snmp_access: контролює доступ клієнтів до кешу по SNMP.
broken_posts: визначає запити, для яких squid додає додатковий CRLF після повідомлень POST як того вимагають деякі сервери.
cache_peer_access: контролює, які запити повинні бути передані сусідському кешу (peer).
Різноманітні механізми і правила управління доступом пропонують дуже хороший і гнучкий шлях контролю клієнтського доступу до Інтернет. Приклади настройок, що часто використовуються, приведені нижче; у жодному випадку не можна обмежуватися тільки цими настройками.
1. Дозволити доступ до Інтернет вибраним машинам
асl allowed_clients src 192.168.0.10 192.168.0.20 192.168.0.30
http_access allow allowed_clients
http_access deny !allowed_clients
Тут дозволений доступ до Інтернет машинам з IP-адресами 192.168.0.10, 192.168.0.20 і 192.168.0.30, а всім іншим (в списку їх немає) -- заборонений.
2. Обмежити доступ певним часом:
асl allowed_clients src 192.168.0.1/255.255.255.0
асl regular_days time MTWHF 10:00-16:00
http_access allow allowed_clients regular_days
http_access deny allowed_clients
Тут доступ надається всім машинам мережі 192.168.0.1 протягом часу з понеділка по п'ятницю з 10:00 ранку до 4:00 дня.
3. Доступ в різний час для різних клієнтів
асl host1 src192.168.0.10
асl host2 src 192.168.0.20
асl host3 src 192.168.0.30
асl morning time 10:00-13:00
асl lunch time 13:30-14:30
асl evening time 15:00-18:00
http_access allow host1 morning
http_access allow host1 evening
http_access allow host2 lunch
http_access allow host3 evening
http_access deny all
Вищенаведені правила дозволяють доступ комп'ютеру host1 ранком (з 10:00 до 13:00) і увечері (з 15:00 до 18:00), а комп'ютерам host2 і host3 після обіду (з 13:30 до 14:30) і увечері відповідно (з 15:00 до 18:00).
Зауваження:
Всі елементи запису доступу об'єднуються операцією І (AND) і виконуються таким чином
http_access Action statement1 AND statement2 AND statement OR.
множинні оголошення http_access об’єднуються операцією АБО (OR), а елементи доступу в них об'єднуються операцією І. У зв'язку з цим рядок
http_access allow host1 morning evening
ніколи не спрацює, оскільки виразів morning AND evening ніколи не буде істинним (ранок І вечір ніколи не пересікаються), і, отже, ніяких дій не буде.
4. Блокування сайтів
Squid може запобігти доступу до певних сайтів або сайтів, адреса яких містить певне слово. Це може бути реалізовано таким чином:
асl allowed_clients src 192.168.0.1/255.255.255.0
асl banned_sites url_regex abc.com
http_access deny banned_sites
http_access allow allowed_clients
Аналогічним чином можна заборонити доступ до сайтів, адреса яких містить визначене слів, наприклад dummy і fake
асl allowed_clients src 192.168.0.1/255.255.255.0
асl banned_sites url_regex dummy fake
http_access deny banned_sites
http_access allow allowed_machines
асl allowed_clients src 192.168.0.1/255.255.255.0
асl banned_sites url_regex "/etc/banned.list"
http_access deny banned_sites
http_access allow allowed_clients
5. Оптимізація
Squid може обмежувати максимальну кількість з'єднань за допомогою елемента maxconn. Для використовування цієї можливості, повинна бути включена підтримка client_db.
асl mynetwork 192.168.0.1/255.255.255.0
асl numconn maxconn 5
http_access deny mynetwork numconn
Зауваження: ACL maxconn використовує порівняння "меньше-чим". ACL спрацьовує, якщо кількість з'єднань більше заданого значення. Тому maxconn і не указується в списку http_access.
6. Кешування
Відповіді на запити кешуються і це добре для статичних сторінок. Немає ніякої потреби кешувати cgi-сторінки або сервлети. Цьому можна запобігти використовуванням ACL-елемента no_cache.
асl cache_prevent1 url_regex cgi-bin /?
асl cache_prevent2 url_regex Servlet
no_cache deny cache_prevent1
no_cache deny cache_prevent2
7. Створення власних повідомлень про помилки
Ви можете створити свої власні повідомлення про помилки доступу за допомогою опції deny_info. Всі повідомлення про помилки Squid за умовчанням зберігаються в каталозі /etc/squid/errors. Каталог з файлами повідомлень про помилки може бути змінений за допомогою error_directory. Можна навіть змінити самі повідомлення.
асl allowed_clients src 192.168.0.1/255.255.255.0
асl banned_sites url_regex abc.com
http_access deny banned_sites
deny_info ERR_BANNED_SITE banned_sites
http_access allow allowed_clients
У вищенаведеному прикладі спеціальне повідомлення відображається як тільки користувач намагається дістати доступ до сайту, що містить в назві заборонене слово. Файл з ім'ям ERR_BANNED_SITE повинен знаходиться у вищенаведеному каталозі помилок. Повідомлення про помилку повинне бути в HTML-форматі.
Всі розглянуті приклади, демонструють лише невелику частину реальних можливостей ACL. Пояснення призначення ACL-елементів і елементів доступу, необхідне для більш серйозного їх використовування можна знайти в FAQ на домашній сторінці Squid.
Завдання до виконання роботи
1. Отримайте пароль адміністратора для роботи.
2. Створіть лист доступу по якому буде відкрито доступ до мережі комп’ютеру, що знаходиться справа від Вас, і заборонено – тому що зліва від Вас.
3. Створіть фільтр для блокування сайтів із забороненими словами.
4. Створіть фільтр для блокування банерів.
5. Дозвольте доступ комп’ютеру 192.168.44.8 на час вашої пари.
6. Перевірте працездатність системи.
7. Оформіть звіт.