Cisco ACL расширенная настройка

Пришло время поговорить об ACL подробней. Как взрослые люди, начнём делать серьёзные вещи. Да и я, наконец, собрался с мыслями и поковырял эту тему.

В данной статье мы рассмотрим простые типовые конфигурации для списков управления доступом на базе Cisco ACL, которые фильтруют IP-пакеты в зависимости от следующих данных:

  • адрес источника (source address);
  • адрес назначения (destination address);
  • тип пакета (протокол верхнего уровня);

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

Что такое Access Control List?

IP ACL – последовательный набор правил разрешающих или запрещающих прохождение пакета. Маршрутизатор последовательно проверяет каждый пакет на соответствие правилам. После первого же совпадения принимается решение и дальше правила не обрабатываются.

Если ни одно из правил не подошло, то пакет отбрасывается из-за неявного последнего правила deny all.

Какие бывают ACL?

Можно выделить следующие виды списков контроля доступа:

  • стандартные ACL;
  • расширенные ACL (об этом речь пойдёт ниже);
  • динамические ACL (ключ и замок);
  • именованные IP-списки ACL;
  • рефлексивные ACL;
  • синхронизируемые списки ACL, использующие временные диапазоны;
  • прокси-аутентификации;
  • Turbo ACL;
  • контекстно-ориентированные ACL;
  • откомментированные записи IP ACL;
  • распределённые синхронизируемые ACL;

Всему своё время, а мы рассмотрим самое распространённое – стандартные и расширенные списки контроля доступа.

Стандартные списки ACL

Формат синтаксиса команды стандартного ACL выглядит так:

# access-list number {permit|deny} {host|source source-wildcard|any}

  • permit – пропускаем пакет.
  • deny – отбрасываем пакет.
  • host – конкретный IP-адрес узла
  • source source-wildcard – IP и его обратная маска. Надо несколько слов сказать про обратную маску. Здесь применяется инвертированная маска сети, которая показывает, какие биты изменяются.
  • any – любой хост.

Стандартные ACL управляют трафиком, сравнивая адрес источника пакетов с адресами, заданными в списке.

Ну и чтобы лучше понять параметры, приведу несколько примеров:

  1. Задача: разрешаем прохождение трафика от узла 10.0.0.10

Правило:

# access-list 1 permit host 10.0.0.10

равнозначно

# access-list 1 permit 10.0.0.10 0.0.0.0

  1. Задача: запрещаем прохождение пакетов из подсети 10.0.1.0/24

Правило:

# access-list 2 deny 10.0.1.0 0.0.0.255

  1. Задача: разрешить доступ только админу (10.0.0.9), остальным запретить.

Правило:

# access-list 3 permit 10.0.0.9 0.0.0.0

# access-list 3 deny any

И здесь очень важно написать правила именно в таком порядке. Я не зря сказал, что правила проверяются последовательно, до первого совпадения.

Здесь, если пакет принадлежит IP 10.0.0.9, то первая строчка соответствует и пакет пропустится.

А если написать правила в обратном порядке, то первой же строкой будет deny any, что отбросит любой пакет (даже 10.0.0.9) и дальше правила применяься не будут. Поэтому нужно быть очень внимательным в этом.

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

Расширенные списки управляют трафиком, сравнивая адреса источника и назначения пакетов с адресами, заданными в списке. Это более тонкая фильтрация трафика по следующим критериям:

  • протокол;
  • номер порта;
  • значение DSCP;
  • приоритет;
  • состояние бита SYN;

Синтаксис расширенных списков ACL.

# access-list number [dynamic dynamic-name [timeout minutes]] {deny|permit} {protocol|protocol-keyword} {source source-wildcard|any} [source-port] {destination destination-wildcard|any} [precedence precedence] [tos tos] [log | log-input] [time-range time-range-name] [fragments]

Уже представляю ваши глаза “О_О”. Да, вот такой расширенный список, действительно, параметров немного больше.

Примеры расширенных ACL

Я составил типовую конфигурацию в Cisco Packet Tracer, две подсети 10.0.1.0/24 и 192.168.1.0/24.

Узлы подсети 10.0.1.0/24 имеют шлюз по умолчанию 10.0.1.1, а 192.168.1.0/24 соответственно 192.168.1.1.

Настраиваем роутер.

router> en
router# conf t
router(config)# int fast 0/0
router(config-if)# ip address 10.0.1.1 255.255.255.0
router(config-if)# no shut

Аналогично настраиваем и второй инерфейс (fast 0/1), только в качестве адреса указываем не 10.0.1.1, а 192.168.1.1.

Приступим к настройке ACL-ов.

Сначала убедимся, что сеть коммутируется и все узлы доступны друг для друга:

PC>ping 10.0.1.3

Pinging 10.0.1.3 with 32 bytes of data:

Reply from 10.0.1.3: bytes=32 time=125ms TTL=127
Reply from 10.0.1.3: bytes=32 time=107ms TTL=127
Reply from 10.0.1.3: bytes=32 time=125ms TTL=127
Reply from 10.0.1.3: bytes=32 time=109ms TTL=127

Ping statistics for 10.0.1.3:
Packets: Sent = 4, Received = 4, Lost = 0 (0% loss),
Approximate round trip times in milli-seconds:
Minimum = 107ms, Maximum = 125ms, Average = 116ms

Запрещаем FTP трафик.

Задача: разрешить доступ к FTP для узла 192.168.1.2 и запретить для узла 192.168.1.3.

На сервере 10.0.1.3 поднят FTP сервис (дефолтные cisco:cisco). Убедимся, что узел доступен и FTP работает.

