Меню

Access list cisco vlan настройка



Access-lists на маршрутизаторе Cisco

Read this article in English

Рассмотрим создание и использование списков доступа (access lists) на примере схемы подключения малого офиса к сети Интернет с помощью маршрутизатора Cisco 881. Команды для настройки маршрутизаторов других серий (1841, 2800, 3825…) или коммутаторов 3 уровня (серии 3500, 4800…) будут аналогичными. Различия могут быть лишь в настройках интерфейсов.

В распоряжении имеем:

  • несколько компьютеров и серверов в локальной сети офиса
  • маршрутизатор Cisco 881
  • коммутатор (используется для организации локальной сети офиса, без дополнительных настроек)

Задача: ограничить соединения, проходящие через маршрутизатор.

Списки доступа (access lists) сами по себе не являются какими-то правилами, ограничивающими доступ. Эти строки лишь указывают определенный трафик. Эффект от них появляется тогда, когда в настройках определенной функции маршрутизатора указывается ссылка на соответствующий список доступа.

Логика устройства такова, что сначала мы показываем маршрутизатору трафик, который нам интересен, а затем указываем что маршрутизатор должен с ним сделать. Например, в одном случае список доступа будет указывать адрес, с которого возможен удаленный доступ к маршрутизатору по протоколу SSH, а в другом будет указывать маршрут, который будет распространен с помощью протокола динамической маршрутизации.

Ограничение удаленного доступа к маршрутизатору

Пример access list, который используется для ограничения удаленного доступа к консоли маршрутизатора только с определенных ip адресов. В нашем случае – адрес рабочей станции администратора.
Создаем список доступа ACL_REMOTE_ACCESS
R-DELTACONFIG(config)#
ip access-list standard ACL_REMOTE_ACCESS
permit ip host 192.168.0.100
Привязываем access list для ограничения доступа к удаленному управлению маршрутизатором только с адреса 192.168.0.100
R-DELTACONFIG(config)#
line vty 0 4
access-class ACL_REMOTE_ACCESS in

Важно!
Будьте осторожны и внимательно все проверьте перед применением. Ошибку можно будет исправить только подключившись консольным кабелем или сбросив настройки маршрутизатора до заводских.

Ограничение доступа в Интернет

Для ограничения доступа из локальной сети офиса в Интернет необходим соответствующий список доступа, а также привязка его к одному из интерфейсов маршрутизатора.
Допустим, что нужно ограничить выход пользователей в сеть Интернет следующим образом:

  • разрешить доступ прокси серверу (http и https)
  • разрешить доступ DNS серверу (TCP 53 и UDP 53)
  • полный доступ администратору сети
  • разрешить протокол ICMP для всех рабочих станций для работы команды Ping.

Создаем следующий список доступа ACL_INSIDE_IN и последовательно вводим правила доступа:
R-DELTACONFIG(config)#
ip access-list extended ACL_INSIDE_IN
доступ DNS сервера в Интернет
permit udp host 192.168.0.201 any eq 53
permit tcp host 192.168.0.201 any eq 53
доступ Прокси сервера в Интернет
permit tcp host 192.168.0.202 any eq 80
permit tcp host 192.168.0.202 any eq 443
полный доступ администратора
permit ip host 192.168.0.100 any
разрешение Ping для всей локальной сети
permit icmp 192.168.0.0 0.0.0.255 any
запрет иных подключений
deny ip any any log

Важно!
Обратите внимание на то, как записана строчка правила для протокола ICMP (Ping). В списках доступа на маршрутизаторах Cisco маска подсети пишется в обратном виде: не 255.255.255.0, а 0.0.0.255

После привязываем список доступа ко внутреннему интерфейсу Vlan 1 в направлении «внутрь маршрутизатора» (параметр in). Собственно, направление привязки всегда считается относительно устройства Cisco. Для удобства интерфейс и направление трафика указано в названии самого списка доступа: ACL_INSIDE_IN — фильтр трафика, входящего во внутренний интерфейс.
R-DELTACONFIG(config)#
interface Vlan 1
ip access-group ACL_INSIDE_IN in
С этого момента доступ наружу будет осуществляться в соответствии с примененным access list при условии, что корректно настроена трансляция адресов (NAT). Как это делается описано в статье про настройку доступа в интернет с помощью маршрутизатора Cisco.

Проверка работы access list

