Cisco ACL
Материал из Xgu.ru
- Автор: Наташа Самойленко
Содержание |
[править] Стандартные и расширенные ACL
Именованные ACL могут быть стандартные и расширенные. У них немного отличается синтаксис с нумерованными:
ip access-list <extended|standard> name <permit|deny> <tcp|udp> source source-wildcard [operator [port]] destination destination-wildcard [operator [port]] [log]
В конце любого ACL есть невидимое правило deny ip any any.
[править] Стандартные ACL
Стандартный ACL позволяет указывать только IP-адрес отправителя:
router(conf)# access-list <1-99> <permit | deny | remark> source [source-wildcard]
Применение 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 [operator [port]] destination destination-wildcard [operator [port]] [log]
[править] Пример настройки расширенного 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
[править] Другие виды ACL
[править] Динамические ACL
[править] Пример настройки динамических ACL
Схема сети:
Создание обычного ACL (в нём разрешён telnet для того чтобы пользователи могли пройти аутентификацию):
dyn1(config)# access-list 101 permit tcp any host 192.168.2.1 eq telnet dyn1(config)# access-list 101 permit ospf any any dyn1(config)# access-list 101 permit tcp any any established
Создание динамического ACL:
dyn1(config)# access-list 101 dynamic DYN permit icmp any host 192.168.1.7
|
Если необходимо чтобы параметр any при применении ACL был заменен на IP-адрес инициатора telnet-соединения, то в команде access-enable host необходимо указать параметр host. |
Дополнительно можно настроить временной интервал, после которого динамическая запись будет удалена независимо от активности пользователя:
dyn1(config)# access-list 101 dynamic DYN permit icmp any host 192.168.1.7
Применение ACL на интерфейсе:
dyn1(config)# interface FastEthernet1/0 dyn1(config)# ip access-group 101 in
Настройка доступа telnet:
dyn1(config)# line vty 0 15 dyn1(config-line)# login local
Команда access-enable host активирует динамический ACL:
dyn1(config)# line vty 0 15 dyn1(config-line)# autocommand access-enable host timeout 3
Параметры команды:
- host -- указывает, что запись будет создана для хостов, которые инициировали сессию telnet,
- timeout -- настройка периода времени после которого, в случае не использования динамической записи, запись будет удалена.
Создание пользователей:
dyn1(config)# username u3 password u3 dyn1(config)# username u4 password u4
[править] Проверка работы
Проверка связи до активирования динамического ACL:
dyn3# ping 192.168.1.7 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.7, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) dyn3# ping 192.168.2.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5)
Просмотр информации на dyn1 до активирования динамического ACL:
dyn1#sh access-lists Extended IP access list 101 10 permit tcp any host 192.168.2.1 eq telnet 20 permit ospf any any (2 matches) 30 permit tcp any any established 40 Dynamic DYN permit icmp any host 192.168.1.7
Активирование ACL:
dyn3#telnet 192.168.2.1 Trying 192.168.2.1 ... Open User Access Verification Username: u3 Password: [Connection to 192.168.2.1 closed by foreign host]
После активирования динамического ACL (qua7 пингуется, а интерфейс dyn1 по-прежнему нет):
dyn3# ping 192.168.1.7 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.1.7, timeout is 2 seconds: !!!!! Success rate is 100 percent (5/5), round-trip min/avg/max = 96/183/220 ms dyn3# ping 192.168.2.1 Type escape sequence to abort. Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds: U.U.U Success rate is 0 percent (0/5) dyn3#
Просмотр информации на dyn1 после активирования динамического ACL:
dyn1#sh access-lists Extended IP access list 101 10 permit tcp any host 192.168.2.1 eq telnet (48 matches) 20 permit ospf any any (8 matches) 30 permit tcp any any established 40 Dynamic DYN permit icmp any host 192.168.1.7 permit icmp host 192.168.3.3 host 192.168.1.7
Если команда access-enable указана без параметра timeout, то запись будет оставаться постоянно. Удалить её можно с помощью команды clear ip access-template. Например, очистить запись в динамическом ACL:
dyn1# clear ip access-template 101 DYN host 192.168.3.3 host 192.168.1.7
[править] Пример конфигурации маршрутизатора
hostname dyn1 ! username u3 password 0 u3 username u4 password 0 u4 ! ! interface FastEthernet1/0 ip address 192.168.2.1 255.255.255.0 ip access-group 101 in ! router ospf 1 log-adjacency-changes network 192.168.0.0 0.0.255.255 area 0 ! access-list 101 permit tcp any host 192.168.2.1 eq telnet access-list 101 permit ospf any any access-list 101 permit tcp any any established access-list 101 dynamic DYN permit icmp any host 192.168.1.7 ! ! line vty 0 4 login local autocommand access-enable host timeout 3 line vty 5 15 login local autocommand access-enable host timeout 3 !
[править] Reflexive ACL
Reflexive ACl могут быть настроены только с расширенными именованными ACL. Сами RACL не применяются к интерфейсу, они применяются к ACL.
[править] Настройка RACL
Схема сети такая же как и для динамических ACL.
Создание ACL для исходящего трафика:
dyn1(config)# ip access-list extended outlist dyn1(config-ext-nacl)# permit tcp any any eq telnet reflect REF dyn1(config-ext-nacl)# permit tcp any any eq 22 reflect REF dyn1(config-ext-nacl)# permit icmp host 192.168.1.7 host 192.168.3.3 reflect REF dyn1(config-ext-nacl)# permit ospf any any
Создание ACL для входящего трафика:
dyn1(config)# ip access-list extended inlist dyn1(config-ext-nacl)# permit ospf any any dyn1(config-ext-nacl)# evaluate REF
Применение ACL:
dyn1(config)# interface FastEthernet1/0 dyn1(config-if)# ip access-group inlist in dyn1(config-if)# ip access-group outlist out
[править] Настройка таймеров
Значение глобального таймера по умолчанию 300 секунд:
dyn1#sh access-lists REF Reflexive IP access list REF permit tcp host 192.168.3.3 eq telnet host 192.168.1.7 eq 4749 (41 matches) (time left 299) permit icmp host 192.168.3.3 host 192.168.1.7 (7 matches) (time left 296)
Изменение значения глобального таймера:
dyn1(config)# ip reflexive-list timeout 120
Можно для каждой записи указать своё значение таймера, например:
dyn1(config)# ip access-list extended outlist dyn1(config-ext-nacl)# permit tcp any any eq telnet reflect REF timeout 60 dyn1(config-ext-nacl)# permit tcp any any eq 22 reflect REF timeout 120 dyn1(config-ext-nacl)# permit icmp host 192.168.1.7 host 192.168.3.3 reflect REF timeout 10 dyn1(config-ext-nacl)# permit ospf any any
Просмотр настроек:
dyn1# sh access-lists Reflexive IP access list REF permit tcp host 192.168.3.3 eq telnet host 192.168.1.7 eq 1807 (37 matches) (time left 59) permit icmp host 192.168.3.3 host 192.168.1.7 (8 matches) (time left 7) Extended IP access list inlist 10 permit ospf any any (345 matches) 20 evaluate REF Extended IP access list outlist 10 permit tcp any any eq telnet reflect REF (15 matches) 20 permit tcp any any eq 22 reflect REF 30 permit icmp host 192.168.1.7 host 192.168.3.3 reflect REF (4 matches) 40 permit ospf any any
|
Если настроены и глобальный и специфический таймер для записи, то приоритет у более специфического таймера. |
[править] Пример конфигурации
! interface FastEthernet1/0 ip address 192.168.2.1 255.255.255.0 ip access-group inlist in ip access-group outlist out ! ip access-list extended inlist permit ospf any any evaluate REF ip access-list extended outlist permit tcp any any eq telnet reflect REF permit tcp any any eq 22 reflect REF permit icmp host 192.168.1.7 host 192.168.3.3 reflect REF permit ospf any any !
[править] Временные интервалы для ACL
Применение временных интервалов к правилам ACL может быть полезно, например, в таких случаях:
- правилами компании разрешается различный тип доступа в зависимости от времени рабочего дня,
- необходимо создать временное правило
Первый вариант может быть, например, когда в компании запрещен доступ к определенным ресурсам в рабочее время, но разрешен час до начала рабочего времени, и час после окончания рабочего времени.
Второй вариант может возникнуть, например, когда в компании периодически необходимо предоставлять сотрудникам временный доступ к ресурсам. Например, в компании неделю работает подрядчик и ему нужен доступ к каким-то из серверов компании. Если создать правило сразу с временным интервалом, то оно перестанет работать (станет неактивным) в строго определенное время и можно не бояться забыть его удалить. К сожалению, ACL со временем, как правило, сильно разрастаются и в них остаются "мертвые" правила. Такой подход с временными интервалами хотя бы немного позволит упростить поддержание ACL в актуальном виде.
[править] Настройка параметров временного интервала
Пример настройки временного интервала для рабочих дней:
dyn1(config)# time-range dyn1_1 dyn1(config-time-range)# periodic weekdays 8:00 to 17:00 dyn1(config-time-range)# absolute start 8:00 1 Oct 2009 end 17:00 30 Oct 2009
Пример настройки временного интервала для выходных дней:
dyn1(config)# time-range dyn1_2 dyn1(config-time-range)# periodic weekend 00:00 to 23:59 dyn1(config-time-range)# absolute start 8:00 1 Oct 2009 end 17:00 30 Oct 2009
Просмотр информации о настроенных временных интервалах (второй интервал неактивен, так как сейчас рабочий день):
dyn1#sh time-range time-range entry: dyn1_1 (active) absolute start 08:00 01 October 2009 end 17:00 30 October 2009 periodic weekdays 8:00 to 17:00 used in: IP ACL entry time-range entry: dyn1_2 (inactive) absolute start 08:00 01 October 2009 end 17:00 30 October 2009 periodic weekend 0:00 to 23:59 used in: IP ACL entry dyn1# dyn1# sh clock *14:27:18.951 UTC Wed Oct 7 2009
[править] Применение временного интервала к ACL
Применение временных интервалов к ACL:
dyn1(config)# ip access-list extended Time dyn1(config-ext-nacl)# permit icmp any any time-range dyn1_2 dyn1(config-ext-nacl)# permit tcp any any eq 80 time-range dyn1_1
dyn1#sh access-lists Extended IP access list Time 10 permit icmp any any time-range dyn1_2 (inactive) 20 permit tcp any any eq www time-range dyn1_1 (active)
[править] ACL и log
[править] Перенумерация правил ACL
router(conf)# ip access-list resequence <access-list-name> <starting-sequence-number> <increment>
[править] Object-group
object-group network LOCAL_net description LOCAL networks 10.0.1.0 /24 10.0.10.0 /24
object-group network REMOTE_OUT description remote sites outside networks 192.168.6.0 /24 192.168.7.0 /24 192.168.8.0 /24 192.168.9.0 /24
ip access-list extended IN_to_remote_OUT permit ip object-group LOCAL_net object-group REMOTE_OUT
dyn1#sh object-group Network object group LOCAL_net Description LOCAL networks 10.0.1.0 255.255.255.0 10.0.10.0 255.255.255.0 Network object group REMOTE_OUT Description remote sites outside networks 192.168.6.0 255.255.255.0 192.168.7.0 255.255.255.0 192.168.8.0 255.255.255.0 192.168.9.0 255.255.255.0