ACL (Access Control List): вчимося працювати з доступами у різних системах

Сергій Бондаренко

У цій статті йдеться про використання ACL (Access Control List). Ми розповімо про його призначення, які є особливості, різновиди та торкнемося його налаштування.

Що таке ACL

Список правил ACL ( Access Control List) — це один з основних способів керування безпекою в комп’ютерних мережах та системах.

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

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

Також ACL використовуються в різних операційних системах, як-от Windows, Linux та MacOS, а підтримка цього списку правил часто заздалегідь інтегрована в мережевому обладнанні, такому як маршрутизатори та комутатори.

Області застосування списку правил

ACL (Access Control List) можуть застосовуватись у різних сферах, включаючи:

  • Корпоративні мережі. Адміністратори мереж звертаються до списку правил для керування доступом користувачів та груп до ресурсів мережі. Вони можуть обмежувати доступи до файлів, каталогів, регулювати можливість використання принтерів, електронної пошти, відвідувати вебсайти тощо.
  • Системи керування базами даних. ACL використовуються для керування доступом до різних частин баз даних, як-от таблиці, уявлення, процедури та тригери.
  • Мережеве обладнання. ACL застосовуються в маршрутизаторах, комутаторах та іншому мережному обладнанні для керування доступом до мережевих ресурсів, таких як порти, протоколи та сервіси.
  • Хмарні послуги. ACL задіяні у хмарних сервісах для керування доступом до різних частин та функцій хмарних ресурсів, як-от, наприклад, сховища даних, віртуальні машини, програми та ін.
  • Мобільні пристрої. ACL можуть застосовуватись у мобільних пристроях, як-от смартфони та планшети, для керування доступом до програм, файлів та інших ресурсів на пристрої.
  • Операційні системи. Список ACL правил присутній і в ОС (Windows, Linux і MacOS). Він дозволяє контролювати доступ до файлів, папок та інших ресурсів на комп’ютері.

Особливості ACL

За допомогою ACL можна визначити, які користувачі або групи користувачів мають доступ до яких ресурсів та встановити рівень доступу (читання, запис, виконання тощо) для кожного користувача або групи користувачів.

Гранулярність

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

Розрізняють кілька рівнів гранулярності ACL:

  • Рівень об’єкта. Права доступу призначаються безпосередньо на об’єкти, такі як файли, папки або таблиці баз даних. Наприклад, адміністратор може встановити різні рівні доступу до файлу залежно від користувача чи групи.
  • Рівень атрибуту. На цьому рівні гранулярність права доступу призначаються на основі атрибутів об’єкта, таких як тип, розмір або розташування. Наприклад, адміністратор може встановити різні рівні доступу до файлів, які містять конфіденційну інформацію порівняно зі звичайними файлами.
  • Рівень операцій. У цьому випадку права доступу призначаються на основі операцій, які можуть бути виконані над об’єктом, наприклад читання, запис або видалення. Наприклад, адміністратор може встановити різні рівні доступу для користувачів або груп, залежно від того, які операції вони можуть виконувати з файлами.
  • Рівень часу. Права доступу призначаються на основі часу доступу до об’єктів. Наприклад, адміністратор може встановити різні рівні доступу до файлів залежно від часу дня чи дня тижня.

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

Ієрархія

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

Переносність

ACL властива переносимість правила можна застосовувати до різних типів ресурсів у різних операційних системах та середовищах, у тому числі до файлів, папок, баз даних, мережевих ресурсів тощо. 

Аудит

ACL дозволяє вести аудит — тобто записувати та аналізувати журнали доступу, щоб відстежувати, які користувачі отримують доступ до ресурсів та які операції вони виконують.

Гнучкість

У списку правил можна визначати права доступу на основі часу доступу, протоколу доступу (наприклад, SSH, HTTP або FTP) та інших факторів, що дозволяє точно налаштувати доступ до ресурсів відповідно до вимог безпеки.

Види Access Control List

