785 профессионалов IT в этом Telegram чате. “ы с нами?

ћерион Ќетворкс

12 минут чтени€

≈сли ¬ы не раз сталкивались с большими списками доступа и/или вход€щими в них object-группами, то наверн€ка уже задавались вопросом, существует ли инструмент, позвол€ющий определить, пропустит ли access-лист некий заданный трафик и вообще, какие строки имеют к этому отношение.

 онечно, такие инструменты существуют и полностью или частично решают перечисленные задачи. ќднако, эти инструменты как правило €вл€ютс€ частью функционала больших "комбайнов" управлени€ сетью, 90% функционала которых ¬ас не интересует.

„тобы продолжить, необходимо скачать утилиту ACL check

Ѕезусловно, никто не запрещает использовать регул€рные выражени€ дл€ поиска определЄнных строк списка доступа пр€мо в консоли сетевого устройства. Ќо данный метод предоставит очень поверхностный результат. Ќапример, он не отобразит доступ хоста, попадающего в сетевую маску или порт, попадающий под диапазон. “ем более, таким образом нельз€ отобразить все существующие доступы между двум€ заданными узлами/сет€ми. «нающий сетевой администратор осведомлЄн о безрезультативности метода простого парсинга access-листа в таких ситуаци€х.

ƒанна€ небольша€ утилита создана именно дл€ этого - найти строки access-листа, разрешающие или запрещающие определЄнный сетевой трафик. » даже более - вы€вить все строки, имеющие отношение к доступам между интересующими узлами или сет€ми.

»де€ использовани€ проста: ¬ы задаЄте критерий, а программа находит строки access-листа, которые ему удовлетвор€ют. ѕри этом, сам критерий выгл€дит как строка access-листа, но без использовани€ оператора "permit" или "deny".

≈сли регул€рно добавл€ть сетевые правила в access-лист без должной проверки их существовани€, то списки доступа могут содержать большое количество избыточных правил. „тобы навести пор€док в таких access-листах, в данной программе реализован функционал анализа списков доступа на избыточность. ¬ы можете вы€вить ненужные строки и освободить ресурсы оборудовани€.

ƒл€ анализа ACL с object-группами программе необходимо указать состав object-групп. ¬ывод ACL будет предоставлен в развЄрнутом виде.

” нас есть нужные дл€ изучени€ листов доступа статьи:

»нтерфейс программы

√лавное окно ACL check
  1. ѕоле ввода access-листа
  2. ѕоле ввода object-групп
  3.  нопка распознавани€ access-листа
  4. ѕоле вывода access-листа в детальном виде
  5. ќднострочное поле ввода услови€
  6. ћногострочный список ввода условий
  7.  нопка пр€мой проверки
  8.  нопка обратной проверки
  9. ѕоле результата проверки
  10. Ўкала позиционировани€ пол€ детальных результатов (11) по отношению ко всему ACL
  11. ѕоле просмотра детальных результатов проверки
  12.  нопка анализа ACL на конфликты и избыточность
  13.  нопка сортировки строк ACL по различным критери€м
  14. ћаркер текущего активного услови€ в многострочном списке (6)
  15. Ўкала сокращЄнного обозначени€ результатов проверки условий многострочного списка
  16. ѕереключатель типа маски дл€ различного типа сетевого устройства
  17. ѕереключатель алгоритма проверки адресов источника и назначени€
  18. јктиваци€ режима игнорировани€ строк ACL с ICMP протоколом в режиме частичного совпадени€ адресов
  19. ћеню выбора вариантов CLI команд в составе с именем ACL
  20. ¬ывод object-групп, используемых в распознанном ACL
  21. ¬ывод списка известных программе именованных протоколов, а также типов и кодов ICMP
  22. ѕоле вывода ошибок, возникающих в процессе распознавани€ ACL

ќсновные шаги

»сходный access-list необходимо скопировать в поле 1. ≈сли он содержит object-группы, то их состав необходимо скопировать в поле 2. ACL и object-группы можно копировать как с конфигурации устройства (Уshow running-configФ, Уshow startup-configФ), так и по пр€мым командам Уshow access-listsФ, Уshow objectФ. Ќиже приведЄн пример результата команды Уshow running-configФ, допустимого дл€ использовани€ в поле 1:

