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 могут применяться в мобильных устройствах, таких как смартфоны и планшеты, для управления доступом к приложениям, файлам и другим ресурсам на устройстве.
  • Операционные системы. Списки правил присутствуют и в ОС (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 — один из основных способов управления безопасностью в компьютерных сетях и системах, который позволяет администраторам контролировать доступ к конфиденциальной информации и защищать системы от несанкционированного доступа и злоупотреблений.

В заключение рекомендуем посмотреть видео-лекцию про суть ACL в Linux:

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

Обучение Power BI – какие онлайн курсы аналитики выбрать

Сегодня мы поговорим о том, как выбрать лучшие курсы Power BI в Украине, особенно для…

13.01.2024

Work.ua назвал самые конкурентные вакансии в IТ за 2023 год

В 2023 году во всех крупнейших регионах конкуренция за вакансию выросла на 5–12%. Не исключением…

08.12.2023

Украинская IT-рекрутерка создала бесплатный трекер поиска работы

Unicorn Hunter/Talent Manager Лина Калиш создала бесплатный трекер поиска работы в Notion, систематизирующий все этапы…

07.12.2023

Mate academy отправит работников в 10-дневный оплачиваемый отпуск

Edtech-стартап Mate academy принял решение отправить своих работников в десятидневный отпуск – с 25 декабря…

07.12.2023

Переписки, фото, история браузера: киевский программист зарабатывал на шпионаже

Служба безопасности Украины задержала в Киеве 46-летнего программиста, который за деньги устанавливал шпионские программы и…

07.12.2023

Как вырасти до сеньйора? Девелопер создал популярную подборку на Github

IT-специалист Джордан Катлер создал и выложил на Github подборку разнообразных ресурсов, которые помогут достичь уровня…

07.12.2023