Acl: в поисках идеального решения

Содержание

1 Стандартные и расширенные ACL
1.1 Стандартные ACL
1.1.1 Пример настройки стандартного ACL
1.1.2 Применение ACL к vty
1.2 Расширенные ACL
1.2.1 Пример настройки расширенного ACL
1.3 Команды просмотра
2 Другие виды ACL
2.1 Динамические ACL
2.1.1 Пример настройки динамических ACL
2.1.2 Проверка работы
2.1.3 Пример конфигурации маршрутизатора
2.2 Reflexive ACL
2.2.1 Настройка RACL
2.2.1.1 Настройка таймеров
2.2.2 Пример конфигурации
2.3 Временные интервалы для ACL
2.3.1 Настройка параметров временного интервала
2.3.2 Применение временного интервала к ACL
2.4 ACL и log
2.5 Перенумерация правил ACL
2.6 Object-group

Операции над объектами c ACL

В заключении хочу еще раз обратить внимание на операции с обектами у которых установлены ACL, такие как копирование, перемещение, архивирование. Выше мы уже упоминали о них

Некоторые замечания:

  • При перемещении (mv) никаких дополнительных параметров ненужно;
  • При копировании (cp), необходимо использовать ключ -p, в противном случае ACL права будут потеряны;

Внимание!!!
По умолчанию графический интерфейс при копировании не учитывает ACL права!

При архивировании или распаковке вместо tar используйте утилиту star.

Утилиту star нужно будет установить из репозиториев: apt-get install star

Вот некоторые часто используемые опции star:

Опция Описание
-c Создаёт файл архива
-n Отключает извлечение файлов, используется в сочетании с -x для просмотра списка извлекаемых файлов.
-r Заменяет файлы в архиве. Файлы записываются в конец архива, заменяя любые файлы с тем же путём и именем.
-t Выводит содержимое файла архива.
-u Обновляет файл архива. Файлы записываются в конец архива, если их ещё не было в архиве или если они новее, чем файлы с тем же именем в архиве.
-x Извлекает файлы из архива. Если используется с ключом -U и файл в архиве старее, чем соответствующий файл в файловой системе, такой файл не извлекается.
-help Выводит наиболее важные параметры.
-xhelp Выводит менее важные параметры.
-/ Оставляет ведущую косую черту в имени файла при извлечении файлов из архива. По умолчанию она убирается.
-acl При создании архива или извлечении файлов, архивирует или восстанавливает все ACL, связанные с файлами или каталогами.

Пример для архивирования утилитой star с сжатием:

star -czv -Hexustar -acl -f /tmp/homedir.tgz /media/Profil/home

Пример для разархивирования в текущий каталог:

star -xv -Hexustar -acl -f homedir.tgz

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

— Соловьев Алексей aka allexnew upd 23.04.2013 16:05

Наличие дополнительных групп может также облегчить написание правил монтирования ресурсов при входе в систему, например, с использованием модуля pam_mount

Почитать можно .

Обратите внимание, что в других операционных системах Unix, например, FreeBSD 5.0 и выше, потребуются некоторые дополнительные действия по включению ACL. Также, возможно, вам потребуется установить пакет acl, использовав следующую команду: sudo apt-get install acl.

Полезно для отката разрешений

Разумеется, необходимо сначала сделать резервную копию разрешений в текстовый файл file. Сделать можно либо вручную, в формате вывода getfacl, либо использовать команду getfacl -R file > file_out. Где file это файл(ы) или каталоги с которых нужно снять ACL, а file_out — текстовый файл куда запишутся снятые ACL права.

Маска — это объединение всех разрешений группы-владельца и всех записей пользователей и групп. Маска задает максимальные права доступа для всех пользователей, за исключением хозяина и групп. Установка маски представляет собой самый быстрый путь изменить фактические (эффективные) права доступа всех пользователей и групп. Например, маска (r — -) показывает, что пользователи и группы не могут иметь больших прав, чем просто чтение, даже если им назначены права доступа на чтение и запись. Например, если на файл koshka назначили ACL пользователю allexserv c правами (r w x), а эффективную маску выставили в (r x), то пользователь лишается права (w), не смотря на то, что по ACL он имеет это право.