PC>ipconfig
IP Address………………….: 192.168.1.2
Subnet Mask…………………: 255.255.255.0
Default Gateway……………..: 192.168.1.1

PC>ftp 10.0.1.3
Trying to connect…10.0.1.3
Connected to 10.0.1.3

220- Welcome to PT Ftp server

Username:cisco

331- Username ok, need password

Password:
230- Logged in

(passive mode On)
ftp>dir

Listing /ftp directory from 10.0.1.3:
0 : c1841-advipservicesk9-mz.124-15.T1.bin 33591768
1 : c1841-ipbase-mz.123-14.T7.bin 13832032
2 : c1841-ipbasek9-mz.124-12.bin 16599160
3 : c2600-advipservicesk9-mz.124-15.T1.bin 33591768
4 : c2600-i-mz.122-28.bin 5571584
5 : c2600-ipbasek9-mz.124-8.bin 13169700
6 : c2800nm-advipservicesk9-mz.124-15.T1.bin 50938004
7 : c2800nm-ipbase-mz.123-14.T7.bin 5571584
8 : c2800nm-ipbasek9-mz.124-8.bin 15522644
9 : c2950-i6q4l2-mz.121-22.EA4.bin 3058048
10 : c2950-i6q4l2-mz.121-22.EA8.bin 3117390
11 : c2960-lanbase-mz.122-25.FX.bin 4414921
12 : c2960-lanbase-mz.122-25.SEE1.bin 4670455
13 : c3560-advipservicesk9-mz.122-37.SE1.bin 8662192
14 : pt1000-i-mz.122-28.bin 5571584
15 : pt3000-i6q4l2-mz.121-22.EA4.bin 3117390
ftp>quit

Packet Tracer PC Command Line 1.0
PC>221- Service closing control connection.

Команды и настройка FTP-сервера есть на нашем сайте тут.

Убедимся, что доступ есть как с узла 192.168.1.2, так и с 192.168.1.3. У меня всё по плану. Если у вас вдруг нет доступа, убедитесь, что каждому узлу назначен IP и маска, а так же прописан шлюз по-умолчанию. И не перепутали ли вы интерфейсы?

Идём дальше.

Router(config)#ip access-list extended 101
Router(config-ext-nacl)#permit tcp 192.168.1.2 0.0.0.0 10.0.1.3 0.0.0.0 eq 21
Router(config-ext-nacl)#permit tcp 192.168.1.2 0.0.0.0 10.0.1.3 0.0.0.0 eq 20
Router(config-ext-nacl)#deny tcp 192.168.1.3 0.0.0.0 10.0.1.3 0.0.0.0 eq 21
Router(config-ext-nacl)#deny tcp 192.168.1.3 0.0.0.0 10.0.1.3 0.0.0.0 eq 20

Здесь мы видми по 2 разрешающих и по 2 запрещающих правила для указанных направлений и портов 21 и 20. Это служба FTP, передача команд и данных.

А теперь применяем наш список к интерфейсу со стороны сети 192.168.1.0/24 на вход (потому что трафик ВХОДИТ на роутер со стороны интерфейса 192.168.1.1):

Router(config)#int fa 0/1
Router(config-if)#ip access-group 101 in

Как видите, мы просто применили наше правило с номером 101.

Проверяем коннект. С узла 192.168.1.3 видим следующее:

PC>ftp 10.0.1.3
Trying to connect…10.0.1.3

и всё.

А с узла 192.168.1.2 по прежнему коннект!

Интересно? Поделись с другом
Litl-Admin.ru

Comments:

Comments: 6
  1. PrihoD

    Задача 2, правило.. Разве маска там верна? надо ж было запретить для /24

    1. PrihoD

      понял ошибку. инвертная маска 255.255.255.0 = 0.0.0.255

      1. litladmin (author)

        Верно. Тут надо пояснить, что октеты не с конца идут, а именно инвертированы биты в маске (см.калькулятор сетей справа вверху)

  2. killjob784

    ip access-list extended Lnew

    permit tcp any any established
    permit udp host 4.4.4.100 eq 53 any
    permit udp host 4.4.4.1 eq 123 any
    permit tcp any host 4.4.4.100 eq 80
    permit tcp any host 4.4.4.100 eq 443
    permit tcp any host 4.4.4.100 eq 2222

    permit udp host 5.5.5.100 host 4.4.4.100 eq 500
    permit esp any any
    permit icmp any any

    int gi 1
    ip access-group Lnew in

  3. slowa

    RTR-R NAT
    int gi1
    ip nat outside
    int gi2
    ip nat inside
    access-list 1 permit 172.16.100.0 0.0.0.255
    ip nat inside source list 1 interface Gi1 overload
    RTR-L GRE
    interface Tunne 1
    ip address 172.16.1.1 255.255.255.0
    tunnel mode gre ip
    tunnel source 4.4.4.100
    tunnel destination 5.5.5.100
    router eigrp 6500
    network 192.168.100.0 0.0.0.255
    network 172.16.1.0 0.0.0.255

  4. slowa

    RTR-L ACL
    ip access-list extended Lnew
    permit tcp any any established
    permit udp host 4.4.4.100 eq 53 any
    permit udp host 5.5.5.1 eq 123 any
    permit tcp any host 4.4.4.100 eq 80
    permit tcp any host 4.4.4.100 eq 443
    permit tcp any host 4.4.4.100 eq 2222
    permit udp host 5.5.5.100 host 4.4.4.100 eq 500
    permit esp any any
    permit icmp any any
    int gi 1
    ip access-group Lnew in

Leave a Reply