Існує кілька видів Access Control List (ACL), які можуть бути використані для управління доступом до різних ресурсів. Розглянемо деякі найпоширеніші з них:

  • Дискреційний контроль доступу (DAC) це різновид ACL, за якого права доступу до ресурсу визначаються власником ресурсу. Наприклад, власник файлу може визначити, які користувачі можуть переглядати, редагувати чи видаляти цей файл.
  • Обов’язковий контроль доступу (MAC) це тип ACL, у якому права доступу до ресурсу визначаються системою безпеки з урахуванням політик безпеки. Цей тип ACL зазвичай використовується у високорівневих державних та корпоративних системах, де безпека є пріоритетом.
  • Рольовий контроль доступу (RBAC) — тип, коли права доступу до ресурсу визначаються з урахуванням ролей, які виконують користувачі. Наприклад, у великій організації адміністратор може створити ролі, такі як «менеджери», «користувачі» та «гості», та визначити права доступу для кожної з цих ролей.
  • Контроль доступу на основі атрибутів (ABAC) — тип ACL, у якому права доступу до ресурсу визначаються з урахуванням атрибутів користувача чи ресурсу. Наприклад, у системі керування обліковими записами права доступу можуть бути визначені на основі атрибутів, таких як група користувача, дата та час доступу тощо.
  • Контроль доступу на основі політик (PBAC) це тип, за якого права доступу до ресурсів визначаються на основі політик безпеки. Ці політики визначають, хто та як може отримати доступ до ресурсу. Вони можуть включати різні параметри, такі як група користувачів, джерело запиту, протокол тощо.

Деякі типи ACL варто розглянути ще ближче.

Динамічний контроль доступу

Dynamic Access Control (DAC) — це метод керування доступом до ресурсів, який дозволяє динамічно змінювати права доступу на основі умов, що змінюються.

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

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

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

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

Рефлексивний (Reflexive ACL)

Цей метод керування доступом до мережевих ресурсів заснований на аналізі та відстеження мережного трафіку.

Рефлексивні ACL (RACL) дозволяють обмежувати доступ до мережевих ресурсів на основі інформації, що міститься у самому трафіку.

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

RACL можуть фільтрувати трафік, ґрунтуючись на різних параметрах, таких як IP-адреса джерела та призначення, номери портів, протоколи тощо. Прикладом використання RACL може бути блокування трафіку від зовнішніх пристроїв, які намагаються встановити з’єднання з внутрішніми пристроями, коли зовнішній трафік не супроводжується внутрішнім трафіком.

Ключова особливість RACL — здатність динамічно адаптуватися до мережного трафіку, що робить їх більш гнучкими, ніж статичні ACL. Але використання RACL може вимагати додаткових ресурсів мережі для обробки пакетів, що може вплинути на продуктивність мережі.

Налаштування RACL може залежати від обладнання та мережної архітектури. Зазвичай налаштування RACL включає:

  • визначення правил фільтрації на основі параметрів пакетів, як-от IP-адреса джерела та призначення, протоколи та порти;
  • встановлення додаткових параметрів, таких як час життя правил та спосіб їх застосування.

Time-based Access Control List

Time-based ACL (TBACL) — це метод керування доступом, який дозволяє обмежувати доступ до мережних ресурсів на основі часу дня, тижня або місяця.

TBACL використовується для керування доступом до мережних ресурсів у певний час або дня тижня, щоб знизити ризики безпеки та оптимізувати використання мережних ресурсів. Наприклад:

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

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

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

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

Налаштування TBACL може залежати від використовуваного обладнання та мережевої архітектури. Зазвичай вона включає:

  • визначення правил обмеження доступу з урахуванням часу;
  • налаштування тимчасових параметрів та встановлення додаткових параметрів, таких як порти, IP-адреси та протоколи.

Важливо! При налаштуванні TBACL необхідно враховувати часові пояси та перехід на літній час, щоб уникнути помилок при обмеженні доступу.

ACL у Linux

У Linux Access Control List реалізований як додатковий механізм контролю доступу до файлів і каталогів, який дозволяє гранулярніше управляти правами доступу, ніж стандартна система прав доступу.

Цей інструмент працює на основі розширених атрибутів файлової системи (Extended File System Attributes), які додають додаткові поля для кожного файлу чи каталогу, де зберігаються права доступу для кожного користувача чи групи.

Реалізація ACL у Linux включає дві команди для роботи з ACL:

  • setfacl — встановлює ACL для вказаного файлу чи каталогу;
  • getfacl — отримує поточні установки ACL для вказаного файлу або каталогу.

Команда setfacl дозволяє задати права доступу на читання, запис та виконання для певних користувачів чи груп користувачів. Наприклад, щоб надати користувачеві testuser право на читання та запис файла myfile.txt, потрібно виконати таку команду:

setfacl -m u:testuser:rw myfile.txt

Команда getfacl дозволяє отримати поточні установки ACL для вказаного файлу або каталогу. Наприклад, щоб дізнатися, які ACL встановлені для файла myfile.txt, потрібно виконати таку команду:

getfacl myfile.txt

Приклад налаштування статичного Access Control List (ACL)

Розглянемо приклад налаштування статичного Access Control List (ACL) на маршрутизаторі Cisco для обмеження доступу до вебсервера (IP-адрес 192.168.1.10) мережі 192.168.0.0/24 тільки для окремих IP-адресов.

Визначаємо номер ACL та створюємо його:

Router(config)# access-list 10 permit any