Этот параметр работает только если архив представляет собой файл или незаблокированную ленту, которую можно стирать.

See Also

(1), creat(2), getfacl(1), (1), mkdir(2), mkfifo(2), mknod(2), open(2), setfacl(1), stat(2), umask(1)

POSIX 1003.1e DRAFT 17

POSIX 1003.1e FUNCTIONS BY CATEGORY

       ACL storage management
acl_dup(3), acl_free(3), acl_init(3)

ACL entry manipulationacl_copy_entry(3), acl_create_entry(3), acl_delete_entry(3), acl_get_entry(3), acl_valid(3)

acl_add_perm(3), acl_calc_mask(3), acl_clear_perms(3), acl_delete_perm(3), acl_get_permset(3), acl_set_permset(3)

acl_get_qualifier(3), acl_get_tag_type(3), acl_set_qualifier(3), acl_set_tag_type(3)

ACL manipulation on an objectacl_delete_def_file(3), acl_get_fd(3), acl_get_file(3), acl_set_fd(3), acl_set_file(3)

ACL format translation(3), acl_copy_ext(3), acl_from_text(3), acl_to_text(3), acl_size(3)

POSIX 1003.1e FUNCTIONS BY AVAILABILITY
The first group of functions is supported on most systems with POSIX-like access control lists, while the second group is supported on fewer systems. For
applications that will be ported the second group is best avoided.

(3), (3), (3), (3), (3), (3), (3), (3), (3),
(3), (3)

(3), (3), (3), (3), (3), acl_copy_int(3), (3), (3),
(3), (3), (3), (3), (3), (3), (3),
(3), (3)

Linux Extensions

These non-portable extensions are available on Linux systems.

acl_check(3), acl_cmp(3), acl_entries(3), acl_equiv_mode(3), acl_error(3), acl_extended_fd(3), acl_extended_file(3), acl_extended_file_nofollow(3),
acl_from_mode(3), acl_get_perm(3), acl_to_any_text(3)

Andreas Gruenbacher, <a.gruenbacher@bestbits.at>

Linux ACL March 23, 2002 Linux ACL

4.6. Как реализовать целостную, консистентную, динамическую политику по всей сети?

4.6.2. Политика качества обслуживания (QoS)

  • Сложность конфигурации функционала QoS и отладки его работы.
  • Сложность внесения изменений в реализацию политики QoS.
  • Неконсистентность функционала QoS и (в ряде случаев) заметные различия в методах его настройки на оборудовании, образующем сеть.
  • Сложность надлежащей классификации трафика из-за неэффективности имеющихся средств классификации (например, на основании адресов и портов сетевого и транспортного уровней) или недоступности на имеющемся оборудовании эффективных средств (например, NBAR2, сочетающем механизмы DPI, DNS-AS, статистический и поведенческий анализ и ряд других средств).

Настройка

Сами ACL создаются отдельно, то есть это просто некий список, который создается в глобальном конфиге, потом он присваивается к интерфейсу и только тогда он и начинает работать. Необходимо помнить некоторые моменты, для того, чтобы правильно настроить списки доступа:

  • Обработка ведется строго в том порядке, в котором записаны условия
  • Если пакет совпал с условием, дальше он не обрабатывается
  • В конце каждого списка доступа стоит неявный deny any (запретить всё)
  • Расширенные ACL нужно размещать как можно ближе к источнику, стандартные же как можно ближе к получателю
  • Нельзя разместить более 1 списка доступа на интерфейс, на протокол, на направление
  • ACL не действует на трафик, сгенерированный самим маршрутизатором
  • Для фильтрации адресов используется WildCard маска