ip access-list extended ACL
 permit icmp host 172.16.0.6 host 172.21.0.6
 permit ip host 172.16.0.6 host 172.21.0.1
 permit tcp host 192.168.8.15 range 1024 65534 host 192.168.66.47
 permit tcp 192.168.8.0 0.0.0.255 eq 22 1521 3389 addrgroup ADMIN_BSD
 permit tcp host 192.168.8.12 eq 1521 192.168.83.20 0.0.0.1

“от же access-list по команде Уshow access-listsФ:

Extended IP access list ACL
    10 permit icmp host 172.16.0.6 host 172.21.0.6
    20 permit ip host 172.16.0.6 host 172.21.0.1 (32 matches)
    30 permit tcp host 192.168.8.15 range 1024 65534 host 192.168.66.47
    40 permit tcp 192.168.8.0 0.0.0.255 eq 22 1521 3389 addrgroup ADMIN_BSD (1 match)
    50 permit tcp host 192.168.8.12 eq 1521 192.168.83.20 0.0.0.1

ѕример результата команды Уshow running-configФ, допустимого дл€ использовани€ в поле 2:

object-group ip address ADMIN_BSD
 host-info 10.237.92.131
 host-info 10.22.145.132
 host-info 10.22.145.136
 host-info 10.22.145.141

—одержимое вывода команды Уshow object-groupФ:

IP address object group ADMIN_BSD
 host 10.237.92.131
 host 10.22.145.132
 host 10.22.145.136
 host 10.22.145.141

“акже допустимы и другие форматы object-групп. ѕример допустимого фрагмента команды Уshow running-configФ:

object-group network Servers
 host 10.15.12.5
 host 10.15.5.11
 host 10.15.4.2
 host 10.15.7.34
object-group service Ports1
 tcp-udp eq domain
 tcp-udp eq 88
 udp range 3268 3269
 tcp gt 49151

ѕример того же фрагмента команды Уshow object-groupФ:

Network object group Servers
 host 10.15.12.5
 host 10.15.5.11
 host 10.15.4.2
 host 10.15.7.34

Service object group Ports1
 tcp-udp eq domain
 tcp-udp eq 88
 udp range 3268 3269
 tcp gt 49151

ѕосле копировани€ ACL и object-групп необходимо нажать кнопку 3. ¬ результате access-list будет распознан и отображЄн в развЄрнутом виде (в случае использовани€ object-групп) в поле 4. ≈сли на этапе распознавани€ возникли ошибки, то они будут отображены в поле 22.

≈сли номер строки конечного access-листа дополнен С0Т, это означает, что данна€ строка получена из object-группы.

 —трока получена из object-группы ACL check

≈сли access-лист скопирован вместе с его заголовком, то активируетс€ кнопка 19, позвол€юща€ использовать команды конфигурировани€, содержащие им€ access-листа.

ѕосле распознавани€ ACL необходимо в поле 5 ввести условие дл€ поиска интересуемого нас доступа и нажать кнопку 7. –езультат поиска доступа отобразитс€ в поле 9. ¬ случае наличи€ доступа более детальна€ информаци€ по€витс€ в поле 11. ¬ызов контекстного меню Уѕоказать результатФ по правой кнопке мыши на поле 11 позволит отобразить строки ACL, удовлетвор€ющие условию поиска.


ѕроверка существовани€ доступа между заданными узлами по определЄнному порту

ѕредположим, нас интересует существование доступа с хоста 192.168.1.2 по порту TCP 1521 на сервер 192.168.2.2 в следующем списке доступа:

ip access-list extended ACL
 10 permit tcp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 range 1521 1522
 20 permit tcp host 192.168.1.2 any
 30 permit tcp host 192.168.1.3 any eq 1521

 опируем access-лист в поле 1 и нажимаем кнопку 3. ¬ поле 5 вводим следующее условие:

tcp host 192.168.1.2 gt 1023 host 192.168.2.2 eq 1521

Ќажимаем кнопку 7 или клавишу УEnterФ. ¬ поле 9 отобразитс€ результат:

–азрешено в строке 1: 10 permit tcp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 range 1521 1522
  »меютс€ ещЄ совпадени€

«десь значение У1:Ф €вл€етс€ результатом сквозной нумерации всех строк конечного (распознанного) ACL, а У10Ф Ц номер строки в исходном ACL. Ќадпись У»меютс€ ещЄ совпадени€Ф означает, что в ACL присутствуют и другие строки, в которых теоретически может сработать наше условие. –езультаты совпадени€ правил можно просмотреть в поле 11. ≈сли на этом поле вызвать контекстное меню (правой кнопкой мыши) и выбрать пункт Уѕоказать результатФ, то по€витс€ дополнительное окно с выборкой сработавших строк ACL.


