06 декабря 2019 года    
Пятница | 07:38    
Главная
 Новости
Базы данных
Безопасность PC
Всё о компьютерах
Графика и дизайн
Интернет-технологии
Мобильные устройства
Операционные системы
Программирование
Программы
Связь
Сети
 Документация
Статьи
Самоучители
 Общение
Форум







Разделы / Безопасность PC / Безопасность

IOS - безопасность - access lists

IOS - безопасность - access lists

Где применяются:

  • фильтрация при прохождении пакетов через интерфейс
  • управление доступом к виртуальным терминалам
  • фильтрация изменений в таблицах маршрутизации

Что собой представляют: последовательность шаблонов просматривается по очереди; если происходит сопоставление с разрешающим шаблоном, то пакет считается разрешенным; если с запрещающим или сопоставления не происходит вовсе, то пакет является запрещенным.

Как применяются:

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

Типы списков доступа:

  • стандартный (проверяется исходный адрес пакета, log-input дополнительно сбрасывает в журнал интерфей, с которого пришел пакет)
    1-99 - по ip адресам (в IOS 12.0 также интервал 1300-1999)
    (config)# access-list номер-листа {deny|permit} ip-адрес-сети [маска] [log | log-input]
    700-799 - по 48-битным MAC-адресам
  • расширенный (исходный, конечный адрес, флаги и т.д.)
    100-199 - по ip адресам (в IOS 12.0 также интервал 2000-2699)
    (config)# access-list номер-листа {deny|permit} протокол исходный-адрес исходная-маска адрес-назначения маска-назначения [precedence старшинство] [tos тип-сервиса] [established] [log| log-input]
    (
    config)# access-list номер-листа {deny|permit} icmp исходный-адрес исходная-маска адрес-назначения маска-назначения [icmp-type [icmp-code]| icmp-message] [precedence старшинство] [tos тип-сервиса] [established] [log| log-input]
    (config)# access-list номер-листа {deny|permit} tcp исходный-адрес исходная-маска [оператор порт [порт]] адрес-назначения маска-назначения [оператор порт [порт]] [precedence старшинство] [tos тип-сервиса] [established] [log| log-input]
    (config)# access-list номер-листа {deny|permit} udp исходный-адрес исходная-маска [оператор порт [порт]] адрес-назначения маска-назначения [оператор порт [порт]] [precedence старшинство] [tos тип-сервиса] [log| log-input]
    1100-1199 - по 48-битным MAC-адресам
  • динамический - Lock-and-Key Security (разрешает временный доступ по результатам авторизации пользователя с помощью AAA, пользоваталь заходит telnet-ом на виртуальный терминал - в описании линии должна быть определена autocommand access-enable [ host ] [timeout минут], telnet-сессия закрывается, IOS создает временный доступ, который будет удален по idle timeout из access-list, absolute timeout из access-enable или вручную командой clear access-template), после номера листа вставляется конструкция:
    dynamic имя-пользователя [ timeout минут ]
    в каждом ACL не больше одного dynamic
    на каждого пользователя не больше одного ACL
  • рефлексивный (на основе информации о текущей сессии), только для именованных IP ACL Представляет собой улучшенную реализацию вместо permit established: доступ дается на время сессии, открытой выходным пакетом, и проверяется соответствие адресов и портов этой открытой сессии. Действует не только на TCP, но и на UDP, ICMP и др.. Рефлексивный ACL вводится в действии при открытии сессии с внутренней стороны: генерится строка permit с тем же протоколом, что и в выходящем пакете, теми же входными и выходными адресами хостов и портами (естественно,  перевернутыми местами). Временная строка удаляется в конце сессии. Для TCP - это через 5 секунд после пакета с двумя FIN-битами или сразу после пакета с RST-битом или после idle timeout. Для других протоколов отслеживается только idle timeout. Неприменим для протоколов, которые меняют номер порта для ответа (например, FTP - в случае которого надо использовать passive FTP). Для выходного трафика на внешнем интерфейсе определяется рефлексивный ACL (команда permit protocol any any reflect name [timeout seconds], модификации по вкусу), применяем его к выходному трафику на внешнем интерфейсе. При фильтрации выходящих пакетов на внешнем интерфейсе IOS как обычно последовательно проверяет условия. Если он доходит до условия со словом reflect, то создается временная соответствующая строка во входном ACL на этом интерфейсе (в этом ACL д.б. определена строка evaluate соответствующее-имя). Задание timeout по умолчанию (300 секунд): ip reflexive-list timeout seconds.
  • перехват TCP (предупреждение DoS атак типа TCP SYN-flooding). Только для наборов firewall (проверка по наличию команды show tcp intercept). Два режима: перехвата и наблюдения. Перехват - IOS получив транзитный пакет с битом SYN, открывает соединение от имени сервера; если соединение произошло удачно, то открывается еще одно соединение от NAS до настоящего сервера и эти две половинки сшиваются. Параметры TCP соединения не могут быть настроены (IOS не знает какие параметры устанавливает сервер). Режим наблюдение: IOS позволяет пакету дойти до настоящего сервера, но следит за успешностью соединения. Если соединение неудачное, то IOS посылает пакет с требованием закрыть сессию на настоящий сервер. В обоих случаюх осуществляется агрессивный настраиваемый контроль за timeout-ами и плотностью запросов SYN. Для того, чтобы разрешить перехват надо:
    1. сконфигурировать расширенный ACL.
    2. ip tcp intercept list номер-ACL (перехватываться будут только прошедшие фильтр пакеты).
    3. ip tcp intercept mode {intercept | watch} (по умолчанию intercept)
    4. ip tcp intercept drop-mode {oldest | random} (если попыток соединения слишком много, то при приходе нового соединения какое-то старое надо грохнуть, по умолчанию самое старое, но можно и в случайном порядке)
    5. ip tcp intercept watch-timeout seconds (по умолчанию 30 секунд)
    6. ip tcp intercept finrst-timeout seconds (ждать по умолчанию 5 секунд после получения RESET или FYN, а затем разрыварь соединение)
    7. ip tcp intercept connection-timeout seconds (по умолчанию неактивное соединение наблюдается 24 часа)
    8. управление переходом в агрессивное состояние (когда IOS считает, что происходит атака и удаляет старые незавершенные соединения по приходу новых, интервал ожидания соединения уменьшается вдвое, timeout в режиме наблюдения уменьшается вдвое), определяется двумя факторами: числом незавершенных соединений и числом попыток соединения за последнюю минуту:
      • ip tcp intercept max-incomplete high number (по умолчанию 1100)
      • ip tcp intercept max-incomplete low number (по умолчанию 900)
      • ip tcp intercept one-minute high number (по умолчанию 1100)
      • ip tcp intercept one-minute low number (по умолчанию 1100)

    show tcp intercept connections
    show tcp intercept statistics

  • контекстно-зависимые ACL (CBAC). Только для наборов firewall (проверка по наличию команды show ip inspect). Представляет собой улучшение рефлексивных ACL (которые в свою очередь представляют улучшение ACL с ключом established). Решает проблему с протоколами типа FTP, которые открывают дополнительные каналы для ответной передачи. IOS производит инспекцию проходящих пакетов на прикладном уровне. Поддерживаемые протоколы: generic TCP, generic UDP, CU-SeeMe, FTP (three-way запрещен), H.323, Java, UNIX R-команды, RealAudio, Sun RPC, SMTP, SQL*Net, StreamWorks, TFTP, VDOLive. Другие протоколы (например, ICMP) не поддерживаются. За подробностями лучше к оригинальной документации. Описывается набор правил и применяется к интерфейсу (ip inspect inspection-name {in | out}). Команды установки параметров:
    • ip inspect tcp synwait-time seconds (по умолчанию 30 секунд)
    • ip inspect tcp finwait-time seconds (по умолчанию 5 секунд)
    • ip inspect tcp idle-time seconds (по умолчанию 3600 секунд)
    • ip inspect udp idle-time seconds (по умолчанию 30 секунд)
    • ip inspect dns-timeout seconds (по умолчанию 5 секунд)
    • ip inspect max-incomplete high number (по умолчанию 500) - число неполностью открытых сессий, переводящих в агрессивный режим (см. перехват TCP)
    • ip inspect max-incomplete low number (по умолчанию 400)
    • ip inspect one-minute high number (по умолчанию 500) - число неполностью открытых сессий в последнюю минуту, переводящих в агрессивный режим (см. перехват TCP)
    • ip inspect one-minute low number (по умолчанию 400)
    • ip inspect tcp max-incomplete host number block-time seconds (по умолчанию 50 и 0) - сколько полуоткрытых сессий терпеть на один хост назначения
    • ip inspect audit trail - выдавать на консоль сообщение о каждой сессии