Стандартный список доступа
  • permit: разрешить
  • deny: запретить
  • remark: комментарий о списке доступа
  • address: запрещаем или разрешаем сеть
  • any: разрешаем или запрещаем всё
  • host: разрешаем или запрещаем хосту
  • source-wildcard: WildCard маска сети
  • log: включаем логгирование пакеты проходящие через данную запись ACL
Расширенный список доступа
  • protocol source: какой протокол будем разрешать или закрывать (ICMP, TCP, UDP, IP, OSPF и т.д)
  • deny: запретить
  • operator: 
    A.B.C.D — адрес получателя
    any — любой конечный хост
    eq — только пакеты на этом порте
    gt — только пакеты с большим номером порта
    host — единственный конечный хост
    lt — только пакеты с более низким номером порта
    neq — только пакеты не на данном номере порта
    range — диапазон портов
  • port: номер порта (TCP или UDP), можно указать имя
  • established: разрешаем прохождение TCP-сегментов, которые являются частью уже созданной TCP-сессии
Прикрепляем к интерфейсу
  • in: входящее направление
  • out: исходящее направление
Именованные списки доступа
  • standard: стандартный ACL
  • extended: расширенный ACL
  • default: установить команду в значение по умолчанию
Ограничение доступа к маршрутизатору

 — переходим в режим настройки виртуальных линий. — настраиваем логин и пароль, а также закрепляем список доступа с разрешенными IP-адресами.

Динамические списки доступа

 — создаем пользователей для подключения через Telnet. — разрешаем подключаться к серверу по Telnet всем узлам. — закрепляем 101 ACL за интерфейсом в входящем направлении. — как только пользователь аутентифицируеться, сеть 192.168.30.0 будет доступна, через 5 минут бездействия сеанс закроется.

Рефлексивные списки доступа

 — заставляем маршрутизатор отслеживать трафик, который инициировался изнутри. — создаем входящую политику, которая требует, чтобы маршрутизатор проверял входящий трафик, чтобы видеть инициировался ли изнутри и связываем TCPTRAFFIC к INBOUNDFILTERS. — применяем входящий и исходящий ACL на интерфейс.

Ограничение по времени

 — создаем список времени, в котором добавляем дни недели и время. — применяем time-range к ACL. — закрепляем ACL за интерфейсом.

Поиск проблем

R#show access-lists {ACL номер | имя} — смотрим информацию о списке доступа.
R#show access-lists — смотрим все списки доступа на маршрутизаторе.

Пример

Мы видим что у нас есть два ACL (стандартный и расширенный) под названиями nick и nick5. Первый список разрешает хосту 172.16.1.1 обращаться по IP (это значит что разрешены все протоколы работающие поверх IP) к хосту 10.0.0.5. Весь остальной трафик запрещен показывает команда deny ip any any. Рядом с этим условием в нашем примере пишет (16 match(es)). Это показывает что 16 пакетов попали под это условие.
Второй ACL разрешает проходить трафик от любого источника в сети 172.16.0.0/16.

Практика

Я собрал лабораторные работы для Packet Tracer с 5 главы курса CCNA 4 по теме ACL. Если у вас есть желание закрепить знания на практике, пожалуйста — ссылка, зеркало — FTP. Размер — 865.14 KB.

Стандартные и расширенные ACL

Именованные ACL могут быть стандартные и расширенные. У них немного отличается синтаксис с нумерованными:

ip access-list <extended|standard> name
   <permit|deny> <tcp|udp> source source-wildcard ] destination destination-wildcard ] 

В конце любого ACL есть невидимое правило deny ip any any.

Стандартные ACL

Стандартный ACL позволяет указывать только IP-адрес отправителя:

router(conf)# access-list <1-99> <permit | deny | remark>  source 

Применение ACL на интерфейсе:

router(conf-if)# ip access-group <1-99> <in | out>

Пример настройки стандартного ACL