Додаємо правило для дозволу доступу до вебсервера лише для обраних IP-адрес. У цих командах ми дозволяємо доступ до вебсервера лише з IP-адрес 192.168.2.10 і 192.168.2.11:

Router(config)# access-list 10 permit tcp host 192.168.2.10 host 192.168.1.10 eq 80

Router(config)# access-list 10 permit tcp host 192.168.2.11 host 192.168.1.10 eq 80

Усі інші запити до вебсервера (з усіх IP-адрес, крім тих, які ми дозволили в попередніх правилах) відхиляємо:

Router(config)# access-list 10 deny tcp any host 192.168.1.10 eq 80

Застосовуємо ACL до інтерфейсу FastEthernet 0/0 вхідним напрямком, щоб обмежити доступ до вебсервера лише для тих IP-адрес, які ми дозволили в правилах ACL.

Router(config)# interface FastEthernet 0/0

Router(config-if)# ip access-group 10 in

Це приклад налаштування статичного ACL на маршрутизаторі Cisco. Він може змінюватись в залежності від використовуваного обладнання та мережевої архітектури. Важливо пам’ятати, що неправильне налаштування ACL може призвести до блокування трафіку або порушення безпеки мережі, тому рекомендується ретельно перевіряти правила ACL перед застосуванням.

Приклад скрипта автоматизації налаштування Access Control List (ACL)

Цей приклад скрипта на Python дозволяє створювати статичний ACL для дозволу або блокування трафіку з певних IP-адрес та/або з певних портів. Скрипт призначений для використання на маршрутизаторах Cisco із встановленою бібліотекою Netmiko, яка дозволяє керувати обладнанням через SSH-протокол:

from netmiko import ConnectHandler

# дані для підключення до маршрутизатора
device = {
    'device_type': 'cisco_ios',
    'ip': '192.168.1.1',
    'username': 'admin',
    'password': 'password',
    'port': 22,
}

# список IP-адрес та портів для дозволу або блокування
allowed_ips = ['192.168.2.10', '192.168.2.11']
blocked_ports = [22, 23]

# створення та застосування ACL
acl_name = 'ACL1'
acl_rules = []
acl_rules.append('access-list ' + acl_name + ' remark Allow or block specific IP addresses and ports')
acl_rules.append('access-list ' + acl_name + ' permit ip ' + ', '.join(allowed_ips) + ' any')
for port in blocked_ports:
    acl_rules.append('access-list ' + acl_name + ' deny tcp any any eq ' + str(port))
acl_rules.append('access-list ' + acl_name + ' permit ip any any')

# підключення до маршрутизатора та виконання команд налаштування ACL
with ConnectHandler(**device) as ssh:
    ssh.enable()
    for rule in acl_rules:
        ssh.send_command(rule)
    ssh.send_command('interface FastEthernet 0/0')
    ssh.send_command('ip access-group ' + acl_name + ' in')

Ми вказуємо список IP-адрес, яким дозволено доступ, та список портів, які мають бути заблоковані. Потім ми створюємо ACL за допомогою списку правил та застосовуємо його до інтерфейсу вхідним напрямком.

Цей приклад скрипту можна легко доопрацювати та адаптувати під конкретні вимоги, залежно від того, які правила ACL потрібно налаштувати.

Висновок

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

Останні статті

Brave1 збільшив гранти для оборонних розробок: можна отримати до 2 млн гривень

Кластер Brave1 збільшує гранти для оборонних розробок — тепер можна отримати від 500 тис до…

10.05.2024

Softserve, Luxoft та Infopulse. З’явився рейтинг найбільших платників податків серед IT-компаній

За 2023 рік IT-компанії сплатили сплатили в державний бюджет 20,8 мільярда гривень податків. Це 7,4%…

10.05.2024

«За заслуги перед компанією»: Microsoft розморозить підвищення зарплат співробітникам

Корпорація Microsoft планує відновити підвищення зарплат для найбільш ефективних співробітників. Про це повідомив Insider. Вірогідне…

10.05.2024

Мінекономіки запустило пільгові гранти для виробників дронів

Міністерство економіки запропонувало виробникам дронів пільгові гранти від держави за програмою «Переробка». Про це йдеться…

09.05.2024

Дочекалися. В квітні попит на айтівців без досвіду був вищий, ніж на досвідчених фахівців

В квітні попит на недосвідчених айтівців був вищий, аніж на тих, хто має 3-4 роки…

09.05.2024

Dell буде відстежувати переміщення та присвоювати рейтинг «прогульникам» офісу

Американська компанія Dell після зміни політики щодо ремоуту посилює контроль за працівниками. Зокрема, відстежує фізичне…

09.05.2024