Протокол - номер протокола или имя (eigrp, gre, icmp, igmp, igrp, ipinip, nos, ospf, tcp или udp; ip - любой).

Оператор сравнивает исходный порт или порт назначения (lt, gt, eq, neq, или range (интервал - 2 числа)) с числом или мнемоническим именем порта.

Маски - инверсные (например: 0.0.0.255). any - сокращение для  0.0.0.0 255.255.255.255. host адрес - вместо "адрес 0.0.0.0".

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

В конце списка подразумевается "запретить все".

established применим только для TCP (удовлетворяет, если взведены биты AXK или RST).

precedence

  • critical
  • flash
  • flash-override
  • immediate
  • internet
  • network
  • priority
  • routine

TOS

  • max-reliability
  • max-throughput
  • min-delay
  • min-monetary-cost
  • normal

ICMP

  • administratively-prohibited
  • alternate-address
  • conversion-error
  • dod-host-prohibited
  • dod-net-prohibited
  • echo
  • echo-reply
  • general-parameter-problem
  • host-isolated
  • host-precedence-unreachable
  • host-redirect
  • host-tos-redirect
  • host-tos-unreachable
  • host-unknown
  • host-unreachable
  • information-reply
  • information-request
  • mask-reply
  • mask-request
  • mobile-redirect
  • net-redirect
  • net-tos-redirect
  • net-tos-unreachable
  • net-unreachable
  • network-unknown
  • no-room-for-option
  • option-missing
  • packet-too-big
  • parameter-problem
  • port-unreachable
  • precedence-unreachable
  • protocol-unreachable
  • reassembly-timeout
  • redirect
  • router-advertisement
  • router-solicitation
  • source-quench
  • source-route-failed
  • time-exceeded
  • timestamp-reply
  • timestamp-request
  • traceroute
  • ttl-exceeded
  • unreachable