Пример стандартного нумерованного ACL, который запрещает хосту 10.0.3.2 доступ в сегмент сервера, но разрешает всем остальным:

R1(conf)# access-list 1 deny 10.0.3.2
R1(conf)# access-list 1 permit any

Применение ACL на интерфейсе (если применить ACL на интерфейсе fa0/0 в направлении in, то он заблокирует и доступ хоста 10.0.3.2 в интернет):

R1(conf)# interface fa0/1
R1(conf-if)# ip access-group 1 out

Тот же пример только с именованным ACL:

R1(conf)# ip access-list standard Test_stand
R1(config-std-nacl)# deny 10.0.3.2
R1(config-std-nacl)# permit any

Применение ACL на интерфейсе:

R1(conf)# interface fa0/1
R1(conf-if)# ip access-group Test_stand out

Применение ACL к vty

К vty ACL применяется другой командой:

router(config-line)# access-class <1-99> <in | out>

Для ограничения доступа к маршрутизатору, по протоколам telnet или SSH, можно использовать стандартный ACL и применить его к vty.

Данный пример ACL разрешает подключаться к маршрутизатору только с адреса 4.4.4.4:

router(config)# access-list 10 permit 4.4.4.4
router(config)# line vty 0 4
router(config-line)# access-class 10 in

Расширенные ACL

Расширенный ACL, при указании протоколов IP, ICMP и др., позволяет указывать IP-адреса отправителя и получателя:

router(conf)# access-list acl-number <permit|deny> <ip|icmp|ospf|eigrp...> source source-wildcard destination destination-wildcard 

Расширенный ACL, при указании протоколов TCP или UDP, позволяет указывать и порты отправителя и/или получателя:

router(conf)# access-list acl-number <deny|permit> <tcp|udp> source source-wildcard ] 
destination destination-wildcard ] 

Пример настройки расширенного ACL

Задание для расширенного ACL:

  • запретить хосту 10.0.3.2 доступ к серверу по RDP,
  • запретить хосту 10.0.3.1 доступ по HTTP,
  • разрешить всем остальным из сети 10.0.3.0 всё,
  • запретить всем остальным хостам (хотя в конце и так есть невидимое deny ip any any, его часто дописывают в конце правил, чтобы явно видеть по срабатыванию счетчиков, что трафик заблокировал ACL):

Пример расширенного нумерованного ACL:

R1(conf)# access-list 100 deny tcp host 10.0.3.2 host 192.168.3.10 eq 3389
R1(conf)# access-list 100 deny tcp host 10.0.3.1 any eq 80
R1(conf)# access-list 100 permit ip 10.0.3.0 0.0.0.255 any
R1(conf)# access-list 100 deny ip any any

Применение ACL на интерфейсе:

R1(conf)# interface fa0/0
R1(conf-if)# ip access-group 100 in

Расширенный именованный ACL:

R1(conf)# ip access-list extended Test_extend
R1(config-ext-nacl)# deny tcp host 10.0.3.2 host 192.168.3.10 eq 3389
R1(config-ext-nacl)# deny tcp host 10.0.3.1 any eq 80
R1(config-ext-nacl)# permit ip 10.0.3.0 0.0.0.255 any
R1(config-ext-nacl)# deny ip any any

Применение ACL на интерфейсе:

R1(conf)# interface fa0/0
R1(conf-if)# ip access-group Test_extend in
sh access-list

Автоматические операции

Любой администратор стремится к оптимизации. Понятно, что назначить вручную 100 объектам одни и те же права — нудное занятие и нецелесообразное. Есть некоторые фишечки, которые могут облегчить подобные задачи.

Копирование ACL прав с одного объекта на другой.

Принцип прост:

  • Снять ACL c одного объекта
  • Записать их на другой

В документации приведен следующий пример:

getfacl file1 | setfacl --set-file=- file2

Где, file1 — объект с которого снимаем ACL командой getfacl, а далее устанавливаем ACL командой setfacl на объект file2