ќпределение узлов заданной сети, к которым имеетс€ доступ по определЄнному порту

–ассмотрим ситуацию, когда требуетс€ вы€снить, к каким серверам сети 192.168.2.0 /24 открыт доступ по SSH (TCP 22). —писок доступа следующий:

ip access-list extended ACL
 10 permit tcp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 range 1521 1522
 20 permit tcp any 192.168.2.0 0.0.0.3 eq 22 3389
 30 permit tcp host 192.168.1.3 host 192.168.2.254
 40 permit tcp host 192.168.1.10 any

 опируем access-лист в поле 1 и нажимаем кнопку 3. —тавим переключатель 17 в положение Участичное по src и dstФ. јлгоритм будет учитывать строки ACL, в которых IP-адреса источника и назначени€ полностью или частично попадают в диапазон адресов, указанный в условии.

¬ поле 5 вводим следующее условие:

tcp any gt 1023 any eq 22

Ќажимаем кнопку 7 или клавишу УEnterФ. ¬ поле 9 отобразитс€ результат

Ѕлок

–езультаты совпадени€ правил можно просмотреть в поле 11. ≈сли на этом поле вызвать контекстное меню (правой кнопкой мыши) и выбрать пункт Уѕоказать результатФ, то по€витс€ дополнительное окно с выборкой сработавших строк ACL. —имвол У?Ф в этом окне означает частичное совпадение по адресам.


ќпределение доступов, открытых между определЄнными узлами

¬ы€сним, какие доступы открыты от узла 192.168.1.10 к узлу 192.168.2.254 в следующем ACL:

ip access-list extended ACL
 10 permit tcp 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255 range 1521 1522
 20 permit tcp any 192.168.2.0 0.0.0.3 eq 22 3389
 30 permit tcp host 192.168.1.3 host 192.168.2.254
 40 permit tcp host 192.168.1.10 any

 опируем access-лист в поле 1 и нажимаем кнопку 3. —тавим переключатель 17 в положение Участичное по src и dstФ. ¬ поле 5 вводим следующее условие:

ip host 192.168.1.10 host 192.168.2.254

ћетод состоит в том, что заданное условие рассматриваетс€ как access-лист, а кажда€ строка исходного ACL как отдельное условие. ƒругими словами, условие и ACL мен€ютс€ рол€ми.  нопка (8), решающа€ эту задачу, называетс€ Уќбратна€ проверкаФ. Ќажимаем кнопку 8 или комбинацию УCtrl-EnterФ. ¬ поле 9 отобразитс€ результат:

Ѕлок

–езультаты совпадени€ правил можно просмотреть в поле 11. ≈сли на этом поле вызвать контекстное меню (правой кнопкой мыши) и выбрать пункт Уѕоказать результатФ, то по€витс€ дополнительное окно с выборкой сработавших строк ACL. —имвол У?Ф в этом окне означает частичное совпадение по адресам.

¬ажным требованием при такой проверке €вл€етс€ необходимость установки переключател€ 17 в среднее положение.


ћногострочный список условий (поле 6)

—писок условий (6) предназначен дл€ ввода нескольких условий и последовательной их проверки. ƒл€ ввода каждого следующего услови€ (новой строки) предусмотрена комбинаци€ УShift-EnterФ. ƒл€ проверки услови€ из списка необходимо установить на него курсор и нажать кнопку 7 (Enter) или 8 (Ctrl-Enter). Ќа шкале 15 напротив строки запрошенного услови€ отобразитс€ соответствующий символ результата. ќн сохранитс€ до изменени€ услови€ в этой строке списка.


—ортировка (кнопка 13)

–аспознанный access-list, выведенный в развЄрнутом виде в поле 4, можно упор€дочить по различным критери€м и их комбинации. ѕри нажатии на кнопку сортировки (13) открываетс€ дополнительное окно.

ќкно сортировки ACL check
  • 1-7 Ц  нопки включени€ элементов в цепь сортировки
  • 8 Ц ќтображение исходных номеров строк
  • 9 Ц –ежим группировани€ результатов сортировки

 аждый следующий критерий в цепочке выбираетс€ соответствующей кнопкой. –ассмотрим следующий список доступа:

1 permit udp 192.168.8.0 0.0.0.255 host 192.168.38.24 eq syslog
2 permit tcp 192.168.8.0 0.0.0.255 host 192.168.38.23 eq 1514
3 permit tcp 192.168.8.0 0.0.0.255 host 192.168.38.24 eq 1514
4 permit tcp 192.168.8.0 0.0.0.255 host 192.168.38.23 eq 4041
5 permit tcp 192.168.8.0 0.0.0.255 host 192.168.12.26
6 permit ip 192.168.8.0 0.0.0.255 192.168.41.0 0.0.0.255
7 permit ip 192.168.8.0 0.0.0.255 host 192.168.41.31

„тобы упор€дочить эти строки сначала по IP адресу назначени€, а затем по протоколу, необходимо нажать последовательно кнопки 5 и 1:

–езультат сортировки ACL check

÷ифры в круглых скобках на соответствующих кнопках указывают позицию элемента в цепочке сортировки. ѕри отключении элемента из цепочки также исключаютс€ все элементы с номерами выше отключенного.


јнализ на конфликты и избыточность (кнопка 12)

 нопка УјнализФ (12) становитс€ активной после распознани€ access-листа. ≈Є нажатие запускает процесс анализа строк access-листа на конфликты и избыточность.  онфликтующей €вл€етс€ строка access-листа, котора€ никогда не сработает из-за вышесто€щего правила противоположного значени€ (УdenyФ после УpermitФ или наоборот).

  примеру, загрузим следующий ACL:

 10 permit icmp any any
 20 permit tcp host 10.15.2.11 eq 1521 host 10.15.1.10
 30 deny   tcp 10.15.2.0 0.0.0.255 10.15.0.0 0.0.31.255
 40 permit udp 10.15.2.0 0.0.0.255 host 10.19.9.232
 50 permit udp 10.15.2.0 0.0.0.255 host 10.19.9.120 eq syslog
 60 permit tcp host 10.15.2.11 eq 1521 host 10.15.7.11

–аспознаем его (кнопка 3) и нажмЄм кнопку УјнализФ (12). ѕрограмма предупредит нас о имеющихс€ конфликтах:

 —ообщение о наличии конфликтов ACL check

 нопка УƒаФ откроет окно с результатами анализа, включающими только конфликты:

ќкно результатов анализа конфликтов ACL check

≈сли нажать кнопку СЌетТ, то откроетс€ окно, включающее как конфликтующие, так и избыточные правила. –ассмотрим следующий access-list:

 10 permit icmp any any
 20 permit tcp host 192.168.1.10 host 192.168.2.20 eq 22
 30 permit tcp host 192.168.1.10 host 192.168.2.20
 40 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255

јнализ такого ACL отобразит следующие результаты:

ќкно результатов анализа ACL check

«десь жирным шрифтом выделены строки, если имеютс€ другие правила, попадающие под их действие. ќстальные строки (обычный шрифт) €вл€ютс€ производными правилами. ”становив курсор на определЄнной строке, удержива€ нажатой клавишу УCtrlФ, получим детальную информацию в нижней части окна:

ƒетализаци€ анализа строки ACL check
  1. ѕоле результатов
  2. ѕоле детализации выбранного правила
  3. »ерархический вид детализации

¬ данном случае правило 2 €вл€етс€ производным от правила 3. ¬ свою очередь, правило 3 входит в правило 4. ¬изуально уровень такой вложенности можно определить по отступам строки вправо или выбрать иерархический вид (3). ѕри иерархическом виде производные правила будут выведены ниже строк, в которые они вход€т. ћожно выделить диапазон интересуемых строк в поле 1 и вызвать контекстное меню правой кнопкой мыши, в котором выбрать варианты удалени€ избыточных строк.

—ледует учитывать намеренное чередование операторов УpermitФ и УdenyФ в одном ACL дл€ его упрощени€. ¬ таких случа€х следует анализировать ACL част€ми. Ќапример, до и после операторов УdenyФ. Ћибо анализировать полностью, но дополнительно обращать внимание на пор€док следовани€ конфликтующих строк в ACL и не удал€ть такие производные строки из исходного ACL.


ќпции запуска программы

ѕредусмотрены следующие опции запуска exe-файла:

  • /h, /?, /help Ц вызов справки параметров запуска
  • /l (rus) Ц выбор €зыка
  • /nm Ц включение режима УnetmaskФ
  • /pm (and,or) Ц выбор режима совпадени€ адресов
  • /skipicmp Ц включение режима Уигнорировать ICMP при частичном совпаденииФ.

ѕолезна ли ¬ам эта стать€?