Все фрагменты фрагментированного пакета, кроме первого, принимаются ACL безусловно.

Проще всего создавать списки в текстовом редакторе (первая строчка должна быть командой no access-list ...), а затем копировать на маршрутизатор командой:
 copy tftp:имя-файла system:running-config

Начиная с версии 11.2 вместо номеров можно использовать имена (команды ip access-list standard имя и ip access-list extended имя, которые переводят конфигурацию в подрежим ввода списка доступа, на котором доступны команды dynamic, deny и permit с синтаксисом аналогичным описанному выше; выход по команде exit). Поименованный список можно слегка модифицировать командами no permit и no deny. Применять поименованные списки можно только при фильтрации пакетов и маршрутов.

Применение к интерфейсу. К интерфейсу можно применить только один список доступа. Список доступа м.б. либо inbound (приверяется когда пакет поступает на вход интерфейса снаружи), либо outbound (проврка происходит, когда пакет приходит изнутри киски на интерфейс).
(config-if)#ip access-group номер-или-имя-листа {in | out}

Ограничение на доступ к виртуальному терминалу:
(config-line)#access-class номер-листа {in | out}

Если делается попытка применить несконфигурированный список, то подразумевается permit any.

Для каждой строки permit/deny ведется статистика сколько пакетов было пропущено/запрещено этой строкой (это можно использовать для сбора суммарной статистики по портам), при модификации ACL или перезагрузке счетчики сбрасываются::
show access-lists номер-или-имя-ACL
clear access-list counters номер-или-имя-ACL

Сбор статистики о нарушениях (исходный адрес, конечный  адрес, число пакетов, число байт, ACL) производится с помощью команды (на определенный интерфейс):
ip accounting access-violations
show ip accounting [checkpoint] access-violations

Сбор статистики (исходный адрес, конечный адрес, число пакетов, число байт) производится с помощью команды (на определенный интерфейс):
ip accounting output-packets
show ip accounting [checkpoint] output-packets

Длина таблицы учета (по умолчанию 512 строк по 25 байт каждая) задается командой (на глобальном уровне):
ip accounting-threshold threshold

Фильтрация пакетов, подлежащих учету, в зависимости от IP-адреса (должен соответствовать входной ИЛИ выходной IP адрес пакета), задается на глобальном уровне:
ip accounting-list ip-address wildcard
пакеты, не прошедшие фильтр, называются транзитными и хранятся в отдельной таблице, размер которой определяется командой (по умолчанию 0):
ip accounting-transit число

Обнуление базы данных учета и создание checkpoint
clear ip accounting

Управление и отладка:

  • show access-list
  • show ip access-lst

Журнализация производится на уровне 6 (informational), так что настройка команд logging должна быть соответсвующей. Первый пакет попадает в журнал сразу, остальные накапливаются 5-минутными интервалами.


Sergey E. Bogomolov
 IOS - безопасность - access lists
Лента новостей


2006 (c) Copyright Hardline.ru