Меню

Настройка acl cisco packet tracer



Настройка оборудования Cisco. ACL.

В этот раз мы изучим следующие моменты:
1. Учимся настраивать различные списки контроля доступа (Access Control List).
2. Пытаемся понять разницу между ограничением входящего и исходящего трафика.

Для самоуспокоения скажу, что список доступа — вещь не особенно сложная и нам с вами в ней под силу разобраться. Легче стало? Едем дальше. Предназначены эти списки для нескольких очевидных вещей. Первое и самое логичное — ограничение доступа, запрет каких-либо действий для обеспечения безопасности. Даже инструменты в синтаксисе имеют говорящие имена — permit и deny. Фактически же ACL — это в умелых руках очень крутой инструмент фильтрации. С его помощью можно определить, на кого будут навешиваться определенные политики, кому разрешить участие в одних процессах и запретить в других, кому в конце концов скорость ограничить. Применений уйма.
Что уж там, давайте на примере. Опираясь на списки доступа работает Policy-Based Routing (PBR). Можно сделать так, что пакетики приходящие из сети 192.168.1.0/24 имели в качестве next-hop шлюз 10.0.1.1, а из 192.168.2.0/24 уже на 10.0.2.1. Как мы помним, обычная маршрутизация смотрит в пакете на его destination address, и исходя из него выбирает следующий хоп.

Вообще говоря существует несколько видов списков доступа:
Стандартные
Расширенные
Динамические
Рефлексивные
Повременные
Мы то с вами не гордые, и познакомимся пока с первыми двумя видами, а так конечно милости просим на сайт циски, проникаться.

Входящий трафик — этот тот, который приходит на интерфейс извне.

Исходящий — тот, который отправляется с интерфейса вовне.

Список доступа можно применять на входящий трафик, тогда не прошедшие фейс-контроль пакеты будут дропаться, не попав в маршрутизатор и далее вашу сеть. В случае с ACL на исходящий трафик пакеты будут попадать на маршрутизатор, и далее в соответствии с правилом дропаться уже на целевом интерфейса.
Так в чем разница между стандартным и расширенным списком доступа?
Стандартный список доступа проверяет только адрес отправителя.
Расширенный — оперирует адресом отправителя, адресом получателя и портом.
Логично, что стандартные ACL следует ставить ближе к получателю, чтобы не «зарезать» больше, чем нужно. А вот расширенные — ближе к отправителю для возможности дропнуть нежелательный трафик как можно раньше.

Да, вот так сразу, чего лясы точить?
1. Доступ на WEB-сервер.
Задача. Разрешить доступ всем по порту TCP 80 (протокол HTTP). Для того устройства, с которого будет производиться управление (у нас же есть админ) нужно открыть telnet и ftp, но ему мы дадим полный доступ. Всем остальным отбой.
В данном случае будет работать политика «запрещено всё, что не разрешено». Потребуется открыть кое-что, а остальное позакрывать.
Сетка серверов у нас находится во VLAN 3, значит и лист будем вешать на соответствующий сабинтерфейс FE0/0.3. Только куда вешать правила — на in или на out? Мы не хотим пускать пакеты в сторону серверов, которые уже оказались на маршрутизаторе, логично? А значит трафик это исходящий, следовательно и адреса назначения (destination) будут расположены в сети серверов (там уже выберем конкретный сервер, на который пойдет трафик), а уже адреса источников (source) будут любыми — наши локальные или из внешней сети.
Да, список мы будем делать расширенный (extended), ведь фильтрация будет в т.ч. по адресу назначения (к примеру, правила для WEB-сервера и почтового будут разные).
Проверка правил проводится по списку сверху вниз до первого совпадения. При первом совпадении (permit это правило или deny — неважно) проверка заканчивается и трафик обрабатывается в соответствии со сработавшим правилом.
То есть первые правила должны разрешать нужное нам и лишь в конце скажем веское deny ip any any, чтобы прикрыть всё остальное.
Any — это специальное слово, которое означает адрес сети и обратную маску 0.0.0.0 0.0.0.0 и означает, что под правило подпадают абсолютно все узлы из любых сетей.
А слово host, наоборот, означает маску 255.255.255.255 — то есть именно один единственный указанный адрес.
Поехали писать правило. Первым будет разрешение для всех ходить на порт 80:

Читайте также:  Настройка bind на forward

Тем самым мы разрешим (permit) TCP-трафик от любого узла (any) на хост (host — именно один адрес) 172.16.0.2, адресованный на 80-й порт.
Вешаем этот список доступа на интерфейс FE0/0.3:

Проверяем с любого нашего ПК:

Замечательно, страничка у нас открылась. А пинги будут ходить?

