четверг, 25 августа 2011 г.

Мониторинг трафика на маршрутизаторе Cisco в реальном времени

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

  
NetFlow — сетевой протокол, предназначенный для учёта сетевого трафика, разработанный компанией Cisco Systems. Является фактическим промышленным стандартом и поддерживается не только оборудованием Cisco, но и многими другими устройствами (в частности, Juniper и Enterasys). Также существуют свободные реализации для UNIX-подобных систем.
Для сбора информации о трафике по протоколу NetFlow требуются следующие компоненты:
  1. Сенсор. Собирает статистику по проходящему через него трафику. Обычно это L3-коммутатор или маршрутизатор, хотя можно использовать и отдельно стоящие сенсоры, получающие данные путем зеркалирования порта коммутатора.
  2. Коллектор. Собирает получаемые от сенсора данные и помещает их в хранилище.
  3. Анализатор. Анализирует собранные коллектором данные и формирует пригодные для чтения человеком отчёты (часто в виде графиков).
    Маршрутизатор в данных терминах  будет сенсором Netflow, а без коллектора и анализатора можно обойтись, если нам не нужно хранить данные и  делать развесистые отчеты.

    Настройка проста:

    1. Обе команды можно выполнить или в глобальном режиме или в режиме конфигурации интерфейса.
      ip flow ingress - собирает статистику по входящему трафику
      ip flow egress  - собирает статистику по исходящему трафику

    2. Настройка примитивного отчета в глобальном режиме.
      ip flow-top-talkers
       top 30
       sort-by bytes
       cache-timeout 30000

    3. Настроим таймеры  в глобальном режиме:
       ip flow-cache timeout inactive 10
       ip flow-cache timeout active 5

    После этого командами

    show ip flow top-talkers
    sh ip cache flow

    можно увидеть наиболее активные хосты и типы трафика.

    Если есть необходимость хранить историю загрузки и выводить красивые отчеты для начальства, можно воспользоваться  таким инструментом, как PRTG.

    четверг, 11 августа 2011 г.

    Аутентификация пользователей Cisco ASA через Microsoft Windows NPS.

    Задача:

    Аутентифицировать Remote IPSec VPN пользователей, терминирующихся на ASA, в домене Windows.

    Решение:

    Используем для этого Radius. В качестве Radius сервера настроим Microsoft Network Policy Server.

    1. ASA получает запрос на установление туннеля от клиента.
    2. ASA отсылает запрос на аутентификацию/авторизацию к Radius серверу, чьи функции выполняет NPS.
    3. NPS делает запрос в AD.
    4. AD отвечает NPS.
    5. NPS посылает ответ ASA по Radius протоколу.
    6. Устанавливается (или не устанавливается) IPSec туннель.


    1. Настройка Cisco ASA.

    1) Запустить ASDM, выбрать вкладку Configuration.
    2) Выбрать секцию Remote Access VPN
    3) Выбрать в меню AAA Setup -> AAA Server Groups
    4) Выбрать Add рядом с секцией  AAA Server Groups
    5) Выбрать имя группе, например NSP-RADIUS и не забыть указать протокол RADIUS
    6) Оставить все остальные настройки по умолчанию и нажать OK.
    7) Выбрать только что созданную Server Group.
    8) Ниже в секции Servers in the Selected Group нажать Add
    9) В поле Interface Name вырать интерфейс, через который ASA будет отсылать запросы на Radius Server.
    10) В поле Server Name or IP Address ввести IP адрес нашего Radius сервера.
    11) Придумать (и запомнить) пароль и ввести его в поле Server Secret Key. Его же вводим в поле Common Password.
    12) Остальное по дефолту и нажать OK.



    2. Настройка Microsoft Windows Network Policy Server


    Установить Windows Server 2008, который будет нашим Radius сервером.
    Добавить функцию Network Policy Server на установленный сервер.


     1) На Windows Server 2008 запустить Server Manager.
     2) Выбрать Roles и нажать правую клавишу мыши и выбрать Add Roles.
     3) На странице Before You Begin нажать Next.
     4) Выбрать роль Network Policy and Access Services role и нажать Next.
     5) Среди Role Service выбрать только Network Policy Server service и нажать Next.
     6) Нажать Install.

    По окончании инсталляции регистрируем сервер. Для выполнения этой процедуры нужны права администратора домена.
     7) Выбираем Roles -> Network Policy ans Access Services -> NPS(Local) и нажимаем правую клавишу.
     8) В меню выбираем Register Server in Active Directory.
     9) Выбираем все по дефолту.

    Создаем клиентскую запись для ASA.
     10) Выбираем NPS(Local) -> RADIUS Clients and Servers -> Radius Clients.
     11) По правой клавише выбираем New.
     12) Придумываем Friendly Name для нашей ASA. Например, “ASA” :)
     13) Вводим Address(IP or DNS).
     14) Вводим Server Secret Key, который мы указывали в шаге 11 при настройке ASA.
     15) Остальное оставляем по дефолту.

    Создаем Connection Request Policy.
     16) Выбираем NPS(Local) -> Policies ->  Connection Request Policies.
     17) В правой половине окна выбираем политику по умолчанию, щелкаем правой клавишей и выбираем Disable.
     18) Встаем обратно на NPS(Local) -> Policies ->  Connection Request Policies и правой клавишей выбираем New.
     19) Выбираем осмысленное имя политики, например ASA.
     20) Оставляем в поле Type of Access значение Unspecified, кликаем Next.
     21) На странице Conditions щелкаем Add. Выбираем и указываем Client IPv4 Address.
     22) Щелкаем Next, на остальных страницах оставляем настройки по умолчанию.

    Создаем Network Policy.
     23) По правыму щелчку мыши на  Network Policy выбрать  New.
     24) Дать осмысленный Policy Name. Оставить в поле Type of network access server значение Unspecified и нажать Next.
     25) Требуется определить хотя бы 1  условие в Conditions. Нжимаем Add.
     26) Добавим UsersGroup, чтобы обозначить, что данная политика применяется для соответствуюшей группы в  AD. Можно добавить Client IPv4 Address или любые другие условия. Нажать Next.
     27) В секции Access Permission оставим Access granted (в принципе этот параметр утрачивает влияние, если в шаге 30) мы определим атрибут Class. Но если хотим по-простому можно контролировать доступ этой кнопкой). Жмем Next.
     28) В качестве Authentication methods выбираем только Unencrypted authentication (PAP, SPAP). жмем Next.
     29) Для доступа по VPN выбираем NAS Port Type = Virtual(VPN). жмем Next.
     30) В Settings -> RADIUS Attributes -> Standard выбираем Service-Type = Framed, Framed-Protocol = PPP. По желанию, можно добавить Class с названием политики на ASA, которую надо применять к данному подключению. Жмем Next.
     31) Жмем Finish.

    Перестартуем Network Policy Server service.

    Проверяем RADIUS аутентификацию.

    1) В ASDM выбираем Configuration -> Remote Access VPN -> AAA Setup -> AAA Server Groups
    2) Выбираем только что созданную группу.
    3) Внизу выбираем сервер и нажимаем справа кнопку Test.
    4) Выбираем Authentication, вводим логин, пароль и убеждаемся, что все работает.



    Ссылки:


    среда, 10 августа 2011 г.

    NAT и Multiple NAT Pools, трансляция с привязкой к интерфейсу.

    При использовании NAT иногда возникает необходимость  использовать разные NAT pool’ы в зависимости от адреса назначения. Например, пакеты, адресованные в Интернет необходимо транслировать  в публичные адреса компании. А пакеты, уходящие через IPSec VTI  и адресованные партнерам, имеющим перекрывающееся адресное пространство, надо транслировать  в ранее согласованные адреса.

    Схема:


    И головной офис, и офис партнера используют сеть 10.0.0.0/8 для собственных нужд. У головной компании есть собственные публичные адреса из сети 1.1.1.0/24, в которые будем транслировать пакеты, уходящие с интерфейсов GE0/0 и  GE0/1. Для партнера (пакеты, уходящие с интерфейса Tunnel0) головной офис будет транслировать адрес источника в своих пакетах в 192.168.0.0/24. При этом к партнеру мы хотим пускать только пользователей с адресов 10.1.1.0/24, а в интернет 10.2.2.0/24.

    Конфигурация на HQ:

    1. NAT для пакетов, отправляемых в сторону партнера
    ip access-list extended  ACL_PARTNER_NAT  - создадим ACL, ограничивающий допуск к сети партнера
     permit ip 10.1.1.0 0.0.0.255 any

    route-map RM_PARTNER_NAT permit 10 - создадим рутмап, обеспечивающий выделение нужных потоков для трансляции к партнеру
     match ip address ACL_PARTNER_NAT
     match interface Tunnel0

    ip nat pool PARTNER_NAT_POOL 192.168.0.1 192.168.0.254 netmask 255.255.255.0 type rotary - объявляем партнерский NAT POOL 

    ip nat inside source route-map RM_PARTNER_NAT pool PARTNER_NAT_POOL overload - настраиваем трансляцию

     

    2. NAT для пакетов, отправляемых в Интернет

    ip access-list extended  ACL_INTERNET_NAT  - создадим ACL, ограничивающий допуск к Интернету
     permit ip 10.2.2.0 0.0.0.255 any

    route-map RM_INETRNET_NAT permit 10 - создадим рутмап, обеспечивающий выделение нужных потоков для трансляции в Интернет
     match ip address ACL_INTERNET_NAT
     match interface GE0/0

    route-map RM_INETRNET_NAT permit 20 - и по второму интерфейсу тоже
     match ip address ACL_INTERNET_NAT
     match interface GE0/2

    ip nat pool INTERNET_NAT_POOL 1.1.1.1 1.1.1.254 netmask 255.255.255.0 type rotary - объявляем NAT POOL для Интернета

    ip nat inside source route-map RM_INTERNET_NAT pool INTERNET_NAT_POOL overload - настраиваем трансляцию



    3. Не забываем указать на интерфейсах их роль в NAT-трансляциях

    interface GigabitEthernet0/0
    ip nat outside

    interface GigabitEthernet0/1
    ip nat outside

    interface Tunnel0
    ip nat outside
     
    interface GigabitEthernet1/0
    ip nat inside

    З.Ы. Не заработала конфигурация static route-map NAT + обычный динамический PAT. Если транслируемый адрес подпадал под оба правила, то для трансляции всегда выбирался динамический PAT.

    Автоматический Backup конфигурации в маршрутизаторах Cisco

    Настроить автоматическое (по таймеру, допустим раз в неделю) сохранение конфигурации маршрутизатора Cisco на tftp или ftp сервер можно:

    1. Повесив на крон выполнение команды «show run» с редиректом.

    1.Сначала определим, ЧТО хотим делать.
    kron policy-list Backup
         cli show run | redirect tftp://10.10.10.10/Cisco_autobackup.conf

    2. Потом обозначим ПЕРИОДИЧНОСТЬ, с которой будем выполнять действие.
    kron occurrence Backup at 23:00 Sun recurring
         policy-list Backup





    Если хотим бэкапить по ftp, то возможны проблемы. На некоторых версиях IOS  есть баг, в результате которого при редиректе на ftp создаются файлы нулевой длины.

    R(config)#file prompt quiet -- чтобы маршрутизатор не задавал лишних вопросов.

    Чтобы этого избежать, можно переписать задание так:

    R(config)#kron policy-list Backup
    R(config-kron-policy)#cli write


    R(config-kron-policy)#cli copy startup-config ftp://user:password@10.10.10.10/Cisco_autobackup.conf
    R(config-kron-policy)#exit


    2. С помощью настройки archive:

    1. Определим параметры коннекта:
    R(config)#ip ftp username user
    R(config)#ip ftp password password
    R(config)#ip ftp source-interface fastEthernet 0/0 - если есть какие-то ограничения по IP

    2. Настроим archive
    R(config)#archive
    R(config-archive)#path ftp://10.10.10.10/cisco/R_autobackup.conf
    R(config-archive)#time-period 10080 -- раз в неделю.