Обратите внимание на запись — -set-file=- в конце указан символ «-», который берет информацию от команды getfacl (со стандартного вывода)

Справедлива будет также такая запись:

  
getfacl file1 | setfacl -M- file2

В этом случае права на file2 не заменяются как при использовании — -set, а добавляются к уже существующим правам ACL.

[править] Команды

asa1(config)# shun
asa1(config)# show asp drop
management-access inside

Просмотр всех существующих команд

Так как количество команд очень большое, то желательно выполнять команду с соответствующим фильтром.

Просмотр всех существующих команд включающих слова debug vpn:

ASA1(config)# sh parser dump all | include debug vpn   
1 no debug vpnlb 
1 no debug vpn-sessiondb 
15 debug vpnlb 
15 debug vpn-sessiondb 
15 undebug vpnlb 
15 undebug vpn-sessiondb 

Создание alias для команд

Создание alias:

ASA1(config)# command-alias exec isakmp sh crypto isakmp sa   

Проверка alias:

ASA1(config)# isakmp

There are no isakmp sas

Просмотр настроенных alias:

ASA1(config)# sh run command-alias 
command-alias exec isakmp sh crypto isakmp sa

[править] object group

1. Настраиваем service object group

ASA(config)# sh run object-group 
object-group service MYSERVICES tcp
 description: HTTP and FTP traffic
 port-object eq www
 port-object eq ftp

2. Настраиваем icmp-type object group

object-group icmp-type PING
 description: Request Reply Unreachable
 icmp-object echo
 icmp-object echo-reply
 icmp-object unreachable

3. Настраиваем network object group

object-group network DMZ_mac
 description: macbook
 network-object host 192.168.1.11
object-group network ALLSERVERS
 network-object host 192.168.1.11
 network-object host 192.168.1.10
 network-object host 192.168.1.6
 network-object host 192.168.1.7

4. Настраиваем ACL с object group

Удаляем предыдущие:

ASA(config)# clear configure access-list 

4.1 www и ftp к DMZ хосту:
ACL на внешний интерфейс для входящего трафика:

access-list OUT_OBJ extended permit tcp 192.168.1.0 255.255.255.0 object-group DMZ_mac object-group MYSERVICES 
access-group OUT_OBJ in interface outside

5. ACL на внешний интерфейс. Разрешаем входящий www, ssh и icmp трафик

ASA(config)# sh run access-list 
access-list OUT_OBJ extended permit tcp 192.168.1.0 255.255.255.0 object-group DMZ_mac object-group MYSERVICES 
access-list OUT_OBJ extended permit tcp any object-group ALLSERVERS eq www 
access-list OUT_OBJ extended permit icmp any object-group ALLSERVERS object-group PING 
access-list OUT_OBJ extended permit tcp any object-group ALLSERVERS eq ssh 
access-list OUT_OBJ extended deny ip any any 

ACL на dmz интерфейс. Разрешаем icmp

access-list DMZ_OBJ extended permit icmp any any object-group PING 
access-list DMZ_OBJ extended deny ip any any 

access-group DMZ_OBJ in interface dmz

6. Проверяем ACL

Файловые системы с ACL

В файловых системах для реализации ACL используется идентификатор пользователя процесса (UID в терминах POSIX).

Список доступа представляет собой структуру данных (обычно таблицу), содержащую записи, определяющие права индивидуального пользователя или группы на специальные системные объекты, такие как программы, процессы или файлы. Эти записи также известны как ACE (англ. Access Control Entries) в операционных системах Microsoft Windows и OpenVMS. В операционной системе Linux и Mac OS X большинство файловых систем имеют расширенные атрибуты, выполняющие роль ACL. Каждый объект в системе содержит указатель на свой ACL. Привилегии (или полномочия) определяют специальные права доступа, разрешающие пользователю читать из (англ. read), писать в (англ. write), или исполнять (англ. execute) объект. В некоторых реализациях ACE (Access Control Entries) могут определять право пользователя или группы на изменение ACL объекта.