В чем дело? Просто после всех правил в ACL-ках циски дописывается deny ip any any (implicit deny). По факту это означает, что пакет не ответивший ни одному правилу в аксес-листе отбрасывается на мороз, попадая под implicit deny.
Ах да, теперь нужно дать полный доступ к серваку с админского ПК 172.16.6.66 из сети Other. Каждое новое правило автоматом добавляется в конец списка, если он у вас уже создан.

Проверим, работает ли у нас, например, фтп.

Маршрутизатор проверил, что мы подходим под висящий на FE0/0.3 список доступа, и пропускает нас.
Пробуем с какого-нибудь «левого» узла.

Под правило данный пакетик и посылает на deny ip any any.

2. Доступ на файловый сервер
Кому сюда вообще давать доступ? Очевидно, что жителям сети 172.16.0.0/16! Для работы с общими папками уже давно придуман протокол SMB, работающий по порту TCP 445. Для железок постарше есть NetBios, очень жадный до портов товарищ, которому их нужно аж три — UDP 137 и 138, а также TCP 139. Поболтаем с нашим админом и сойдемся на 445-ом порту. Ах да, еще не забудем про 20 и 21 порты для FTP, к которым надо бы дать доступ не только с локалки, но и извне.

Конструкции вида range 20 21 применяются для задания одной строкой правил для нескольких портов. Для FTP недостаточно 21-го порта, у вас тогда будет проходить только авторизация, а вот передача файлов — нет.
0.0.255.255 — особая обратная маска (wildcard mask). Про них чуть позже.

3. Доступ на почтовый сервер
Фича, для широко распространенных протоколов можно указывать не номера портов, а их имена:

5. ICMP
Досадно, что у нас возникла неприятная ситуация с пингом? Вылечим это, но попробуем одну фишку, чтобы поместить это правило в начало списка.
Скопируем ACL прямо из конфига циски и с помощью текстового редактора добавим туда следующее:

Первая строка сносит начисто созданный нами список, далее он создается заново, но уже в нужном нам порядке. Третья строчка в приведенном коде разрешает ICMP запросы между всеми хостами в сети. Копируем всё в консоль, каждая строчка интерпретируется в качестве отдельной команды.
Проверяем пинги.

Ну просто замечательно.

Внимание! Не злоупотребляйте данным лайфхаком, иначе можно устроить апокалипсис в отдельно взятой сети. Еще и потерять доступ к удаленному маршрутизатору, что вообще смерти подобно.

Читайте также:  Wordpress настройка темы css

Для добавления правила в начало или другое нужно место в ACL существует простой прием:

Ставя перед permit/deny число вы отправите правило на соответствующее место в списке.
В случае необходимости всегда можно провести нумерацию правил заново с помощью такой команды:

В нашем примере первое правило имеет порядковый номер 10, а шаг между правилами также составляет 10.

Итоговый вид Access-листа для серверной сети:

6. Права пользователей из сети Other
Все предыдущие правила строили козни, не пуская кого-то куда-то, соответственно, мы обращали внимание на адрес назначения (source address), вешая список доступа на исходящий с интерфейса трафик. Теперь будем не выпускать, ограничивая трафик из сети Other.

В данном случае вариант запретить всем, а потом уже раздавать разрешения не прокатит, т.к. всё попадет под deny ip any any, невзирая на наши permit.
Вешаем список на интерфейс.

Таким образом пакеты с source address 172.16.6.61 или 172.16.6.66 могут лететь куда угодно.
Расширенный список доступа мы применили для разграничения, т.к. админу нужен доступ везде, а вот «гостю» разве что в интернеты.

7. Сеть управления
Настраиваем таким макаром:

И вешаем на Out интерфейса FE0/0.2:

Там выше вы видели стрёмную маску вида 0.0.255.255 — так называемую обратную маску, использующуюся для определения хостов, попадающих под правило.
Но чтобы разобраться с обратной надо сначала понять обычную маску?
Возьмем пример.
Перед нами самая обычная сеть из 256 адресов — 172.16.5.0/24. Что это значит? А вот что:

IP-адрес — это 32-битный параметр, разбитый на четыре части, который мы с вами привыкли видеть в десятичном виде. Маска подсети также является 32-битной, это словно трафарет для определения принадлежности IP-адреса к той или иной подсети.
Часть, где в маске единицы (1111111) меняться не может, таким образом, часть IP 172.16.5 всегда будет неизменной, а часть с нулями вариативна.
То есть в нашем примере подсети 172.16.5.0/24 хосты будут от 172.16.5.1 до 172.16.5.254 (крайний IP 255широковещательный), потому что 00000001 — это 1, а 11111110 — 254. Речь тут о крайнем октете.
Посмотрим на маску длиной 30 бит и сеть 172.16.2.4/30.

В этой подсети могут меняться только два бита в конце, т.о. четвертый октет может принять только четыре значения:
00000100 — адрес подсети (4 в десятичной системе)
00000101 — адрес узла (5)
00000110 — адрес узла (6)
00000111 — широковещательный (7)
Вне диапазона — уже другая подсеть.

В общем маска — это последовательность из 32 бит, где единицы в начале определяют адрес подсети, а нули в конце — адрес хоста.
Чередование нулей и единиц в маске невозможно.
Маска вида (например) 11111111.11100000.11110111.00000000 — невозможна.

А теперь, что же такое обратная маска (wildcard)?
По сути своей — это инверсия обычной маски. Нули в начале задают адрес части, которая должна совпадать обязательно, а единицы — свободную часть.
То есть для фильтрации хостов из подсети 172.16.5.0/24 правило в Access-листе должно быть таким:

Ведь в двоичном представлении эта обратная маска будет иметь вид 00000000.00000000.00000000.11111111
В примере же из подсети 172.16.2.4/30 обратная маска получится такой:

Тогда и параметр в Access-листе будет такой:

Читайте также:  Настройка параболической антенны в ташкенте

В описанных ситуациях последний октет обратной маски получается вычитанием из 255 цифры последнего октета обычной маски (255-252=3) и т.д.

Но на самом деле обратная маска — это несколько более богатый инструмент, здесь вы можете объединять адреса внутри одной подсети или даже объединять подсети, но самое главное отличие, вы можете чередовать нули и единицы. Это позволяет вам, например, отфильтровать определённый узел (или группу) в нескольких подсетях одной строкой.

Пример 1
Дано: сеть 172.16.16.0/24
Надо: отфильтровать первые 64 адреса (172.16.16.0-172.16.16.63)
Решение: 172.16.16.0 0.0.0.63

Пример 2
Дано: сети 172.16.16.0/24 и 172.16.17.0/24
Надо: отфильтровать адреса из обеих сетей
Решение: 172.16.16.0 0.0.1.255

Пример 3
Дано: Сети 172.16.0.0-172.16.255.0
Надо: отфильтровать хост с адресом 4 из всех подсетей
Решение: 172.16.0.4 0.0.255.0

Признаться ни разу в жизни не приходилось встречаться с последним сценарием применения. Это какие-то жутко специфические должны быть задачи.

Здесь на хабре обратные маски раскрыты более подробно.

Гипотетическая сеть:

На маршрутизаторе RT1 на интерфейсе FE0/1 на вход у нас разрешено всё, кроме ICMP.

На маршрутизаторе RT2 на интерфейсе FE0/1 на выход запрещены SSH и TELNET

Тестируем
1. Пинг с компьютера ПК1 на Сервер1

2. TELNET с компьютера ПК1 на Сервер1

3. SSH с компьютера ПК1 на Сервер2

4. Пинг с Сервера2 на ПК1

1. Правила, действующие на исходящий трафик (out) не будут фильтровать трафик самого устройства. То есть, если нужно запретить самой циске доступ куда-либо, то вам придётся на этом интерфейсе фильтровать входящий трафик (ответный оттуда, куда надо запретить доступ).
2. Аккуратнее с ACL, всегда запиливайте их вдумчиво, иначе можно потерять доступ до устройства.
Вот хотим мы запретить доступ сети 172.16.6.0/24 куда бы то ни было, кроме своего адреса 172.16.6.61:

Ну всё, вы потеряли доступ до цисочки, т.к. уже попали под первое правило, а до пермита мы не добрались.
Также под ACL может попасть трафик, который не должен был попасть.
Вот у нас серверный FTP, до которого мы открыли доступ на 21-й порт в ACL Servers-out. Мы радостно коннектимся к нему, фтпшник разрешает нам трансфер, например, по 1523-му порту. Здесь сказка и заканчивается, разбившись о суровую реальность ACL. Выше мы открывали для FTP 20 и 21 порты, но в реальности всё несколько сложнее. Но это придет.
3. Теперь захотелось нам повесить на WAN-интерфейс такой вот лист:

Вроде бы всё классно, исходящие соединения на 80-ый порт разрешены, и все входящие тоже, класс? А если обратный ответ придет на какой-нибудь 1054-ый порт? Тогда стучась на 1.1.1.1:1054 он разобьется о правило deny ip any any.
Воспользуемся тогда хитростью вида:

О ней вспомним несколько позже. В другой раз.
4. Также требуют внимание т.н. объективные группы (Object-group). Есть задача выпустить несколько адресов по определенным портам, но с перспективой увеличения количества адресов и портов. В каменном веке это выглядит примерно так:

Человек разумный же воспользуется объективными группами:

Страшно? Чуть разобраться и за уши вас не оттащишь.

5. Полезно для траблшутинга использование команды show ip access-lists %имя ACL%
Выводится не только список правил по данному ACL, но и кол-во совпадений по каждому правилу.

Дописав же в конце любого правила log, мы будем получать сообщение по срабатыванию данного правила прямиком в консоль.

Источник

Adblock
detector