Проверить работу списка доступа можно посмотрев статистику срабатываний правил. После привязки списка доступа ACL_INSIDE_IN к интерфейсу Vlan 1 запустите Ping с любой из рабочих станций сети до любого адреса в Интернет (например до www.yandex.ru), а затем выполните из привилегированного режима (знак # рядом с названием устройства) команду show access-lists. Результат должен показывать количество срабатываний каждой из строк списка доступа:
R-DELTACONFIG# sh access-lists
Extended IP access list ACL_INSIDE_IN

60 permit icmp any any (4 estimate matches)
70 deny ip any any log
Важные аспекты использования списков доступа (access list)

  • Список доступа состоит из строк – правил, показывающих определенный трафик
  • Список доступа, привязанный к интерфейсу, ограничивает проходящие через этот интерфейс пакеты.
  • Список доступа может быть привязан к интерфейсу в одном из направлений: входящем или исходящем.
  • В списках доступа может быть указан или только источник соединения (standard, пример ограничения доступа по SSH) или источник и назначение соединения(extended, пример ограничения доступа в Интернет).
  • Не может быть привязано более одного списка доступа к одному интерфейсу в одном направлении. Все необходимые правила должны быть указаны только в одном привязанном списке доступа.

Ограничение доступа из сети Интернет

Создаем список доступа ACL_OUTSIDE_IN для внешнего интерфейса. В нем указываем лишь то, что внешний интерфейс должен отвечать на ping, а все остальные запросы отклонять.
R-DELTACONFIG(config)#
ip access-list extended ACL_OUTSIDE_IN
permit icmp any interface //разрешение Ping
deny ip any any log //запрет иных подключений
Привязываем список доступа ко внешнему интерфейсу.
R-DELTACONFIG(config)#
interface FastEthernet 4
ip access-group ACL_OUTSIDE_IN in

Важно!
Все новые правила, которые потребуются для доступа изнутри или снаружи, следует добавлять в соответствующие списки доступа ДО строчки
deny ip any any log
Если какая-то строчка с разрешением окажется в списке после запрещающей, то она не будет хоть как-то влиять на трафик, так как маршрутизатор обрабатывает строки access list последовательно до первого совпадения.
Для изменения access list удобно зайти в сам список доступа, добавить все нужные разрешения, а после этого удалить последнюю строку (deny ip any any log) и тут же ее добавить. Выполняя это нехитрое правило запрещающая строка всегда будет в самом конце списка, а все правила будут идти в порядке добавления снизу вверх. Для наглядности разрешим доступ к маршрутизатору извне по протоколу http (TCP порт 80)
R-DELTACONFIG(config)#
ip access-list extended ACL_OUTSIDE_IN
permit tcp any interface eq 80
no deny ip any any log
deny ip any any log

Читайте также:  Ремонт и настройка hdmi

Разрешение ответного трафика

После привязки списка доступа ACL_OUTSIDE_IN пропадает весь доступ из локальной сети ко всем ресурсам по любым протоколам кроме Ping. Это происходит из-за того, что фильтрующие трафик правила применяются и на внутреннем (ACL_INSIDE_IN) и на внешнем (ACL_OUTSIDE_IN) интерфейсах.
Для того, чтобы проходили все обратные пакеты на запросы из локальной сети указываем протоколы для функции Inspect.
R-DELTACONFIG(config)#
ip inspect name Internet http
ip inspect name Internet https
ip inspect name Internet dns
ip inspect name Internet icmp
Привязываем правило инспектирования ко внешнему интерфейсу.
R-DELTACONFIG(config)#
interface FastEthernet 4
ip inspect Internet out
Список разрешенных для инспекции служб можно расширить в будущем.

Надеюсь, что статья поможет Вам лучше понять принцип работы списков доступа. К сожалению эту достаточно простую тему очень сложно описать простым языком. Если у Вас возникли вопросы или какой-то момент остался неясным, напишите мне на адрес smogdelta@gmail.com или оставьте свой вопрос в комментариях.

Важно!

Не забудьте сохранить конфигурацию на всех устройствах командой write или copy run start. Иначе после перезагрузки все изменения будут потеряны.
R-DELTACONFIG-1# write
Building configuration.
[OK]

Источник

Настройка оборудования 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:

Читайте также:  Настройка профиля в elm 327

Тем самым мы разрешим (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 запросы между всеми хостами в сети. Копируем всё в консоль, каждая строчка интерпретируется в качестве отдельной команды.
Проверяем пинги.

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

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

Для добавления правила в начало или другое нужно место в 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)
Вне диапазона — уже другая подсеть.

Читайте также:  Настройка блокировки экрана linux mint

В общем маска — это последовательность из 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