Концепции ACL в разных операционных системах различаются, несмотря на существующий «стандарт» POSIX. (Проекты безопасности POSIX, .1e и .2c, были отозваны, когда стало ясно что они затрагивают слишком обширную область и работа не может быть завершена, но хорошо проработанные части, определяющие ACL, были широко реализованы и известны как «POSIX ACLs».)

Вступление

Итак, пришло время задуматься о безопасности вашей сети. В частности о назначении прав на каталоги и файлы для пользователей и групп.
Стандартные права в операционных системах Unix не так гибки, как хотелось бы. К сожалению они годятся для использования в простых схемах сети. Например, ситуацию когда к одному и тому же каталогу нужно, чтобы несколько групп пользователей имели разные права доступа, не реализовать с использованием стандартных прав.

Для реализации сложных структур прав доступа используются расширенные права — ACL (Access control list — cписки контроля доступа).
Списки контроля доступом (ACL) дают большую гибкость, чем стандартный набор полномочий «пользователь/группа/остальные». ACL доступны в коммерческих Unix-системах, таких как IRIX или Solaris (и в Windows NT) в течение нескольких лет. В настоящее время, благодаря проекту TrustedBSD, ACL доступны в FreeBSD 5.0 и выше, а также в Linux. Возможность использования ACL позволяет администратору получить преимущество от использования более интеллектуальной модели безопасности.

Предполагается, что Вы уже знакомы со стандартными правами систем Unix. Если это не так, очень рекомендую сначала изучить документацию по ним. От того, насколько хорошо вы понимаете управление стандартными правами Unix, будет зависеть понимание материала этой статьи.

Устоявшиеся истины:

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

Чтобы добавить пользователя в ту, или иную группу, достаточно отредактировать файл /etc/group:

Хоть редактирование системных файлов вручную — самый быстрый способ их изменения, необходимо быть очень внимательным редактируя их. Используйте для редактирования файла /etc/group утилиту usermod, обязательно создавайте резервную копию редактируемого файла для возможности отката.

Примечание прислал Лихоманенко Артем 2013/04/23 15:55

syslog:x:103:
klog:x:104:
scanner:x:105:hplip,allexserv
nvram:x:106:
fuse:x:107:allexserv

Видно, что в листинге выше в группу scanner входят пользователи hplip и allexserv. Чтобы добавить в эту группу еще пользователей, просто перечислите их символьные имена через запятую.

Синтаксис файла прост:

имя_группы:пароль:GID:список_пользователей

Итак, основная мысль статьи — это использование расширенных прав ACL.

Increase the lifetime for short-lived DNS records

When the ASA receives the response from the DNS server for the ACE hostname resolution, the answer has a Time to Live (TTL) associated with it. The ASA will keep that domain-to-ip mapping active until the TTL expires, at which time the ASA will re-resolve the IP address of the hostname.

The output of ‘show dns host hostname’ will show the TTL of the DNS entry on the ASA:

In some cases, DNS responses might be extremely short, on the order of a few seconds. Usually, low lifetimes like this are employed by DNS load-balancers and content hosting services where IP addresses change frequently. If many DNS entries are used on the ASA, short TTLs might cause the ASA to re-resolve the IP addresses very frequently, therby causing extra load on the ASA, DNS server, and the network.

The ASA can be manually configured to increase the TTL of each response it receives by a set time value, using the command

‘dns expire-entry-timer minutes minutes’. For example, to increase the timeout by 60 minutes you would use the following command:

 dns expire-entry-timer minutes 60 

Limitations of the Feature

It should be emphasized that this new FQDN ACL feature on the ASA is not a replacement for URL filtering solutions. Administrators attempting to write basic ACL policies that permit or deny traffic to FQDN names outside of their organization might have intermittent success, due to the factors discussed below. The preferred methods for blocking access to certain websites is the use of an , or by using the application inspection on the ASA to control the access.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *