tag:blogger.com,1999:blog-23331483337719979432024-02-07T13:53:33.426+01:00Бардак в головеСо временем обрывки знаний и умений становится все труднее удержать в голове. Они расползаются по уголкам памяти заполняя все свободное место. Извлекать необходимое на свет становится все сложнее.
Этот блог - рабочая записная книжка.pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.comBlogger28125tag:blogger.com,1999:blog-2333148333771997943.post-31745182062783619722008-10-28T12:01:00.001+01:002008-10-28T12:05:04.130+01:00Анализируй это! (capture on cisco IOS, tcpdump on cisco)<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;">Чуть больше года назад, я уже писал о инструментах подобных </span><a href="http://techoover.blogspot.com/2007/09/live-and-learn.html" id="l__y" style="font-family: Verdana,sans-serif;" title="tcpdump в cisco рутерах и файрволлах.">tcpdump в cisco рутерах и файрволлах.</a><span style="font-family: Verdana,sans-serif;"> Напомню вкратце, для PIX/ASA существует удобный инструмент capture с помощью которого можно захватывать и просматривать трафик, для IOS приходилось довольствоваться командой дебаг предварительно уточнив её с помощью access-list.</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">В свеженькой версии IOS 12.4(20)Т появилась новый и удобный функционал решающий эту проблему более элегантно. Конечно, версия достаточно новая и мало кто рискнет поставить её в реальную работу, но рано или поздно функционал появится и в стабильных версиях.</span><br style="font-family: Verdana,sans-serif;" /><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">Первым делом необходимо создать буфер в который будут складывается пойманные пакеты. Как видно из команды ниже буферов может быть много и самых разных.</span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;">// buf1 - название буфера</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">// size и max-size - размер буфера и максимальный размер элемента в буфере, соответственно</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">// circular или linear - тип буфера, будут ли старые элементы вытеснятся новыми или нет</span></span><br />
<span style="font-size: small;"><span style="font-family: "Courier New",Courier,monospace;">R2#monitor capture buffer buf1 size 256 max-size 256 circular</span></span><br />
<br />
<span style="font-size: small;"><span style="font-family: Verdana,sans-serif;">Далее создадим "точку ловли" (capture point), которая сообщит рутеру где ожидать трафика и в каком направлении он будет двигаться.</span><br style="font-family: Verdana,sans-serif;" /><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">// ip cef - метод коммутации, мы используем cef</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">// cappoint - название точки</span><br style="font-family: Verdana,sans-serif;" /><span style="font-family: Verdana,sans-serif;">// далее следует интерфейс на котором слушать и в каком направлении - в обоих</span></span><br />
<span style="font-family: Courier New;">R2#monitor capture point ip cef cappoint fa 0/0 both</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">После создания, появится следующее сообщение с логах.</span><br />
<br />
<span style="font-family: Courier New;">*Oct 27 15:23:23.859: %BUFCAP-6-CREATE: Capture Point cappoint created.</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">Следующий шаг - ассоциация созданной точки с буфером, так как и точек и буферов может быть достаточно большое количество, это просто указывает в какой буфер складывать пакеты.</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">// синтаксис просто, даже не знаю что писать - всё очевидно</span><br />
<span style="font-family: Courier New;">R2#monitor capture point associate cappoint buf1</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">// Проверить конфигурацю можно следующей командой</span><br />
<span style="font-family: Courier New;">R2#show monitor capture point all</span><br />
<span style="font-family: Courier New;">Status Information for Capture Point cappoint</span><br />
<span style="font-family: Courier New;">IPv4 CEF</span><br />
<span style="font-family: Courier New;">Switch Path: IPv4 CEF , Capture Buffer: buf1</span><br />
<span style="font-family: Courier New;">Status : Inactive</span><br />
<br />
<span style="font-family: Courier New;">Configuration:</span><br />
<span style="font-family: Courier New;">monitor capture point ip cef cappoint FastEthernet0/0 both</span><br />
<br />
<span style="font-family: Verdana;">Всё готово для траблшута, осталось только включить. В данный момент статус - Inactive.</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">// Включаем. В данном случае all, но можно включить и отдельную "точку" по имени</span><br />
<span style="font-family: Courier New;">R2#monitor capture point start all</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">Появится следующее сообщение в логах.</span><br />
<span style="font-family: Courier New;">*Oct 27 15:25:05.195: %BUFCAP-6-ENABLE: Capture Point cappoint enabled</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">// проверим статус еще раз, как можно заметить статус изменился на активный</span><br />
<span style="font-family: Courier New;">R2#show monitor capture point all</span><br />
<span style="font-family: Courier New;">Status Information for Capture Point cappoint</span><br />
<span style="font-family: Courier New;">IPv4 CEF</span><br />
<span style="font-family: Courier New;">Switch Path: IPv4 CEF , Capture Buffer: buf1</span><br />
<span style="font-family: Courier New;">Status : Active</span><br />
<br />
<span style="font-family: Courier New;">Configuration:</span><br />
<span style="font-family: Courier New;">monitor capture point ip cef cappoint FastEthernet0/0 both</span><br />
<br />
<span style="font-family: Verdana,sans-serif;">Посмотреть что же мы там наловили можно следующей командой</span><br />
<br />
<span style="font-family: Courier New;">R2#show monitor capture buffer buf1 dump</span><br />
<span style="font-family: Courier New;">15:29:24.251 UTC Oct 27 2008 : IPv4 CEF Turbo : Fa0/0 None</span><br />
<br />
<span style="font-family: Courier New;">67BB35C0: CA000A00 0000C200 08340001 08004500 J.....B..4....E.</span><br />
<span style="font-family: Courier New;">67BB35D0: 00640014 0000FE01 946E0A0A 0A020A0A .d....~..n......</span><br />
<span style="font-family: Courier New;">67BB35E0: 0A010800 EEC20004 00000000 0000000F ....nB..........</span><br />
<span style="font-family: Courier New;">67BB35F0: 8F74ABCD ABCDABCD ABCDABCD ABCDABCD .t+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3600: ABCDABCD ABCDABCD ABCDABCD ABCDABCD +M+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3610: ABCDABCD ABCDABCD ABCDABCD ABCDABCD +M+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3620: ABCDABCD ABCDABCD ABCDABCD ABCDABCD +M+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3630: ABCD00 +M.</span><br />
<br />
<span style="font-family: Courier New;">15:29:24.251 UTC Oct 27 2008 : IPv4 LES CEF : Fa0/0 None</span><br />
<br />
<span style="font-family: Courier New;">67BB35C0: CA000A00 0000C200 08340001 08004500 J.....B..4....E.</span><br />
<span style="font-family: Courier New;">67BB35D0: 00640014 0000FE01 946E0A0A 0A020A0A .d....~..n......</span><br />
<span style="font-family: Courier New;">67BB35E0: 0A010800 EEC20004 00000000 0000000F ....nB..........</span><br />
<span style="font-family: Courier New;">67BB35F0: 8F74ABCD ABCDABCD ABCDABCD ABCDABCD .t+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3600: ABCDABCD ABCDABCD ABCDABCD ABCDABCD +M+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3610: ABCDABCD ABCDABCD ABCDABCD ABCDABCD +M+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3620: ABCDABCD ABCDABCD ABCDABCD ABCDABCD +M+M+M+M+M+M+M+M</span><br />
<span style="font-family: Courier New;">67BB3630: ABCD00 +M.</span><br />
<br />
<br />
<span style="font-family: Verdana,sans-serif;">Не слишком понятно, правда? А ведь это был обычный ping, ничего более. Для упрощения анализа полученные данные можно экспортировать в формат pcap и анализировать на PC в любимом инструменте, например wireshark. </span><br />
<br />
<span style="font-family: Verdana,sans-serif;">//экспорт буфера, вариантов много - tftp, ftp, scp и другие Xtp :)</span><br />
<span style="font-family: Courier New;"><span style="font-family: "Courier New",Courier,monospace;">R2#monitor capture buffer buf1 export (куда)</span><br />
<br style="font-family: Verdana;" /><span style="font-family: Verdana,sans-serif;">Но всё таки чего-то не хватает, зачем например собирать данные со всего интерфейса если интересует всего один IP и более того, только один протокол? Конечно решение есть. При создании буфера можно указать фильтр для отбора пакетов из потока. Делается это с помощью access-list. </span><br style="font-family: Verdana,sans-serif;" /></span><br />
<span style="font-family: "Courier New",Courier,monospace;">R2#monitor capture buffer buf1 filter access-list (номер, имя)</span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com4tag:blogger.com,1999:blog-2333148333771997943.post-70362367139337696202008-10-05T19:22:00.002+02:002008-10-05T19:27:13.150+02:00Есть браузер – нет проблем. Немного теории и начальная конфигурация.<div class="MsoNormal"><span style="font-family: Verdana;">Недавно мне в руки попала достаточно интересная железяка – Juniper </span><span style="font-family: Verdana;">SA</span><span style="font-family: Verdana;">-2000, предназначенная для организации построения VPN по технологии SSL. Следующие несколько заметок будут посвящены именно этой теме. В документации производителя она так же называется </span><span style="font-family: Verdana;">IVE</span><span style="font-family: Verdana;">. Итак, начнем.</span></div><div class="MsoNormal"><span style="font-family: Verdana;"> </span><b><span style="font-family: Verdana;"><br />
</span></b></div><div class="MsoNormal"><span style="font-family: Verdana;">Заголовок выбран неслучайно ведь основным преимуществом и отличием SSL VPN от хорошо знакомого IPSec является именно возможность подключится к шлюзу с помощью обычного браузера. Т.е. при полном отсутствии клиентской части, например из гостиницы или интернет кафе. </span></div><div class="MsoNormal"><span style="font-family: Verdana;">С технической точки зрения, </span><span style="font-family: Verdana;">Juniper</span><span style="font-family: Verdana;">, впрочем как и остальные вендоры, предоставляет два основных вида туннелей:</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- чистый SSL</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- </span><span style="font-family: Verdana;">network connect</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<b><span style="font-family: Verdana;">Чистый </span></b><b><span style="font-family: Verdana;">SSL</span></b></div><div class="MsoNormal"><span style="font-family: Verdana;">Пользователь, используя обычный http, заходит на страничку удалённого доступа, вводит данные необходимые для аутентификации и попадает на SSL портал. На портале ему могут быть доступны следующие сервисы:</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- web доступ, если внутри есть web сервер доступ к которому должен быть защищен это тот самый случай;</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- файловый доступ, заворачивает NBT и NFS протоколы в SSL обертку;</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- </span><span style="font-family: Verdana;">SAM</span><span style="font-family: Verdana;">, расшифровывается как </span><span style="font-family: Verdana;">Secure</span><span style="font-family: Verdana;"> </span><span style="font-family: Verdana;">Application</span><span style="font-family: Verdana;"> </span><span style="font-family: Verdana;">Manager</span><span style="font-family: Verdana;">, представляет собой Java либо Activ</span><span style="font-family: Verdana;">e</span><span style="font-family: Verdana;">X приложение поддерживающее туннель к заранее известным серверам. Сложно написал, но по-сути это тот же SSH туннель только с помощью SSL</span><span style="font-family: Verdana;">;</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- </span><span style="font-family: Verdana;">Telnet</span><span style="font-family: Verdana;">/</span><span style="font-family: Verdana;">SSH</span><span style="font-family: Verdana;">, </span><span style="font-family: Verdana;">Java</span><span style="font-family: Verdana;"> приложение являющееся клиентом Telnet либо SSH соответственно;</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- Terminal Services, такое же Java приложение но для протоколов RDP и ICA;</span><span style="font-family: Verdana;"></span></div><div class="MsoNormal"><span style="font-family: Verdana;">- </span><span style="font-family: Verdana;">Meeting</span><span style="font-family: Verdana;">, защищенное место для проведения собраний, тема отдельной заметки по-хорошему;</span></div><div class="MsoNormal"><span style="font-family: Verdana;">- Email Client, такое же Java приложение.</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<b><span style="font-family: Verdana;">Network Connect </span></b></div><div class="MsoNormal"><span style="font-family: Verdana;">В терминологии Juniper называется это называется Network Connect - загружаемое win32 либо Java приложение которое после аутентификации устанавливает виртуальный драйвер и поднимает полноценный </span><span style="font-family: Verdana;">VPN</span><span style="font-family: Verdana;"> туннель. Опять таки двумя различными способами, полноценный IPSec либо заворачивая всё в SSL. Для первого способа необходимо открыть порт udp/4500. Также для NC (Network Connect) необходимо иметь права администратора на клиентском компьютере.</span><span style="font-family: Verdana;"></span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<b><span style="font-family: Verdana;">Включаем</span></b></div><div class="MsoNormal"></div><div class="MsoNormal"><span style="font-family: Verdana;">Надеюсь я понятно описал возможные опции, теперь перейдем к конфигурации. </span></div><div class="MsoNormal"><span style="font-family: Verdana;">Первоначальная конфигурация производится с помощью стандартного консольного соединения. После пары вопросов типа, "а не новый ли это член кластера?" или "согласны ли вы с лицензионным соглашением?", железяка примерно такое меню:</span></div><div class="MsoNormal"></div><div class="MsoNormal"><span style="font-size: small;"><br />
</span><br />
<span style="font-family: "Courier New"; font-size: small;">Welcome to the Juniper Networks IVE Serial Console!</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;">Current version: 6.3R1 (build 13557)</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;">Rollback version: 6.2R2-1 (build 13525)</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;">Reset version: 5.1R2 (build 9029)</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;">Licensing Hardware ID: XXXXXXX</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;">Serial Number: XXXXXXXX</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;">Please choose from among the following options:</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 1. Network Settings and Tools</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 2. Create admin username and password</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 3. Display log/status</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 4. System Operations</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 5. Toggle password protection for the console (Off)</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 6. Create a Super Admin session.</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 7. System Snapshot</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 8. Reset allowed encryption strength for SSL</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;"> 10. Toggle SSL HW Acceleration (system will reboot when this setting is modified): off</span></div><div class="MsoNormal"><span style="font-family: "Courier New"; font-size: small;">Choice:</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">в котром в первую очередь нас должны интересовать два пункта, которые так и называются: первый и второй. :) Первый позволяет указать основные сетевые настройки интерфейсов, в второй создать локального пользователя с правами администратора.</span></div><div class="MsoNormal"><span style="font-family: Verdana;">Остальные пункты позволяют просмотреть некоторые локальные логи, перезагрузить, выключить </span><span style="font-family: Verdana;">IVE</span><span style="font-family: Verdana;"> или откатится на предыдущую версию ПО. И еще несколько базовых возможностей.</span></div><div class="MsoNormal"></div><div class="MsoNormal"><span style="font-family: Verdana;">Описывать настройку сети я не буду, она достаточно тривиальна. После конфигурации сетевых параметров web-интерфейс доступен по адресу: https://<</span><span style="font-family: Verdana;">IP</span><span style="font-family: Verdana;">_</span><span style="font-family: Verdana;">address</span><span style="font-family: Verdana;">>/</span><span style="font-family: Verdana;">admin</span><span style="font-family: Verdana;">. К сожалению в SSL устройствах Juniper не предоставляет возможности управления из командной строки. </span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<b><span style="font-family: Verdana;">Интерфейс </span></b></div><div class="MsoNormal"><span style="font-family: Verdana;">Следующий скриншот может дать определённое представление как выглядит интерфейс. Он кликабелен, можно рассмотреть подробнее.</span></div><div class="MsoNormal"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"></div><div class="separator" style="clear: both; text-align: center;"><a href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEj-97jGIqs2eSfg8jiMseFPiT_47wH-OooOSXr3aeBS1S2X05yLoXKJhynDRaVkXqC7hKtcOXduJlWIyY0zucWGBPFfXAHWoaGb5NSoQQn5fOMBHx3ugGIdgk65zclxwW1lkQevxuL7-84/s1600-h/overview.png" imageanchor="1" style="margin-left: 1em; margin-right: 1em;"><img border="0" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgNhe4SwOHKhp0Un2wfBr2XOpfBcDwQz9IdtUuT7W9vEvBzH2mCiymD9PcXd8fnZawKTlBJ93KQ_EUHA0Z2S9ebrwMcSWJpri3RkTCRhEIgwYFo0gJK5Ose7F7k6cfZyUcmQRVMarI0bo0/s320-r/overview.png" /></a></div><div class="MsoNormal"></div><div class="MsoNormal"><span style="font-family: Verdana;"> </span> </div><div class="MsoNormal"><span style="font-family: Verdana;">Описывать интерфейс занятие муторное и бесполезное, потому делать я этого не буду. Однако расскажу о некоторых терминах и принципах конфигурирования.</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Начнем с конца. </span></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Первым делом необходимо создать и настроить серверы аутентификации (</span><span style="font-family: Verdana;">auth</span><span style="font-family: Verdana;">. </span><span style="font-family: Verdana;">servers</span><span style="font-family: Verdana;">), т.е. место откуда устройство будет черпать информацию о пользователях. Это может быть radius, LDAP, Active Directory, локальная база и еще пара менее популярных вариантов. </span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Каждому прошедшему аутентификацию пользователю присваивается роль или несколько (User Role). Именно на уровне роли пользователи получают доступ к различным возможностях </span><span style="font-family: Verdana;">IVE</span><span style="font-family: Verdana;"> как например web, network connect или файловый доступ. Отмечу, кроме разрешения на уровне роли, должна быть создана ресурсная политика (Resource Police) разрешающая доступ к данному ресурсу.</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Далее необходимо создать пользовательскую область (</span><span style="font-family: Verdana;">User</span><span style="font-family: Verdana;"> </span><span style="font-family: Verdana;">Realm</span><span style="font-family: Verdana;">), подскажите лучший перевод если знаете. :) В реалме указывается несколько важных параметров: способ которым пользователи будут аутентифицироваться (указывается сервер настроенный в пункте </span><span style="font-family: Verdana;">auth</span><span style="font-family: Verdana;">. </span><span style="font-family: Verdana;">servers</span><span style="font-family: Verdana;">) и правила (Role Mapping) по которым пользователь будет оцениваться как подходящий для данной пользовательской роли. Например это может быть требование состоять в определённой группе.</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Следующий шаг – страницы входа (Sign-in Page). Достаточно простая вещь позволяет создать страничку с необходимыми настройками как например: фирменный логотип, инструкция по использованию и т.д. </span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Страница входа назначается политике входа (Sign-in Police), также в политике входа настраивается адрес по которому будет доступна эта страница (например hostname/sign-in page) и user realm который будет использоваться для аутентификации.</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Таким образом, в правильном (со стороны пользователя) порядке цепочка будет выглядеть следующим образом:</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Sign-in Page -> Sign-in Police -> User Realm -> User Role </span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<span style="font-family: Verdana;">Практический пример последует в следующей части, обратите внимание на вопросы.</span></div><div class="MsoNormal"></div><div class="MsoNormal"><br />
<b><span style="font-family: Verdana;">Вопросы</span></b></div><div class="MsoNormal"><span style="font-family: Verdana;">Я прекрасно понимаю, читать текстовое описание настройки достаточно скучно, не говоря уже о том, что это запутывает. В связи с этим вопрос.</span></div><div class="MsoNormal"><span style="font-family: Verdana;">Подскажите каким образом лучше описывать конфигурацию в заметке? С устройствами конфигурируемыми посредством командной строки это достаточно просто, а как быть в случае графического инсталлятора? Пичкать пол-сотни скриншотов для объяснения мне не кажется выходом, описывать по типу пункт меню 1-> Пункт меню 2 -> галочка напротив пункта номер семь тоже достаточно скучно, да и не даст совершенно никакого представления тем у кого нет доступа к железу, а почитать и разобраться всё таки хочется. Может быть делать короткий анонс в блоге, а само описание перенести в презентацию? А может лучше записывать скринкасты? Меня интересует ваше мнение, читатели. :)</span></div>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com4tag:blogger.com,1999:blog-2333148333771997943.post-21859126340636333522008-09-08T14:54:00.003+02:002008-09-08T15:15:48.893+02:00Отчет о поездке на FUDCon<div style="font-family: verdana;font-family:Verdana,sans-serif;" ><a href="http://fedoraproject.org/w/uploads/f/f5/Logo_fudcon-brno.png" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img src="http://fedoraproject.org/w/uploads/f/f5/Logo_fudcon-brno.png" border="0" height="70" width="200" /></a><span style="font-size:small;">На прошедших выходных мне удалось попасть на достаточно интересную конференцию посвященную Linux - <a href="http://fedoraproject.org/wiki/FUDCon/FUDConPrague2008%20">FUDCon</a>. Как можно догадаться из названия посвящена она дистрибутиву Fedora пользователем которого я не являюсь. :) Несмотря на это информация была достаточно интересна для меня.<br /> Расскажу подробнее об организации мероприятия.<br /> Всё происходило в здании <a href="http://www.fi.muni.cz/">факультета информатики университета имени Масарика в городе Брно</a>. Первые восторги вызвало само здание - отлично оборудованное, чистое и светлое. Всё настолько удобно и практично - наши студенты бы обзавидовались.<br /><br /></span></div><div style="font-family: verdana;font-family:Verdana,sans-serif;" ><a href="http://farm4.static.flickr.com/3277/2833206382_b6062b3def_m.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img src="http://farm4.static.flickr.com/3277/2833206382_b6062b3def_m.jpg" border="0" /></a><span style="font-size:small;"> В фотографиях можно найти несколько отличных снимков аудиторий. </span></div><div style="font-family: verdana;font-family:Verdana,sans-serif;" ><span style="font-size:small;">Организация мероприятия, расселение и питание также оказалось на высоте. При этом участие было бесплатным, а некоторых участникам RedHat даже частично компенсировал затраты. <br /><br />С докладами оказалось хуже.<br />Нет, темы были интересны и вопросы обсуждались правильные, но всё таки большинство технических людей не умеет читать презентации, что конечно сказалось на качестве.<br /><br /> Однако самое ценное - полученная информация и общение с интересными людьми позволяют закрыть глаза на мелкие недочеты докладчиков. В большинстве случаев, человек который просто ужасно только что прочитал презентацию, оказывался замечательным собеседником.<br /><br /></span></div><div class="separator" style="clear: both; text-align: center; font-family: verdana;"><a href="http://farm4.static.flickr.com/3046/2831197154_e153bf07fa_m.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em;"><img src="http://farm4.static.flickr.com/3046/2831197154_e153bf07fa_m.jpg" border="0" /></a></div><div style="font-family: verdana;font-family:Verdana,sans-serif;" ><span style="font-size:small;">Увидел и пощупал знаменитый долгострой - OpenMoko. Даже с двумя разными прошивками - родной и Nokia. На устройстве на фотографии слева установлена qtopia от финнов.<br /><br /><br /></span></div><div style="font-family: verdana;font-family:Verdana,sans-serif;" ></div><div style="font-family: verdana;" face="Verdana,sans-serif"><span style="font-size:small;">Конечно всем выдавали бесплатные футболки. :)</span></div><div style="font-family: verdana;" face="Verdana,sans-serif"><span style="font-size:small;"> </span> </div><div style="font-family: verdana;" face="Verdana,sans-serif"> К сожалению посетить я смог только один день конференции, но зато самый главный. :)<br /><br /></div><div style="font-family: verdana;" face="Verdana,sans-serif"></div><div style="font-family: verdana;" face="Verdana,sans-serif">Доклады на которых я присутствовал:<br /><br />- <span class="misspell" id="pvje6" suggestions="">sec</span> <span class="misspell" id="pvje7" suggestions="">tool</span>. Достаточно простая утилита для анализа конфигураций компьютера. Изначально заложены простые принципы - проверка конфигурационных файлов основных <span class="misspell" id="pvje8" suggestions="сервисом,сервизов">сервисов</span> (как <span class="misspell" id="pvje9" suggestions="">ssh</span> например), прав доступа (если, скажем, установить домашней директории права на запись для всем - утилита выдаст предупреждение).<br /><br />- <span class="misspell" id="pvje10" suggestions="">oVirt</span> Продукт от <span class="misspell" id="pvje11" suggestions="">Fedora</span> который в идеале не должен уступать коммерческим реализациям <span class="misspell" id="pvje12" suggestions="">VmWare</span>. В качестве сердцевины используется стандартный <span class="misspell" id="pvje13" suggestions="">KVM</span>, также проект предлагает готовые образы "<span class="misspell" id="pvje14" suggestions="мод,ною,норд,род,но">нод</span>" для развертывания. Я так понял это выглядит следующим образом: есть один главный сервер и какое-то количество рабочих лошадок называемых <span class="misspell" id="pvje15" suggestions="модами,родами,одами,анодами,бодами">нодами</span>. На <span class="misspell" id="pvje16" suggestions="моды,роды,соды,оды,аноды">ноды</span> устанавливается образы ОС и подключаются к консоли главного сервера. После этого на сервере создается (импортируется) виртуальная машина и всё готово к запуску. Сервер сам выберет <span class="misspell" id="pvje17" suggestions="моду,норду,роду,соду,ноу">ноду</span> из пула которая загружена менее всего и запустит на ней <span class="misspell" id="pvje18" suggestions="">VM</span>. По словам докладчика, если через некоторое время <span class="misspell" id="pvje19" suggestions="мода,норда,рода,сода,но да">нода</span> даст сбой, то сервер способен перевести виртуальную машину на другую <span class="misspell" id="pvje20" suggestions="моду,норду,роду,соду,ноу">ноду</span> даже без прекращение работы. Я спрашивал про <span class="misspell" id="pvje21" suggestions="">tcp</span> сессии в данном случае - сказали <span class="misspell" id="pvje22" suggestions="сепсис,сессию,сессии,сессий,сессия">сессис</span> выживут.<br /><br />- <span class="misspell" id="pvje23" suggestions="">Spacewalk</span><span class="misspell" id="pvje24" suggestions=""> </span></div><a href="http://farm4.static.flickr.com/3265/2832364907_801225af3b_m.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; font-family: verdana;"><img src="http://farm4.static.flickr.com/3265/2832364907_801225af3b_m.jpg" border="0" /></a><a href="http://farm4.static.flickr.com/3265/2832364907_801225af3b_m.jpg" imageanchor="1" style="clear: left; float: left; margin-bottom: 1em; margin-right: 1em; font-family: verdana;"></a><div style="font-family: verdana;"><span class="misspell" id="pvje24" suggestions="">Spacewalk</span> это то, что ранее называлось <span class="misspell" id="pvje25" suggestions="">RedHat</span> <span class="misspell" id="pvje26" suggestions="">network</span> и было доступно платным подписчикам. Сейчас (три месяца назад) продукт выпустили в <span class="misspell" id="pvje27" suggestions="">open</span> <span class="misspell" id="pvje28" suggestions="">source</span> и переименовали в <span class="misspell" id="pvje29" suggestions="">Spacewalk</span>. Предназначен для управления большим количеством серверов или рабочих станций под управлением <span class="misspell" id="pvje30" suggestions="">Fedora</span>. Например, если необходимо на 1000 рабочих станций установить новое ПО, добавить пользователя или провести любые другие изменения - то в этом случае <span class="misspell" id="pvje31" suggestions="">Spacewalk</span> то что нужно использовать. Достаточно интересное решение, призвано упростить миграцию на <span class="misspell" id="pvje32" suggestions="">Linux</span> в корпоративном секторе.<br /><br />- <span class="misspell" id="pvje33" suggestions="">State</span> <span class="misspell" id="pvje34" suggestions="">of</span> <span class="misspell" id="pvje35" suggestions="">RPM</span> Откровенно скучная презентация. Сначала 20 минут рассказывали о истории <span class="misspell" id="pvje36" suggestions="">rpm</span>, упоминая даже о минорных версиях, потом рассказывали что будет с ним дальше (практически никаких изменений, исправление ошибок). Сложилось впечатление, что вся презентация была необходима ради одного слайда - <span class="misspell" id="pvje37" suggestions="">RPM</span> <span class="misspell" id="pvje38" suggestions="">not</span> <span class="misspell" id="pvje39" suggestions="">dead</span>. -) С середины я ушел и перешел на <span class="misspell" id="pvje40" suggestions="">Fedora</span> <span class="misspell" id="pvje41" suggestions="">Ar</span>.<br /><br />- <span class="misspell" id="pvje42" suggestions="">Fedora</span> <span class="misspell" id="pvje43" suggestions="">Art</span><br /><span class="misspell" id="pvje44" suggestions="Вообще,Во общем,Во-общем">Вообщем</span>-то ничего интересного я здесь тоже не увидел. <a href="http://farm4.static.flickr.com/3085/2835751382_c2b879defa_m.jpg" imageanchor="1" style="clear: right; float: right; margin-bottom: 1em; margin-left: 1em;"><img src="http://farm4.static.flickr.com/3085/2835751382_c2b879defa_m.jpg" border="0" /></a></div><div style="font-family: verdana;">Это была неформальная секция: на травке под деревом собралось пять человек интересующихся развитием интерфейса <span class="misspell" id="pvje45" suggestions="">Fedora</span> и прорисовкой обоев на рабочий стол с её логотипами. У них нашлась бутылка <span class="misspell" id="pvje46" suggestions="бурака,бурлака,бурсака,бурчала,бурча ка">бурчака</span> (молодого чешского вина). Итог - приятно провели время. :)</div><br /><br /><br /><div style="font-family: verdana;">После краткого курса чешского языка, мы переместились в паб неподалеку и началась не менее интересная неофициальная часть мероприятия. <br /><br />Ссылки<br /><br />1. <span class="misspell" id="pvje47" suggestions="">Base</span> WIKI - <a href="http://fedoraproject.org/wiki/FUDCon/FUDConPrague2008" id="jvaz" title="http://fedoraproject.org/wiki/FUDCon/FUDConPrague2008">http://fedoraproject.org/wiki/FUDCon/FUDConPrague2008</a> <br />2. Фото - <a href="http://www.flickr.com/groups/fudconbrno/" id="cmh9" title="http://www.flickr.com/groups/fudconbrno/">http://www.flickr.com/groups/fudconbrno/</a> <br /><br /><br />На страничке wiki достаточно много ссылок на отчеты и доклады. </div><div style="font-family: verdana;"></div><div style="font-family: verdana;"></div><div style="font-family: verdana;"></div>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com4tag:blogger.com,1999:blog-2333148333771997943.post-8680302808254795562008-07-15T20:28:00.000+02:002008-07-15T20:42:52.174+02:00Запасной VPN (ipsec failover high availability stateless)<div style="font-family: verdana;"><b id="f:0o0">0. Вводная</b></div>
Думаю не нужно объяснять зачем это нужно и где применяется. Всё просто - если для вас потеря vpn соединения критична и работа останавливается, возможно стоит подумать о конфигурировании некоторой избыточности. Основных подходов в данном случае два:<br />
<br />
- отказоустойчивый узел из двух или более устройств при этом активным является только одно устройство и данные о сессиях протокола более высокого уровня не синхронизируются между устройствами (stateless);<br />
- отказоустойчивый узел из двух или более устройств, активно только одно, данные о сессиях синхронизированы (stateful).<br />
<br />
Как очевидно основное отличие между двумя подходами в том, что при переключении с основного на резервное устройство и наборот текущие сессии ipsec сбрасываются. Конечно ситуация отрабатывается протоколами инкапсулироваными в ipsec пакеты, как tcp/udp, и скорее всего произойдет только некоторое "замораживание" соединения. Из опыта могу сказать, что задержка обычно немногим больше задержки возникающей при создании нового туннеля. Для большинства приложений этого достаточно.<br />
<br />
<b id="xl:.0" style="font-family: verdana;">1. Схема</b><br />
<br />
<div id="i:4e" style="padding: 1em 0pt; text-align: center;"></div>
<div id="f9af" style="padding: 1em 0pt; text-align: center;"><img id="tqoj" src="http://docs.google.com/File?id=d2622hg_57vtvpngn_b" style="width: 549px; height: 576px;" /></div>
<br />
<br />
<br />
<br />
<span style="font-family: verdana;">Шифрации подлежит трафик </span><br />
<span style="font-family: verdana;">10.10.200.0/24 <-> 10.10.1.0/24</span><br />
<span style="font-family: verdana;">10.10.100.0/24 <-> 10.10.1.0/24</span><br />
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"><b id="f:0o4" style="font-family: verdana;">2. Конфигурация</b></div>
<br />
<span style="font-family: verdana;">Удивительно, но процесс настройки оказался достаточно простым. Основой всего является протокол </span><a href="http://techoover.blogspot.com/2007/08/hsrp.html" id="t89y" style="font-family: verdana;" title="HSRP">HSRP</a><span style="font-family: verdana;"> (если словосочетание незнакомо, крайне рекомендую пройтись по ссылке) и ipsec собственно. Я не буду вдаваться в нюансы настройки HSRP или ipsec, для этого были написаны специальные заметки - </span><a href="http://techoover.blogspot.com/2007/08/hsrp.html" id="q1e9" style="font-family: verdana;" title="HSRP">HSRP</a><span style="font-family: verdana;">, </span><a href="http://techoover.blogspot.com/2008/04/lan-2-lan-vpn-pre-shared.html" id="eq33" style="font-family: verdana;" title="static ipsec">static ipsec</a><span style="font-family: verdana;"> . :) </span><br />
<br />
<span style="font-family: verdana;">По сути изменяется всего две команды. </span><br />
<span style="font-family: verdana;">В первую очередь необходимо добавить имя в конфигурацию hsrp</span><br />
<br />
<span style="font-family: verdana;">//конфигурация hsrp, добавлено имя</span><br />
<span class="content" id="eclz1" style="font-family: courier new,monospace;">vpn0(config-if)#</span><span class="content" id="eclz2" style="font-family: courier new,monospace;">standby version 2<br id="eclz3" /></span><span class="content" id="eclz4" style="font-family: courier new,monospace;">vpn0</span><span class="content" id="eclz5" style="font-family: courier new,monospace;">(config-if)#</span><span class="content" id="eclz6" style="font-family: courier new,monospace;">standby 100 ip 10.10.11.1<br id="eclz7" /></span><span class="content" id="eclz8" style="font-family: courier new,monospace;">vpn0</span><span class="content" id="eclz9" style="font-family: courier new,monospace;">(config-if)#</span><span class="content" id="eclz10" style="font-family: courier new,monospace;">standby 100 priority 150<br id="eclz11" /></span><span class="content" id="eclz12" style="font-family: courier new,monospace;">vpn0</span><span class="content" id="eclz13" style="font-family: courier new,monospace;">(config-if)#</span><span class="content" id="eclz14" style="font-family: courier new,monospace;">standby 100 preempt<br id="eclz15" /></span><span class="content" id="eclz16" style="font-family: courier new,monospace;">vpn0</span><span class="content" id="eclz17" style="font-family: courier new,monospace;">(config-if)#</span><span class="content" id="eclz18" style="font-family: verdana;"><span style="font-family: courier new,monospace;">standby 100 name vpn</span><br id="zqwg" /><br id="zqwg0" /><span style="font-family: verdana;">Вторая команда - при применении crypto map к интерфейсу указывается имя hsrp группы которая будет обеспечивать отказоустойчивость.</span><br id="tqz0" style="font-family: verdana;" /><span style="font-family: verdana;">//применение отказоустойчивого vpn</span><br id="tqz00" /></span><span class="content" id="ln8y" style="font-family: verdana;"><span style="font-family: courier new,monospace;">vpn0(config-if)#crypto map cr_outside redundancy vpn</span><br id="hefk" /><br id="hefk0" /><span style="font-family: verdana;">В качестве дополнения приведу полную конфигурацию.</span><br id="mxmw" /><b id="mxmw0" style="font-family: verdana;"><br id="bjbq" />vpn0</b><br id="mxmw1" style="font-family: verdana;" /><span style="font-family: verdana;">Базовая конфигурация</span></span><br />
<br />
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"><span class="content" id="ln8y" style="font-family: courier new,monospace;">crypto isakmp policy 200<br id="bjbq2" /> encr aes<br id="bjbq3" /> authentication pre-share<br id="bjbq4" /> group 2<br id="bjbq5" />crypto isakmp key MyKey address 10.10.10.10<br id="bjbq6" />!<br id="bjbq8" />crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac<br id="bjbq9" />!<br id="bjbq10" />crypto map cr_outside 200 ipsec-isakmp<br id="bjbq11" /> set peer 10.10.10.10<br id="bjbq12" /> set transform-set ts-aes-sha<br id="bjbq13" /> match address 120<br id="bjbq14" />!<br id="bjbq18" />interface FastEthernet0/0<br id="bjbq19" /> ip address 10.10.11.10 255.255.255.0<br id="bjbq20" /> duplex auto<br id="bjbq21" /> speed auto<br id="bjbq22" /> standby version 2<br id="bjbq23" /> standby 100 ip 10.10.11.1<br id="bjbq24" /> standby 100 priority 150<br id="bjbq25" /> standby 100 preempt<br id="bjbq26" /> standby 100 name vpn<br id="bjbq27" /> crypto map cr_outside redundancy vpn<br id="bjbq28" />!<br id="bjbq29" />access-list 120 permit ip 10.10.200.0 0.0.0.255 10.10.1.0 0.0.0.255<br id="bjbq30" />access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.200.0 0.0.0.255<br id="bjbq31" />access-list 120 permit ip 10.10.100.0 0.0.0.255 10.10.1.0 0.0.0.255<br id="bjbq32" />access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.100.0 0.0.0.255</span><span class="content" id="ln8y" style="font-family: verdana;"><span style="font-family: verdana;"> </span></span></div>
<div style="font-family: verdana;"><span class="content" id="ln8y" style="font-family: verdana;"><span style="font-family: verdana;"><br />
</span></span></div>
<div style="font-family: verdana;"><span class="content" id="ln8y" style="font-family: verdana;"><span style="font-family: verdana;"><br />
</span></span></div>
<span class="content" id="ln8y" style="font-family: verdana;"><b id="bjbq35">vpn1</b><br id="bjbq36" />Совершенна идентична vpn0 за исключением адреса интерфейса и приоритета hsrp<br id="bjbq37" /><br id="j11n" style="font-family: courier new,monospace;" /><br id="j11n0" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto isakmp policy 200</span><br id="j11n1" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> encr aes</span><br id="j11n2" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> authentication pre-share</span><br id="j11n3" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> group 2</span><br id="j11n4" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto isakmp key MyKey address 10.10.10.10</span><br id="j11n6" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">!</span><br id="j11n7" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac</span><br id="j11n8" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">!</span><br id="j11n9" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto map cr_outside 200 ipsec-isakmp</span><br id="j11n10" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> set peer 10.10.10.10</span><br id="j11n11" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> set transform-set ts-aes-sha</span><br id="j11n12" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> match address 120</span><br id="j11n13" style="font-family: courier new,monospace;" /><br id="j11n14" style="font-family: courier new,monospace;" /><br id="j11n15" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">interface FastEthernet0/0</span><br id="j11n16" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> ip address 10.10.11.20 255.255.255.0</span><br id="j11n17" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> duplex auto</span><br id="j11n18" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> speed auto</span><br id="j11n19" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> standby version 2</span><br id="j11n20" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> standby 100 ip 10.10.11.1</span><br id="j11n21" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> standby 100 priority 101</span><br id="j11n22" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> standby 100 preempt</span><br id="j11n23" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> standby 100 name vpn</span><br id="j11n24" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> crypto map cr_outside redundancy vpn</span><br id="j11n25" style="font-family: courier new,monospace;" /><br id="j11n26" style="font-family: courier new,monospace;" /><br id="j11n27" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.200.0 0.0.0.255 10.10.1.0 0.0.0.255</span><br id="j11n28" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.200.0 0.0.0.255</span><br id="j11n29" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.100.0 0.0.0.255 10.10.1.0 0.0.0.255</span><br id="j11n30" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.100.0 0.0.0.255</span></span><br />
<br />
<span class="content" id="ln8y" style="font-family: verdana;"><b id="kpw.1">client1</b><br id="kpw.2" />Простейшее из возможного<br id="tu:w" /><br id="tu:w0" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto isakmp policy 200</span><br id="tu:w1" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> encr aes</span><br id="tu:w2" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> authentication pre-share</span><br id="tu:w3" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> group 2</span><br id="tu:w4" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto isakmp key MyKey address 10.10.11.1</span><br id="tu:w5" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">!</span><br id="tu:w6" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac</span><br id="tu:w7" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">!</span><br id="tu:w8" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">crypto map cr_outside 200 ipsec-isakmp</span><br id="tu:w9" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> set peer 10.10.11.1</span><br id="tu:w10" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> set transform-set ts-aes-sha</span><br id="tu:w11" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> match address 120</span><br id="tu:w12" style="font-family: courier new,monospace;" /><br id="tu:w13" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">interface FastEthernet0/0</span><br id="tu:w14" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> ip address 10.10.10.10 255.255.255.0</span><br id="tu:w15" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> duplex auto</span><br id="tu:w16" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> speed auto</span><br id="tu:w17" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;"> crypto map cr_outside</span><br id="tu:w18" style="font-family: courier new,monospace;" /><br id="tu:w19" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.200.0 0.0.0.255 10.10.1.0 0.0.0.255</span><br id="tu:w20" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.200.0 0.0.0.255</span><br id="tu:w21" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.100.0 0.0.0.255 10.10.1.0 0.0.0.255</span><br id="tu:w22" style="font-family: courier new,monospace;" /><span style="font-family: courier new,monospace;">access-list 120 permit ip 10.10.1.0 0.0.0.255 10.10.100.0 0.0.0.255</span><br id="tu:w23" /><br id="ne4m0" /></span><br />
<b id="soxr" style="font-family: verdana;">3. Проверка</b><br id="soxr0" style="font-family: verdana;" /><span style="font-family: verdana;">Проверялось всё это хозяйство путем установки telnet сессии с маршрутизатора srv на client1 и принудительной остановкой интерфейса </span><span class="content" id="f72i" style="font-family: verdana;">FastEthernet0/0 на vpn0. Показательно, что сессия telnet при этом не разорвалась хотя "замерла" на примерно 10-15 секунд. <br id="kt1s" /><br id="kt1s0" />Также необходимо обратить внимание на правильную маршрутизацию внутри vpn рутеров, в моём случае это сделано с помощью простейшей конфигурации ospf, подобной описанной в <a href="http://techoover.blogspot.com/2008/05/vpn-ospf-over-gre-ipsec.html">одной из прошлых заметок</a>, однако можно использовать тот же hsrp с опцией трекинга outside интерфейса.<br id="i15o1" /></span><br id="eclz19" /><b id="soxr"></b><span class="content" id="ln8y" style="font-family: verdana;"><span style="font-family: courier new,monospace;"></span></span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com7tag:blogger.com,1999:blog-2333148333771997943.post-77872987163686141802008-07-03T20:21:00.004+02:002008-07-03T20:32:16.650+02:00Защищая себя (zone-based firewall self)<div style="font-family: verdana;"><font size="2">В <a href="http://techoover.blogspot.com/2008/06/zone-based-firewall.html">предыдущей заметке</a> была рассмотрена функциональность под названием Zone-Based firewall, которую компания Cisco позиционирует как замену достаточно широко используемой CBAC. <br id="azr3" />Были показаны основные команды конфигурирования и типичный сценарий применения. <br id="c09t" />К сожалению я совершенно забыл о такой необходимости как защита самого маршрутизатора.<br id="deb5" />Сегодня поговорим об этом.<br id="deb50" /><br id="deb51" />Для управлением трафиком предназначенным непосредственно маршрутизатору или трафику создаваемому им самим, в понимании ZBF предназначена специальная зона - self. <br id="y3.b" />Соответственно, да контроля, например, доступа к маршрутизатору из интернета, необходимо создать цепочку (zone-pair) internet -> self и уже в контексте её политики задавать необходимы разрешения..<br id="s5ki" /><br id="oton" />По умолчанию зона уже создана. Одно из основных отличий от "нормальных" зон - поведение по-умолчанию, трафик к/от self зоны разрешен.<br id="fc6e" />Также отмечу, self зона достаточно обрезана в функциональности инспекция возможна только для протоколов tcp, udp, icmp, H.323<br id="d_e90" /><br id="lhyl" />Опять таки, простейший пример конфигурации:<br id="t43u" />- из интернета запретить всё кроме icmp;<br id="t43u0" />- из интранета, дополнительно к icmp разрешить ssh и https для задач управления.<br id="lhyl0" /><br id="hu:x0" />Значительно облегчит задачу существующий по-умолчанию класс - class-default выделяющий весь трафик, наподобие permit any any acl.<br id="s5ki2" /><br id="oton1" />Логичным было бы создать примерно следующую политику:</font></div>
<div style="font-family: verdana;"><font size="2"><br id="l23r" /></font></div>
<div style="font-family: courier new,monospace;"><font size="2"> R1(config)#class-map type inspect match-all cm_manage<br id="obfb22" /> R1(config-cmap)#match protocol icmp<br id="oi-x" /> R1(config-cmap)#match protocol ssh<br id="oi-x0" /> R1(config-cmap)#match protocol https<br id="oi-x1" /><br id="xqbq" />R1(config)#policy-map type inspect in-self<br id="obfb25" /> R1(config-pmap)#class type inspect cm_manage<br id="obfb26" /> R1(config-pmap-c)#inspect <br id="obfb27" /> R1(config-pmap)#class class-default<br id="obfb28" /> R1(config-pmap-c)#drop <br id="obfb29" /><br id="xqbq0" />R1(config)#zone-pair security in-self source inside destination self<br id="obfb31" /> R1(config-sec-zone-pair)#service-policy type inspect in-self</font></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"></div>
<div style="font-family: verdana;"><font size="2"><span style="font-family: verdana;">Но не выходит. :)</span><br id="hre:0" style="font-family: verdana;" /><span style="font-family: verdana;">Здесь мы сталкиваемся с ограничением на глубину инспекции в self зонах. Как сказано выше, максимальный уровень инспекции в данном случае - L3/L4. При применении получаем сообщение вида:</span><br id="obfb34" style="font-family: verdana;" /></font></div>
<br />
<font size="2" style="font-family: courier new,monospace;">R1(config-sec-zone-pair)#service-policy type inspect out-self <br id="obfb42" />%Protocol https configured in class-map cm_manage cannot be configured for the self zone. Please remove the protocol and retry<br id="obfb43" /><br id="obfb44" />Inspect service-policy attachment failed</font><br />
<div style="font-family: verdana;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"><font size="2"><span style="font-family: verdana;">Заставить злобную железяку всё таки разрешать соединения по протоколам ssh и https можно следующим образом:</span><br id="ctyz" /><br id="obfb59" /> R1(config)#access-list 198 permit tcp any any eq 22<br id="obfb60" /> R1(config)#access-list 198 permit tcp any any eq 443<br id="obfb61" /><br id="obfb62" /> R1(config)#class-map type inspect match-any cm_manage<br id="obfb63" /> R1(config-cmap)#match protocol icmp<br id="obfb64" /> R1(config-cmap)#match access-group 198<br id="obfb65" /><br id="obfb66" /> R1(config)#policy-map type inspect in-self<br id="obfb67" /> R1(config-pmap)#class type inspect cm_manage<br id="obfb68" /> R1(config-pmap-c)#inspect<br id="obfb69" /> R1(config-pmap)#class class-default<br id="obfb70" /> R1(config-pmap-c)#drop<br id="obfb71" /><br id="obfb72" /> R1(config)#zone-pair security in-self source inside destination self<br id="obfb73" /> R1(config-sec-zone-pair)#service-policy type inspect in-self</font></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"></div>
<div style="font-family: courier new,monospace;"><font size="2"><span style="font-family: verdana;">Хочу обратить внимание, что реальной инспекции именно протоколов http и ssh не происходит, пакеты инспектируются до уровня tcp.</span></font></div>
<font size="2"><br />
</font><br />
<font size="2"><span style="font-family: verdana;">Замечу, то что описывается в данной заметке не является официально рекомендуемым способом обеспечивать безопасность самого устройства. Для этого предназначен - </span><a href="http://www.cisco.com/en/US/netsol/ns696/networking_solutions_solution.html" id="mw_6" style="font-family: verdana;" title="Network Foundation Protection">Network Foundation Protection</a><span style="font-family: verdana;">, который я надеюсь рассмотреть немного позже.</span></font><br />
<font size="2"><br />
</font><br />
<font size="2"><span style="font-family: verdana;"> Вот мы и познакомились с общими концепциями построение брандмауэров от Cisco. Хочется заметить, представленный метод конечно достаточно громоздок и если у вас всего два интерфейса между которыми необходимо настроить инспекцию, возможно классический CBAC в этом окажется удобнее, как минимум объем команд меньше. </span></font><br />
<font size="2"><span style="font-family: verdana;">Если же конфигурация усложняется, или же имеет свойство изменяться, Zone-Based Firewall именно то решение которое необходимо. Конфигурация гораздо легче читается и поддерживать, расширять, её проще.</span></font>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com2tag:blogger.com,1999:blog-2333148333771997943.post-86937699696401654502008-06-30T19:28:00.004+02:002008-07-03T20:20:40.223+02:00Мы будем жить теперь по новому! (zone-based firewall)<b style="font-family: verdana;" id="a34.">0. Ссылки</b><br /><a style="font-family: verdana;" title="http://www.cisco.com/en/US/products/sw/secursw/ps1018/products_tech_note09186a00808bc994.shtml" href="http://www.cisco.com/en/US/products/sw/secursw/ps1018/products_tech_note09186a00808bc994.shtml" id="j8h0">http://www.cisco.com/en/US/products/sw/secursw/ps1018/products_tech_note09186a00808bc994.shtml</a><br /><a style="font-family: verdana;" title="http://www.cisco.com/en/US/products/sw/secursw/ps1018/products_configuration_example09186a00809492a4.shtml" href="http://www.cisco.com/en/US/products/sw/secursw/ps1018/products_configuration_example09186a00809492a4.shtml" id="cfyr">http://www.cisco.com/en/US/products/sw/secursw/ps1018/products_configuration_example09186a00809492a4.shtml</a><br /><br /><span style="font-family:verdana;">Начиная с версии IOS </span><span id="pe.-" class="content"><span style="font-family:verdana;">12.4(6)T в рутерах Cisco появилась функциональность называемая Zone-Based Firewall, именно она призвана заменить собой классический firewall (CBAC). В чем отличие, какие основные возможности я и попробую ответить в этой заметке.</span><br /><br /></span><b style="font-family: verdana;" id="a34.0">1. Немного теории</b><br /><br /><span style="font-family:verdana;"> Основное отличие модели ZBF от CBAC в том, что первый, как очевидно из названия, оперирует на уровне зон, второй на уровне интерфейсов. Второе значительное улучшение -позможность применения политики в определенному трафику. Дело в то том, что в классическом CBAC невозможно применять к различные политики к различным группам трафика в пределах одного интерфейса. К примеру, если за внутренним интерфейсом находиться не одна сеть, а несколько, то в случае CBAC применять для них различные политики инспектирования</span><br /><span style="font-family:verdana;"> не представляется возможным. С ZBF же это достаточно тривиальная задача.</span><br /><span style="font-family:verdana;"> Синтаксис конфигурации, называемый Cisco Policy Language (CPL) достаточно похож на </span><a style="font-family: verdana;" title="MPF в устройствах ASA" href="http://techoover.blogspot.com/2008/03/modular-policy.html" id="kgzd">MPF в устройствах ASA</a><span style="font-family:verdana;">.</span><br /><br /><span style="font-family:verdana;"> Несколько фактов облегчающих понимание "как это работает".</span><br /><span style="font-family:verdana;">- Зона может состоять из интерфейса или нескольких интерфейсов. </span><br /><span style="font-family:verdana;">- Политика применяется к направлению между зонами. Т.е. inside-outside и outside-inside это две разных политики.</span><br /><span style="font-family:verdana;">- Важное изменение, политика по умолчанию - deny any any.</span><br /><span style="font-family:verdana;">- Можно использовать CBAC и ZBF одновременно, но на разных интерфейсах. </span><br /><span style="font-family:verdana;">- Если два интерфейса не принадлежат ни к одной зоне - трафик разрешен. </span><br /><span style="font-family:verdana;">- Если один из интерфейсов принадлежит к какой-либо зоне, другой нет - трафик запрещен. </span><br /><span style="font-family:verdana;">- Если два интерфейса принадлежат к разным зонам - трафик запрещен до явного разрешения.</span><br /><span style="font-family:verdana;">- Трафик в пределах одной зоны не подвергается инспектированию.</span><br /><br /><b style="font-family: verdana;" id="glpo"> Элементы конфигурации:</b><br /><span style="font-family:verdana;">class-map - служит для выделения конкретного трафика из потока, например с помощью acl или выделение по протоколам. Может быть вложенным, т.е. можно выделить трафик с source 192.168.0.0/24 по протоколу http.</span><br /><span style="font-family:verdana;">policy-map - применение политики, Существует всего три возможных действия - drop, pass, inspect.</span><br /><br /><b style="font-family: verdana;" id="glpo0"><br />Стенд</b><br /><br /><span style="font-family:verdana;"> Конфигурация сети следующая:</span><br /><span style="font-family:verdana;"> insideA - 10.10.11.1/24</span><br /><span style="font-family:verdana;"> insideB - 10.10.12.1/24</span><br /><span style="font-family:verdana;"> outside - 10.10.10.1/24</span><br /><span style="font-family:verdana;"> dmzA - 10.10.20.1/24</span><br /><br /><b style="font-family: verdana;" id="up9e1">2. Базовая модель</b><br /><br /><span style="font-family:verdana;"> Начнем с простейшей конфигурации. Забудем пока о наличии ДМЗ и решим самую типичную задачу - предоставление доступа в интернет с инспектированием трафика. Все, остальные конфигурации по сути своей будут строиться на этой как на базовой. Здесь же удобно рассмотреть основные командыконфигурирования, комментарии по тексту. </span><br /><br /><span style="font-family:verdana;"> // определим зоны безопасности, в данном случае только две интернет и интранет</span><br /><span style="font-family:verdana;"> // никакого применения политик пока нет - просто имена.</span><br /><span style="font-family:courier new;"> R1(config)#zone security outside</span><br /><span style="font-family:courier new;"> R1(config-sec-zone)#description Big and Scary internet</span><br /><br /><span style="font-family:courier new;"> R1(config)#zone security inside</span><br /><span style="font-family:courier new;"> R1(config-sec-zone)# description Shy and modest intranet</span><br /><br /><span style="font-family:verdana;"> // назначим интерфейсы в зоны, необходимо учитывать,<br />// что сразу после</span><span style="font-family:verdana;"> этого шага любой трафик между зонами будет запрещен</span><br /><span style="font-family:verdana;"> // ouside</span><br /><span style="font-family:courier new;"> R1(config)#interface FastEthernet0/0</span><br /><span style="font-family:courier new;"> R1(config-if)#zone-member security outside</span><br /><span style="font-family:courier new;"> R1(config-if)#description ouside</span><br /><br /><span style="font-family:verdana;"> //inside, растянутый на два интерфейса</span><br /><span style="font-family:courier new;"> R1(config)#interface FastEthernet0/1.800</span><br /><span style="font-family:courier new;"> R1(config-subif)#description insideB</span><br /><span style="font-family:courier new;"> R1(config-subif)#zone-member security inside</span><br /><br /><span style="font-family:courier new;"> R1(config)#interface FastEthernet0/1.900</span><br /><span style="font-family:courier new;"> R1(config-subif)#description insideA</span><br /><span style="font-family:courier new;"> R1(config-subif)#zone-member security inside</span><br /><br /><span style="font-family:verdana;"> Ну вот и отлично, всё что можно запретили - безопасность на уровне. :)</span><br /><span style="font-family:verdana;"> Теперь займемся разрешением.<br /><br />// определение протоколов по которым пользователям разрешен в интернет,</span><br /><span style="font-family:verdana;">// например, http, smtp, dns</span><br /><span style="font-family:verdana;"> // class-map может быть двух типов - с логикой AND и с логикой OR. В</span><br /><span style="font-family:verdana;">// данном случае OR - любой из трех протоколов</span><br /><span style="font-family:courier new;"> R1(config)#class-map type inspect match-any cm_http-dns-smtp</span><br /><span style="font-family:courier new;"> R1(config-cmap)#match protocol http</span><br /><span style="font-family:courier new;"> R1(config-cmap)#match protocol smtp</span><br /><span style="font-family:courier new;"> R1(config-cmap)#match protocol dns</span><br /><br /><span style="font-family:verdana;"> // это пример class-map с логикой AND. Данная карта выбирает</span><br /><span style="font-family:verdana;">// фильтрует трафик с source 10.10.12.0/24 и любым из протоколов http, dns, smtp</span><br /><span style="font-family:courier new;"> R1(config)#access-list 120 permit ip 10.10.12.0 0.0.0.255 any</span><br /><span style="font-family:courier new;"> R1(config)#class-map type inspect match-all cm_insideB_web</span><br /><span style="font-family:courier new;"> R1(config-cmap)#match class-map cm_http-dns-smtp</span><br /><span style="font-family:courier new;"> R1(config-cmap)#match access-group 120</span><br /><br /><span style="font-family:verdana;"> //создание политики</span><br /><span style="font-family:courier new;"> R1(config)#policy-map type inspect in-out</span><br /><span style="font-family:courier new;"> R1(config-pmap)#class type inspect cm_insideB_web</span><br /><span style="font-family:courier new;"> R1(config-pmap-c)#inspect</span><br /><br /><span style="font-family:verdana;"> // Момент истины, создадим цепочку inside -> outside и наделим</span><br /><span style="font-family:verdana;">// интернетом счастливых пользователей insideB</span><br /><span style="font-family:courier new;"> R1(config)#zone-pair security inside-outside source inside destination outside</span><br /><span style="font-family:courier new;"> R1(config-sec-zone-pair)#service-policy type inspect in-out</span><br /><div id="1fgl" class="ArwC7c ckChnd"><br /><span style="font-family:verdana;"> Еще раз хочу обратить внимание, при всей этой конфигурации трафик в</span><br /><span style="font-family:verdana;"> пределах зоны, т.е. между интерфейсами insideA и insideB разрешен.</span></div><br /><b style="font-family: verdana;" id="k634">3. Усложненная конфигурация.</b><br /><br /><span style="font-family:verdana;">Усложняется она использованием ДМЗ, все остальные параметры остаются теми же.</span><br /><br /><span style="font-family:verdana;"> //Определим новую зону и назначим её интерфейсу</span><br /><span style="font-family:courier new;">R1(config)#zone security dmz</span><br /><span style="font-family:courier new;"> R1(config-sec-zone)#description Controlled DMZ</span><br /><div id="1fgl" class="ArwC7c ckChnd"><span style="font-family:courier new;"> R1(config)#int fa0/1.700</span><br /><span style="font-family:courier new;"> R1(config-subif)#zone-member security dmz</span><br /><br /><br /><span style="font-family:verdana;"> //выделим сервер или группу подлежащую публикации</span><br /><span style="font-family:courier new;"> R1(config)#access-list 199 remark Publishing web server</span><br /><span style="font-family:courier new;"> R1(config)#access-list 199 permit ip any host 10.10.20.2</span><br /><br /><br /><span style="font-family:verdana;"> //определим по каким протоколам серверы будет виден снаружи</span><br /><span style="font-family:courier new;"> R1(config)#class-map type inspect match-all pub-web</span><br /><span style="font-family:courier new;"> R1(config-cmap)#match access-group 199</span><br /><span style="font-family:courier new;"> R1(config-cmap)#match protocol http</span><br /><br /><br /><span style="font-family:verdana;"> //создадим политику разрешающую доступ</span><br /><span style="font-family:courier new;"> R1(config)#policy-map type inspect www-dmz</span><br /><span style="font-family:courier new;"> R1(config-pmap)#class type inspect pub-web</span><br /><span style="font-family:courier new;"> R1(config-pmap-c)#inspect</span><br /><br /><span style="font-family:verdana;"> //создадим цепочку outside -> dmz</span><br /><span style="font-family:courier new;"> R1(config)#zone-pair security out-dmz source outside destination dmz</span><br /><br /><span style="font-family:verdana;"> Теперь сервер 10.10.20.2 доступен в интернет по протоколу http, если</span><br /><span style="font-family:verdana;"> необходимо добавить еще один сервер достаточно просто изменить acl 199</span><br /></div>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com6tag:blogger.com,1999:blog-2333148333771997943.post-65367291952896546602008-05-04T19:39:00.008+02:002008-05-14T06:38:20.501+02:00Динамический рутинг поверх vpn (ospf over gre ipsec)<span id="froh2" style="font-weight: bold;font-family:verdana;" >0. Зачем</span><br /><span style="font-family:verdana;">После прочтения заметки о конфигурации <a href="http://techoover.blogspot.com/2008/05/lan-2-lan-ipsec-vpn-gre.html">gre ipsec</a> может остаться некоторое недопонимание того зачем, собственно, так усложнять достаточно простую первоначальную конфигурацию.</span><br /><span style="font-family:verdana;">Данная запись призвана ответить на эти вопросы.</span><br /><span style="font-family:verdana;">Тем читателям, которые попали сюда по поиску из google или еще каким путем я настоятельно рекомендую прочитать предыдущую часть о настройке <a href="http://techoover.blogspot.com/2008/05/lan-2-lan-ipsec-vpn-gre.html">gre ipsec</a>, а уже потом возвращаться сюда.</span><br /><span style="font-family:verdana;">Итак речь идёт о запуске динамических протоколов маршрутизации, в данном случае ospf, поверх существующего vpn соединения.</span><br /><span style="font-family:verdana;">В случае статической конфигурации, необходимо жесткое указание сетей подлежащих шифрованию. Для этого в конфигурации без gre используются crypto acl.</span><br /><span style="font-family:verdana;">Если же конфигурация сетей меняется необходимо менять и конфигурацию. Представим довольно жизненную ситуацию - головной офис и определённое количество филиалов.</span><br /><span style="font-family:verdana;">С случае появления в головном отделении новых ip сетей, необходимо произвести перенастройку всех рутеров, как в центрального так и филиальных. При большом количестве филиалов это может быть непосильной задачей.</span><br /><br /><br /><span id="pkyl0" style="font-weight: bold;font-family:verdana;" >1. Описание стенда</span><br /><span style="font-family:verdana;">Настройка продолжается ровно с того места на котором закончилась статья о конфигурировании gre ipsec. Итак у нас есть следующая конфигурации IP сетей.</span><br /><br /><span style="font-family:verdana;">Внутренняя сеть А: 192.168.1.0/24</span><br /><span style="font-family:verdana;">Внутренняя сеть Б: 192.168.2.0/24</span><br /><br /><span style="font-family:verdana;">Внешний интерфейс А: 10.10.11.2/24</span><br /><span style="font-family:verdana;">Внешний интерфейс Б: 10.10.10.2/24</span><br /><br /><span style="font-family:verdana;">Допустим, что А это филиал, а Б головное отделение. В случае <a href="http://techoover.blogspot.com/2008/04/lan-2-lan-vpn-pre-shared.html">статического ipsec туннеля</a> указание какой трафик подлежит шифрации с помощью crypto acl.</span><br /><span style="font-family:verdana;">// routerA</span><br /><span id="k1t6" style="font-family:Courier New;">RouterA(config)# access-list 120 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255</span><br /><br /><span style="font-family:verdana;">В случае <a href="http://techoover.blogspot.com/2008/05/lan-2-lan-ipsec-vpn-gre.html">gre ipsec</a> необходимо статическим маршрутом указать куда напрявлять трафик для определённой сети.</span><br /><span id="p81o0" style="font-family:Courier New;">RouterA(config)# ip route 192.168.2.0 255.255.255.0 Tunnel10</span><br /><span style="font-family:verdana;">После этого трафик попадает в туннель, инкапсулируется в gre, а crypto acl настроеные между пирами пропускали его через процедуру шифрации.<br /><br /><span style="font-family:verdana;">Теперь представим, что в центральном офисе (сеть Б) появилась новая сеть, например 10.200.1.0/24, для обеспечения её видимости в филиалах, необходимо либо добавить по строчке вcrypto acl (static ipsec) либо добавить маршрут (gre ipsec ), что конечно не составляет проблемы для десятка устройств. Но мы же помним, что организация у нас большая и туннелей условно бесконечное количество. :)</span><br /></span><br /><br /><span id="iaf00" style="font-weight: bold;font-family:verdana;" >2. Конфигурация<br /></span><span id="iaf00" style="font-family:verdana;">Простейшая конфигурация ospf достаточно проста и не вызывает особых проблем. Я не буду рассказывать о принципах работы, алгоритме или прочих ньансах работы этого протокола. В сети достаточно много информации по этой теме. Цель данной заметки показать практическое применение и не дать себе забыть эту простую но в то же время крайне эффективную конфигурацию. :)<br />Описание настройки.<br />- число после слова ospf обозначает просто номер процесса ospf на данном устройстве, нет смысла стремиться к его идентичности<br />- логирование изменений<br />- ключевая строка, описание сети которые будут анонсироваться от данного рутера. О том что такое </span><span id="iaf00" style="font-family:verdana;">area можно говорить долго, но не сейчас. Обратите внимание, используется не маска сети, а wildcard, как в acl.</span><br /><span id="iaf00" style="font-family:verdana;"><br /></span><span id="iaf00"><br /><span style="font-family:verdana;">//Настройка ospf. RouterA</span><br /></span><span id="k1t6" style="font-family:courier new;">RouterA(config)# </span><span id="iaf00" style="font-family:courier new;">router ospf 100<br /></span><span id="k1t6" style="font-family:courier new;">RouterA(config-router)# </span><span id="iaf00" style="font-family:courier new;">log-adjacency-changes<br /></span><span id="k1t6" style="font-family:courier new;">RouterA(config-router)# </span><span id="iaf00"><span style="font-family:courier new;">network 192.168.1.0 0.0.0.255 area 10</span><br /><br /><span style="font-family:verdana;">Практически анологична настройка ospf на рутере Б, исключение составляет дополнительная сеть. </span><br /><br /></span><span id="iaf00"><span style="font-family:verdana;">//Настройка ospf. RouterB</span><br /></span><span id="k1t6" style="font-family:courier new;">RouterB(config)# </span><span id="iaf00" style="font-family:courier new;">router ospf 100<br /></span><span id="k1t6" style="font-family:courier new;">RouterB(config-router)# </span><span id="iaf00" style="font-family:courier new;"></span><span id="iaf00" style="font-family:courier new;">log-adjacency-changes<br /></span><span id="k1t6" style="font-family:courier new;">RouterB(config-router)#</span><span id="iaf00" style="font-family:courier new;"> network 10.150.1.0 0.0.0.255 area 10<br /></span><span id="k1t6" style="font-family:courier new;">RouterB(config-router)#</span><span id="iaf00"><span style="font-family:courier new;"> network 192.168.2.0 0.0.0.255 area 10</span><br /><br /></span><span id="iaf00" style="font-family:verdana;">В принципе в документации сказано о том, что для указания процессу ospf работать на конкретном интерфейсе необходимо указать сеть относящуюся к данному интерфейсу в конфигурации network.<br />Т.е. в данном случае сети </span><span style="font-family:verdana;">10.10.11.0/24 и 10.10.10.0/24 также должны быть указаны. Если у вас версия IOS менее чем 12.4 так и придется сделать. Я же сделаю немного по-другому.</span><br /><span id="iaf00" style="font-family:verdana;">//Настройка ospf. RouterA<br /></span><span id="k1t6" style="font-family:courier new;">RouterA(config)# </span><span id="p81o0" style=";font-family:courier new;font-size:85%;" ><span id="k1t6">interface Tunnel10</span></span><br /><span id="k1t6" style="font-family:Courier New;"><span style="font-family:courier new;">RouterA(config)# ip ospf 100 area 10</span><br /><br /><span id="uayj2" style="font-family:verdana;">Это просто указание процессу работать на данном интерфейсе. Об этом трюке я узнал от простого словацкого парня <a title="Ивана" href="http://blog.ioshints.info/2007/07/network-statements-are-no-longer-needed.html" id="wb:r">Ивана</a>, чей <a title="блог" href="http://blog.ioshints.info/" id="gchu">блог</a> я с удовольствием читаю. </span><br /></span><span style="font-family:verdana;">После настройки ospf указание статического маршрута более не нужно. Т.е. для рутера А.</span><br /><span style="font-family:verdana;">//удаление статического маршрута</span><br /><span style="font-size:100%;"><span id="k1t6" style="font-family:Courier New;">RouterA(config)# no </span></span><span id="p81o0" style=";font-family:Courier New;font-size:85%;" ><span id="k1t6"><span style="font-size:100%;">ip route 192.168.2.0 255.255.255.0 Tunnel10</span><br /></span></span><br /><span id="iaf00"><span style="font-family:verdana;">Теперь можно взглянуть на таблицу маршрутизации во всей красе.</span><br /><span style="font-size:100%;"><br /><span id="tzkf2" style="font-family:courier new;">RouterA#sh ip route | beg Gateway</span><br /><span id="tzkf4" style="font-family:courier new;"></span><span id="tzkf5" style="font-family:courier new;">Gateway of last resort is 10.10.11.1 to network 0.0.0.0</span><br /><br /><span id="tzkf8" style="font-family:courier new;"> 10.0.0.0/8 is variably subnetted, 4 subnets, 2 masks</span><br /><span id="tzkf10" style="font-family:courier new;">C 10.10.11.0/24 is directly connected, FastEthernet1/0</span><br /><span id="tzkf12" style="font-family:courier new;"></span><span id="tzkf14" style="font-family:courier new;">O 10.150.1.0/24 [110/11122] via 10.10.10.2, 00:00:22, Tunnel10</span><br /><span id="tzkf16" style="font-family:courier new;"></span><span id="tzkf18" style="font-family:courier new;">C 192.168.1.0/24 is directly connected, FastEthernet0/1</span><br /><span id="tzkf20" style="font-family:courier new;">O 192.168.2.0/24 [110/11121] via 10.10.10.2, 00:00:22, Tunnel10</span><br /><span id="tzkf22" style="font-family:courier new;"></span><span id="tzkf24" style="font-family:courier new;"></span><span id="tzkf26" style="font-family:courier new;">S* 0.0.0.0/0 [1/0] via 10.10.11.1</span><br /><br /><span style="font-family:verdana;">Как видно, анонсы сетей прошли и рутер А видит маршруты в сети за рутером Б через ospf, что и было необходимо. </span><br /><span style="font-family:verdana;">Теперь при появлении в центральном отделении новых сетей, конфигурация филиалов не нуждается в изменениях. Всё что необходимо, добавить новую строчкуnetwork в конфигурацию ospf на рутере в центральном офисе. Филиалы узнают об этом практически мгновенно. :) </span></span></span><span style="font-size:100%;"><br /></span><span id="p81o0" style=";font-family:Courier New;font-size:85%;" ><span id="k1t6"><br /><span style="font-family: verdana;">upd 14.05.08, спасибо Vadim</span><br /></span></span><span style="font-family: verdana;">//Посмотрим на наших соседей.</span><br /><span style="font-family: courier new;">RouterA#show ip ospf neighbor</span><br /><br /><span style="font-family: courier new;">Neighbor ID Pri State Dead Time Address Interface</span><br /><span style="font-family: courier new;">192.168.2.1 0 FULL/ - 00:00:37 10.10.10.2 Tunnel10</span><br /><br /><span id="iaf00"><br /></span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com6tag:blogger.com,1999:blog-2333148333771997943.post-75428054621227267402008-05-04T17:52:00.009+02:002008-05-21T15:02:16.360+02:00Соединяя офисные пространства (lan-2-lan ipsec vpn gre)<span style=";font-family:verdana;font-size:100%;" id="t2_.0" ><b id="n8230">0. Вводная</b></span><span style="font-size:100%;"><br /><span style="font-family:verdana;">Продолжим разборки с различными технологиями vpn предоставляемыми рутерами cisco. Заметка будет больше практического характера. Ориентирована на тех, кто уже знаком с </span><a style="font-family: verdana;" title="общей теорией работы ipsec" href="http://techoover.blogspot.com/2007/09/ipsec.html" id="nfq8">общей теорией работы ipsec</a><span style="font-family:verdana;"> и </span><a style="font-family: verdana;" title="простейшими примерами постороения туннелей" href="http://techoover.blogspot.com/2008/04/lan-2-lan-vpn-pre-shared.html" id="sbpg">простейшими примерами построения туннелей</a><span style="font-family:verdana;">. Итак, сегодня в качестве примера рассмотрим построение всё такого-же статического туннеля. Отличие только в том, что в данном примере, все пакеты подлежащие шифрованию будут сначалаинкапсулироваться в gre туннель и только потом в ipsec . Зачем такая сложность может ответить любой кто сталкивался с необходимостью пропускать через туннель мультикаст пакеты, которые в свою очередь любят использовать современные протоколы динамической маршрутизации. Впрочем, обо всём по порядку.</span><br /><span style="font-family:verdana;">Адресация сети снова выглядит следующим образом.</span><br /><br /><span style="font-family:verdana;">Внутренняя сеть А: 192.168.1.0/24</span><br /><span style="font-family:verdana;">Внутренняя сеть Б: 192.168.2.0/24</span><br /><br /><span style="font-family:verdana;">Внешний интерфейс А: 10.10.11.2/24</span><br /><span style="font-family:verdana;">Внешний интерфейс Б: 10.10.10.2/24</span><br /><br /><span style="font-family:verdana;">Между внешними интерфейсами у меня находиться pix. В данном случае это не так важно, но он поможет сниффить проходящий траффик.</span><br /><br /></span><span style=";font-family:verdana;font-size:100%;" id="z7250" ><b id="n8231">1. Труба (она же туннель).</b></span><span style="font-size:100%;"><br /><span style="font-family:verdana;">Итак, необходимо установить туннель между внешними интерфейсами маршрутизаторов, в данном случае 10.10.11.2 и 10.10.10.2.</span><br /><span style="font-family:verdana;">Минимальные параметры настройки:</span><br /><span style="font-family:verdana;">- каждый туннель "привязывается" к конкретному физическому интерфейсу, в данном случае это FastEthernet 1/0.</span><br /><span style="font-family:verdana;">- поскольку это layer 3 соединения, необходима ip адресация. Для уменьшения путаницы с "лишними" адресами будем использовать адреса физических интерфейсов. </span><a style="font-family: verdana;" title="Ссылка" href="http://www.cisco.com/en/US/tech/tk648/tk362/technologies_tech_note09186a0080094e8d.shtml" id="p7e_">Ссылка</a><span style="font-family:verdana;">.</span><br /><span style="font-family:verdana;">- совершенно очевидно, что раз есть у туннеля начало, значит еть где-то и конец :) Указание второго пира, также обязательный параметр.</span><br /><span style="font-family:verdana;">В примере приведена конфигурация только одной стороны туннеля, очевидно другая сторона конфигурируется идентично за исключением адреса пира.</span><br /><br /><span style="font-family:verdana;">//пример конфигурации gre туннеля</span><br /></span><span id="p81o0" style=";font-family:Courier New;font-size:100%;" ><span id="k1t6">RouterA(config)# interface Tunnel10<br /></span>RouterA(config-if)# tunnel source FastEthernet1/0<br /></span><span id="p81o2" style=";font-family:Courier New;font-size:100%;" >RouterA(config-if)# tunnel destination </span><span style="font-size:100%;">10.10.10.2<br /></span><span id="p81o3" style=";font-family:Courier New;font-size:100%;" >RouterA(config-if)# ip unnumbered </span><span id="p81o0" style=";font-family:Courier New;font-size:100%;" >FastEthernet1/0</span><span style="font-size:100%;"><br /><br /></span><span style=";font-family:verdana;font-size:100%;" id="ngxc0" >Итак туннель поднят, но не совсем понятно для каких целей, поскольку по нему еще ничего не ходит. Развернем рутинг для сетей </span><span style=";font-family:verdana;font-size:100%;" >192.168.1.0/24 и 192.168.2.0/24, соответственно в сторону туннеля.<br />//рутинг в туннель<br /></span><span id="p81o0" style=";font-family:Courier New;font-size:100%;" ><span id="k1t6">RouterA(config)# ip route 192.168.2.0 255.255.255.0 Tunnel10<br /><br /><span id="v2zb2" style="font-family:Verdana;">Для рутера Б, нужно развернуть сеть </span></span></span><span style=";font-family:verdana;font-size:100%;" >192.168.1.0/24.</span><span id="p81o0" style=";font-family:Courier New;font-size:100%;" ><span id="k1t6"><br /></span></span><span style=";font-family:verdana;font-size:100%;" >Теперь внутренние сети находящиеся за рутерами видят друг друга.<br />//простейшая проверка - ping<br /></span><span id="w3e41" style=";font-family:Courier New;font-size:100%;" >RouterA#ping</span><span style="font-size:100%;"><br /></span><span id="w3e43" style=";font-family:Courier New;font-size:100%;" >Protocol [ip]:</span><span style="font-size:100%;"><br /></span><span id="w3e45" style=";font-family:Courier New;font-size:100%;" >Target IP address: 192.168.2.1</span><span style="font-size:100%;"><br /></span><span id="w3e47" style=";font-family:Courier New;font-size:100%;" >Repeat count [5]:</span><span style="font-size:100%;"><br /></span><span id="w3e49" style=";font-family:Courier New;font-size:100%;" >Datagram size [100]:</span><span style="font-size:100%;"><br /></span><span id="w3e411" style=";font-family:Courier New;font-size:100%;" >Timeout in seconds [2]:</span><span style="font-size:100%;"><br /></span><span id="w3e413" style=";font-family:Courier New;font-size:100%;" >Extended commands [n]: y</span><span style="font-size:100%;"><br /></span><span id="w3e415" style=";font-family:Courier New;font-size:100%;" >Source address or interface: 192.168.1.1</span><span style="font-size:100%;"><br /></span><span id="w3e417" style=";font-family:Courier New;font-size:100%;" >Type of service [0]:</span><span style="font-size:100%;"><br /></span><span id="w3e419" style=";font-family:Courier New;font-size:100%;" >Set DF bit in IP header? [no]:</span><span style="font-size:100%;"><br /></span><span id="w3e421" style=";font-family:Courier New;font-size:100%;" >Validate reply data? [no]:</span><span style="font-size:100%;"><br /></span><span id="w3e423" style=";font-family:Courier New;font-size:100%;" >Data pattern [0xABCD]:</span><span style="font-size:100%;"><br /></span><span id="w3e425" style=";font-family:Courier New;font-size:100%;" >Loose, Strict, Record, Timestamp, Verbose[none]:</span><span style="font-size:100%;"><br /></span><span id="w3e427" style=";font-family:Courier New;font-size:100%;" >Sweep range of sizes [n]:</span><span style="font-size:100%;"><br /></span><span id="w3e429" style=";font-family:Courier New;font-size:100%;" >Type escape sequence to abort.</span><span style="font-size:100%;"><br /></span><span id="w3e431" style=";font-family:Courier New;font-size:100%;" >Sending 5, 100-byte ICMP Echos to 192.168.2.1, timeout is 2 seconds:</span><span style="font-size:100%;"><br /></span><span id="w3e433" style=";font-family:Courier New;font-size:100%;" >Packet sent with a source address of 192.168.1.1</span><span style="font-size:100%;"><br /></span><span id="w3e435" style=";font-family:Courier New;font-size:100%;" >!!!!!</span><span style="font-size:100%;"><br /></span><span id="w3e437" style=";font-family:Courier New;font-size:100%;" >Success rate is 100 percent (5/5), round-trip min/avg/max = 32/61/104 ms</span><span style="font-size:100%;"><br /><br /><br /><span style="font-family:verdana;">Как видно пинг проходит успешно, но всегда интересно посмотреть, что же там внутри туннеля, для этих целей на стенде используется PIX с правильно </span><a style="font-family: verdana;" title="настроеным capture" href="http://techoover.blogspot.com/2007/09/live-and-learn.html" id="dfpw">настроеным capture.</a><br /><br /><span style="font-family:verdana;">// sniff</span><br /></span><span id="ippo2" style=";font-family:Courier New;font-size:100%;" >pixfirewall# show cap anyin</span><span style="font-size:100%;"><br /></span><span id="ippo4" style=";font-family:Courier New;font-size:100%;" >10 packets captured</span><span style="font-size:100%;"><br /></span><span id="ippo6" style=";font-family:Courier New;font-size:100%;" > 1: 16:01:56.004577 10.10.11.2 > 10.10.10.2: ip-proto-47, length 104</span><span style="font-size:100%;"><br /></span><span style=";font-family:Courier New;font-size:100%;" id="ippo8" > 2: 16:01:56.024870 10.10.10.2 > 10.10.11.2: ip-proto-47, length 104</span><span style="font-size:100%;"><br /></span><span style=";font-family:Courier New;font-size:100%;" id="ippo10" > <skip></skip></span><span style=";font-family:courier new;font-size:100%;" ><skip></skip></span><span style=";font-family:courier new;font-size:100%;" >(skip)</span><span style="font-size:100%;"><br /></span><span id="ippo22" style=";font-family:Courier New;font-size:100%;" > 9: 16:01:56.232715 10.10.11.2 > 10.10.10.2: ip-proto-47, length 104</span><span style="font-size:100%;"><br /></span><span id="ippo24" style=";font-family:Courier New;font-size:100%;" > 10: 16:01:56.249163 10.10.10.2 > 10.10.11.2: ip-proto-47, length 104</span><span style="font-size:100%;"><br /></span><span id="ippo26" style=";font-family:Courier New;font-size:100%;" >10 packets shown</span><span style="font-size:100%;"><br /><br /><span style="font-family:verdana;">Как и предпологалось, туннель работает нормально. Протокол 47 стека IP И есть gre.</span><br /><br /></span><span id="x07l2" style="font-weight: bold;font-family:verdana;font-size:100%;" >2. Шифруем</span><span style="font-size:100%;"><br /><br /><span style="font-family:verdana;">Дальше всё просто. Принципиальных отличий между данной и </span><a style="font-family: verdana;" title="минимальной конфигурацией" href="http://techoover.blogspot.com/2008/04/lan-2-lan-vpn-pre-shared.html" id="a7bn">минимальной конфигурацией</a><span style="font-family:verdana;"> практически никаких. Всё что нужно сделать это изменить crypto acl определяющий какой трафик подлежит шифрации.</span><br /><span style="font-family:verdana;">Поскольку сниффер нам показал только gre пакеты между двумя пирами шифровать будем только их. Что в принципе достаточно очевидно. :)</span><br /><span style="font-family:verdana;">//crypto acl, конечно они должны быть зеркальны с обоих сторон туннеля</span><br /></span><span id="p81o0" style=";font-family:Courier New;font-size:100%;" ><span id="k1t6">RouterA(config)# access-list 150 permit gre host 10.10.11.2 host 10.10.10.2<br /></span></span><span style="font-size:100%;"><br /><br /><span style="font-family:verdana;">isakmp, crypto map и прочие безобразия настраиваются совершенно идентично. На всякий случай привожу кусок конфигурации рутера А.</span><br /><span style="font-family:verdana;"><br />//пример окончательной конфигурации</span><br /></span><span id="rafw0" style=";font-family:Courier New;font-size:100%;" >! </span><span style="font-size:100%;"><br /></span><span id="rafw2" style=";font-family:Courier New;font-size:100%;" >crypto isakmp policy 200</span><span style="font-size:100%;"><br /></span><span id="rafw4" style=";font-family:Courier New;font-size:100%;" > encr aes 256</span><span style="font-size:100%;"><br /></span><span id="rafw6" style=";font-family:Courier New;font-size:100%;" > authentication pre-share</span><span style="font-size:100%;"><br /></span><span id="rafw8" style=";font-family:Courier New;font-size:100%;" > group 2 </span><span style="font-size:100%;"><br /></span><span id="rafw10" style=";font-family:Courier New;font-size:100%;" > lifetime 36000</span><span style="font-size:100%;"><br /></span><span id="rafw12" style=";font-family:Courier New;font-size:100%;" >crypto isakmp key sUpeRkEy address 10.10.10.2</span><span id="rafw14" style=";font-family:Courier New;font-size:100%;" > </span><span style="font-size:100%;"><br /></span><span id="rafw16" style=";font-family:Courier New;font-size:100%;" >! </span><span style="font-size:100%;"><br /></span><span id="rafw18" style=";font-family:Courier New;font-size:100%;" >crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac </span><span style="font-size:100%;"><br /></span><span id="rafw20" style=";font-family:Courier New;font-size:100%;" >! </span><span style="font-size:100%;"><br /></span><span id="rafw22" style=";font-family:Courier New;font-size:100%;" >crypto map cr_outside 200 ipsec-isakmp </span><span style="font-size:100%;"><br /></span><span id="rafw24" style=";font-family:Courier New;font-size:100%;" > set peer 10.10.10.2</span><span style="font-size:100%;"><br /></span><span id="rafw26" style=";font-family:Courier New;font-size:100%;" > set transform-set ts-aes-sha </span><span style="font-size:100%;"><br /></span><span id="rafw28" style=";font-family:Courier New;font-size:100%;" > match address 150</span><span id="hren0" style=";font-family:Courier New;font-size:100%;" > </span><span style="font-size:100%;"><br /></span><span id="hren1" style=";font-family:Courier New;font-size:100%;" >! </span><span style="font-size:100%;"><br /></span><span id="hren2" style=";font-family:Courier New;font-size:100%;" >interface Tunnel10</span><span style="font-size:100%;"><br /></span><span id="hren3" style=";font-family:Courier New;font-size:100%;" > ip unnumbered FastEthernet1/0</span><span style="font-size:100%;"><br /></span><span id="hren4" style=";font-family:Courier New;font-size:100%;" > tunnel source FastEthernet1/0</span><span style="font-size:100%;"><br /></span><span id="hren5" style=";font-family:Courier New;font-size:100%;" > tunnel destination 10.10.10.2</span><span style="font-size:100%;"><br /></span><span id="hren6" style=";font-family:Courier New;font-size:100%;" >! </span><span style="font-size:100%;"><br /></span><span id="hren7" style=";font-family:Courier New;font-size:100%;" >interface FastEthernet1/0</span><span style="font-size:100%;"><br /></span><span id="hren8" style=";font-family:Courier New;font-size:100%;" > ip address 10.10.11.2 255.255.255.0</span><span style="font-size:100%;"><br /></span><span id="hren9" style=";font-family:Courier New;font-size:100%;" > duplex auto</span><span style="font-size:100%;"><br /></span><span id="hren10" style=";font-family:Courier New;font-size:100%;" > speed auto</span><span style="font-size:100%;"><br /></span><span id="hren11" style=";font-family:Courier New;font-size:100%;" > crypto map cr_outside</span><span style="font-size:100%;"><br /></span><span id="hren12" style=";font-family:Courier New;font-size:100%;" >! </span><span style="font-size:100%;"><br /></span><span id="hren13" style=";font-family:Courier New;font-size:100%;" >ip route 192.168.2.0 255.255.255.0 Tunnel10</span><span style="font-size:100%;"><br /></span><span id="hren14" style=";font-family:Courier New;font-size:100%;" >!</span><span style="font-size:100%;"><br /></span><span id="hren15" style=";font-family:Courier New;font-size:100%;" >access-list 150 permit gre host 10.10.11.2 host 10.10.10.2</span><span style="font-size:100%;"><br /></span><span id="hren17" style=";font-family:Courier New;font-size:100%;" >!</span><span style="font-size:100%;"><br /><br /><span style="font-family:verdana;">// Проведем то же элементарное тестирование с помощью ping. Ниже представлен вывод сниффера.</span><br /></span><span id="m-in0" style=";font-family:Courier New;font-size:100%;" >pixfirewall# show capture anyin</span><span style="font-size:100%;"><br /></span><span id="m-in1" style=";font-family:Courier New;font-size:100%;" >17 packets captured</span><span style="font-size:100%;"><br /></span><span id="m-in2" style=";font-family:Courier New;font-size:100%;" > 1: 15:33:57.516788 10.10.11.2.500 > 10.10.10.2.500: udp 144</span><span style="font-size:100%;"><br /></span><span id="m-in3" style=";font-family:Courier New;font-size:100%;" > 2: 15:33:57.741477 10.10.10.2.500 > 10.10.11.2.500: udp 104</span><span style="font-size:100%;"><br /></span><span id="m-in4" style=";font-family:Courier New;font-size:100%;" > 3: 15:33:57.911284 10.10.11.2.500 > 10.10.10.2.500: udp 304</span><span style="font-size:100%;"><br /></span><span id="m-in5" style=";font-family:Courier New;font-size:100%;" > 4: 15:33:58.126153 10.10.10.2.500 > 10.10.11.2.500: udp 304</span><span style="font-size:100%;"><br /></span><span id="m-in6" style=";font-family:Courier New;font-size:100%;" > 5: 15:33:58.186025 10.10.11.2.500 > 10.10.10.2.500: udp 108</span><span style="font-size:100%;"><br /></span><span id="m-in7" style=";font-family:Courier New;font-size:100%;" > 6: 15:33:58.206059 10.10.10.2.500 > 10.10.11.2.500: udp 76</span><span style="font-size:100%;"><br /></span><span id="m-in8" style=";font-family:Courier New;font-size:100%;" > 7: 15:33:58.219852 10.10.11.2.500 > 10.10.10.2.500: udp 172</span><span style="font-size:100%;"><br /></span><span id="m-in9" style=";font-family:Courier New;font-size:100%;" > 8: 15:33:58.259401 10.10.10.2.500 > 10.10.11.2.500: udp 172</span><span style="font-size:100%;"><br /></span><span id="m-in10" style=";font-family:Courier New;font-size:100%;" > 9: 15:33:58.268388 10.10.11.2.500 > 10.10.10.2.500: udp 60</span><span style="font-size:100%;"><br /></span><span id="m-in11" style=";font-family:Courier New;font-size:100%;" > 10: 15:33:59.395807 10.10.11.2 > 10.10.10.2: ip-proto-50, length 164</span><span style="font-size:100%;"><br /></span><span id="m-in12" style=";font-family:Courier New;font-size:100%;" > 11: 15:33:59.444541 10.10.10.2 > 10.10.11.2: ip-proto-50, length 164</span><span style="font-size:100%;"><br /></span><span id="m-in13" style=";font-family:Courier New;font-size:100%;" > <skip></skip></span><span style="font-size:100%;"><span style="font-family:courier new;"><skip></skip></span></span><span style=";font-family:Courier New;font-size:100%;" id="ippo10" > <skip></skip></span><span style=";font-family:courier new;font-size:100%;" ><skip></skip></span><span style=";font-family:courier new;font-size:100%;" >(skip)</span><span style="font-size:100%;"><br /></span><span id="m-in14" style=";font-family:Courier New;font-size:100%;" > 17: 15:33:59.556703 10.10.10.2 > 10.10.11.2: ip-proto-50, length 164</span><span style="font-size:100%;"><br /></span><span id="m-in15" style=";font-family:Courier New;font-size:100%;" >17 packets shown</span><span style="font-size:100%;"><br /><br /><span style="font-family:verdana;">Как и ожидалось, конфигурация работает и даже шифрует трафик.</span><br /><span style="font-family:verdana;">Первые 9 пакетов показывают обмен небольшими udp пакетами по 500 порту. Этот порт используется isakmp при установлении SA.</span><br /><span style="font-family:verdana;">Далее идёт обмен пакетами протокола 50 стека IP, что и есть, собственно, ipsec.</span></span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com7tag:blogger.com,1999:blog-2333148333771997943.post-63012584933277065532008-04-30T06:53:00.005+02:002008-04-30T07:15:02.407+02:00Оцени меня<span style="font-family:verdana;">Некоторые из читатаелей возможно знакомы с различными развлекательными сайтами позволяющими оченивать фотографии любителей. Оригинальный </span><a style="font-family: verdana;" href="http://hotornot.com/">горяч-ли-я</a><span style="font-family:verdana;"> и его русскоязычный клон </span><a style="font-family: verdana;" href="http://www.rateme.ru/">оцени меня</a><span style="font-family:verdana;">. Нет, я не собираюсь менять тематику блога.<br />Прислали ссылочку на подобную штуковину, но оценивать предлагается карты сетей. Особенно порадовал раздел смешных карт. Попадаются варианты здорово поднимающие настроение. Вот образчик:</span><br /><a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoRM3g2H8SeUkjW1PwRptU0TlEnX3DHPar9NcyYT4YTGkfWleKQKvYCtx6W4-UGE1CZ1ZgH-c8BmYhFWXQFAFGBhjNvpRGd1Ia9rSU4bW4Hb3uIA65oRU9mhdbxAGKHihjluaaIUjh-XE/s1600-h/porn_net.jpg"><img style="cursor: pointer;" src="https://blogger.googleusercontent.com/img/b/R29vZ2xl/AVvXsEgoRM3g2H8SeUkjW1PwRptU0TlEnX3DHPar9NcyYT4YTGkfWleKQKvYCtx6W4-UGE1CZ1ZgH-c8BmYhFWXQFAFGBhjNvpRGd1Ia9rSU4bW4Hb3uIA65oRU9mhdbxAGKHihjluaaIUjh-XE/s400/porn_net.jpg" alt="" id="BLOGGER_PHOTO_ID_5194901563944885426" border="0" /></a><br /><br />Линк: <a href="http://www.ratemynetworkdiagram.com/">http://www.ratemynetworkdiagram.com/</a>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0tag:blogger.com,1999:blog-2333148333771997943.post-30398704108345244132008-04-21T20:00:00.008+02:002008-05-21T15:03:48.033+02:00Соединяя офисные пространства (lan-2-lan vpn pre-shared)<span id="ibxm" style="font-family:verdana;"><b id="idiw">0. Общие слова</b></span><br /><span style="font-family:verdana;">Зачем нужен vpn и что с ним делать рассказывать не буду, в сети достаточно много информации на эту тему. Скажу только, что под vpn подразумевается ipsec и в данной заметке описывается построение site to site vpn используя pre-shared keys, т.е. соединение двух локальных сетей, например центрального отделения и филиала через открытую сеть типа интернет. Используемое оборудование - рутер cisco. Заметка сугубо практическая, поскольку рассмотрение теории займет достаточно много места и времени. Краткий обзор: что происходит при построении ipsec туннеля можно найти в </span><a style="font-family: verdana;" title="фазы ipsec" href="http://techoover.blogspot.com/2007/09/ipsec.html" id="s-jx">одной из предыдущих заметок</a><span style="font-family:verdana;">.</span><br /><br /><span style="font-family:verdana;">Итак, пройдемся по всем фазам и посмотрим какие команды отвечают за успешное завершение каждой. Адресация сети выглядит следующим образом.</span><br /><br /><span style="font-family:verdana;">Внутренняя сеть А: 192.168.1.0/24</span><br /><span style="font-family:verdana;">Внутренняя сеть Б: 192.168.2.0/24</span><br /><br /><span style="font-family:verdana;">Внешний интерфейс А: 10.10.11.2/24</span><br /><span style="font-family:verdana;">Внешний интерфейс Б: 10.10.10.2/24</span><br /><br /><br /><span style="font-family:verdana;">Необходимо убедиться, что существующие acl совместимы с ipsec. Как требует документация необходимо разрешить прохождения трафика по протоколам 51 (ah) и 50 (esp) стека ip, зависит от желаемой конфигурации. Порт 500/udp и echo/echo-replay. Впрочем без разрешенного icmp у меня туннель заработал.</span><br /><br /><span id="eq78" style="font-family:verdana;"><b id="ej9i">1. Установка триггера на трафик подлежащий шифрованию</b></span><br /><br /><span style="font-family:verdana;">Задача, соответственно, состоит в том, чтобы позволить пользователям из сети 192.168.1.0/24 получать доступ к компьютерам находящимся в сети 192.168.2.0/24 и наоборот.</span><br /><span style="font-family:verdana;">На первом этапе ipsec рутер просматривает проходящий через него трафик и если находит пакет совпадающий с определенным acl, шифрует его и передает дальше. Таким образом первая задача - определить трафик подлежащий шифрованию с помощью acl. Логично, что acl должны быть совершенно зеркальны на обоих сторонах туннеля, поскольку SA создаются уникальные для source и destination в прямом и обратном направлении. Соответственно, если acl будут не зеркальны, то и туннель не установится.</span><br /><br /><span style="font-family:verdana;">//Пример acl</span><br /><span style="font-family:verdana;">// routerA</span><br /><span id="k1t6" style="font-family:Courier New;">RouterA(config)# access-list 120 permit ip 192.168.1.0 0.0.0.255 192.168.2.0 0.0.0.255</span><br /><span style="font-family:verdana;">// routerB</span><br /><span id="lcs8" style="font-family:Courier New;">RouterB(config)# access-list 120 permit ip 192.168.2.0 0.0.0.255 192.168.1.0 0.0.0.255</span><br /><br /><br /><span id="yl8-" style="font-family:verdana;"><b id="r0-r">2. </b></span><span id="r630" style="font-family:verdana;"><b id="qj82">Первая фаза IKE</b></span><br /><span style="font-family:verdana;">Следующий этап - создание IKE SA.</span><br /><span style="font-family:verdana;">Поскольку на каждому рутере может создаваться несколько IKE SA для различных туннелей с различными настройками безопасности используются политики IKE с различными уровнями приоритета (<1-10000), id="ce4u">Каждая политика характеризуется следующими параметрами: алгоритм шифрования, алгоритм хеширования, метод аутентификации, используемая реализация алгоритма </span><span id="qi_f" style="font-family:verdana;"><span style="font-family:verdana;"> Диффи-Хелмана, время жизни SA. Настройки по-умолчанию можно посмотреть следующим образом:</span><br /><br /><span style="font-family:verdana;">//политика IKE по-умолчанию</span><br /><span id="g1gi" style="font-family:Courier New;">RouterA#sh crypto isakmp policy</span><br /><br /><span id="ux2r" style="font-family:Courier New;">Global IKE policy</span><br /><span id="vutf" style="font-family:Courier New;">Default protection suite</span><br /><span id="mgti" style="font-family:Courier New;"> encryption algorithm: DES - Data Encryption Standard (56 bit keys).</span><br /><span id="vp2a" style="font-family:Courier New;"> hash algorithm: Secure Hash Standard</span><br /><span id="xag0" style="font-family:Courier New;"> authentication method: Rivest-Shamir-Adleman Signature</span><br /><span id="bgnx" style="font-family:Courier New;"> Diffie-Hellman group: #1 (768 bit)</span><br /><span id="jwjc" style="font-family:Courier New;"> lifetime: 86400 seconds, no volume limit</span><br /><br /></span><span style="font-family:verdana;">Минимально необходимых, а мы сейчас говорим именно о них, параметров не так много. В данном случае изменим метод аутентификации на pre-shared keys, заменим не рекомендуемый аглоритм шифрования данных, на продвинутый (DES & AES) и </span><span id="qi_f" style="font-family:verdana;"> Диффи-Хелмана на вторую группу, 1024 бита.<br />Поскольку в качестве метода аутентификации выбран метод распределенного ключа, его необходимо также указать.<br />Манипуляции производятся следующими командами.</span><br /><br /><span style="font-family:verdana;">// Настройки необходимые для IKE SA, в данном случае политика с приоритетом 200</span><br /><span style="font-family:verdana;">// ключ указывается отдельно от политики, поскольку в общем случае он почти ничего общего с ней не имеет,</span><br /><span style="font-family:verdana;">// политика может использоваться многократно для нескольких туннелей. Ключ желательно оставлять уникальным для каждого пира.</span><br /><span style="font-family:verdana;">// Конечно, настройки для рутера Б должны быть идентичны за исключением адреса другого конца туннеля.</span><br /><span id="sh73" style="font-family:Courier New;">RouterA(config)# crypto isakmp policy 200</span><br /><span id="jxzf" style="font-family:Courier New;">RouterA(config-isakmp)# encr aes</span><br /><span id="n9dy" style="font-family:Courier New;">RouterA(config-isakmp)# authentication pre-share</span><br /><span id="fvju" style="font-family:Courier New;">RouterA(config-isakmp)# group 2 </span><br /><span id="vn50" style="font-family:Courier New;">RouterA(config)# crypto isakmp key sUpeRkEy address 10.10.10.2</span><br /><br /><span id="kbv_" style="font-family:verdana;"><b id="uwth">3. </b></span><span style=";font-family:verdana;font-size:100%;" id="tvj2" ><span id="mbb:"><span id="tv.8"><b id="ewvt">Вторая фаза IKE</b></span><br /></span></span><span style="font-family:verdana;">В рамках второй фазы IKE происходит установка ipsec SA которые потом будут использоваться непосредственно для шифрования трафика.</span><br /><span style="font-family:verdana;">Для этого необходимо указать желаемые параметры: алгоритм и шифрования и хеширования. Происходит это путем создания так называемого transform-set.</span><br /><br /><span style="font-family:verdana;">// В данном случае:</span><br /><span style="font-family:verdana;">// ts-aes-sha - имя данного transform-set</span><br /><span style="font-family:verdana;">// esp-aes 256 - алгоритм шифрования и длина его ключа</span><br /><span style="font-family:verdana;">// esp-sha-hmac - алгорим хеширования</span><br /><span id="khxd" style="font-family:Courier New;"> RouterA(config)# crypto ipsec transform-set ts-aes-sha esp-aes 256 esp-sha-hmac </span><br /><br /><span style="font-family:verdana;">Следущим этапом идет создание специальной крипто карты, которая связывает всё вместе. Именно эта карта потом привязывается к конкретному интерфейсу.</span><br /><span style="font-family:verdana;">Поскольку для каждого интерфейса может быть определена только одна крипто карта, здесь используется тот же принцип приоритетов, позволяющий создавать туннели к разным пирам и с различными параметрами безопасности.</span><br /><span style="font-family:verdana;">Параметров не так много: адрес другого конца туннеля, имя желаемомого transform-set, acl который будет использваться как триггер для данной крипто карты.</span><br /><br /><span style="font-family:verdana;">//Пример crypto map</span><br /><span id="i8:7" style="font-family:Courier New;">RouterA(config)# crypto map cr_outside 200 ipsec-isakmp </span><br /><span id="gtfq" style="font-family:Courier New;">RouterA(config-crypto-map)# set peer 10.10.10.2</span><br /><span id="cx7j" style="font-family:Courier New;">RouterA(config-crypto-map)# set transform-set ts-aes-sha </span><br /><span id="lgj9" style="font-family:Courier New;">RouterA(config-crypto-map)# match address 120</span><br /><br /><span id="f5m_" style="font-family:verdana;"><b id="e:g0">4. Нормальная работа</b></span><br /><span style="font-family:verdana;">Почти всё необходимые настойки произведены, осталось только указать интерфейс используемый как источник для создния туннеля и включить "глобальный выключатель" разрешающий использовать IKE и слушать 500/udp порт.</span><br /><br /><span style="font-family:verdana;">//Привязка созданной крипто карты к интерфейсу</span><br /><span style="font-family:courier new;">RouterA(config-if)#crypto map cr_outside</span><br /><br /><span style="font-family:verdana;">//Включить IKE</span><br /><span style="font-family:courier new;">RouterA(config)#crypto isakmp enable</span><br /><br /><span style="font-family:verdana;">Туннель создается не сразу, а только после появления трафика подлежащего шифрованию. Посмотреть реально ли создан туннель и шифруется ли трафик можно с помощью следущей команды:</span><br /><br /><span style="font-family:verdana;">// Просмотр активных туннелей</span><br /><span id="kouv" style="font-family:Courier New;">RouterA#sh crypto engine connections active </span><br /><span id="badn" style="font-family:Courier New;"> ID Interface IP-Address State Algorithm Encrypt Decrypt</span><br /><span id="nv1j" style="font-family:Courier New;"> 2001 FastEthernet1/0 10.10.11.2 set AES256+SHA 9 0</span><br /><span id="h4ns" style="font-family:Courier New;"> 2002 FastEthernet1/0 10.10.11.2 set AES256+SHA 0 9</span><br /><br /><span style="font-family:verdana;">Насколько видно из примера, создано две SA каждая используется для одного направления. В данном случае SA c ID 2001 используется для шифрования, а c ID 2002 для расшифровывания, что видно по счетчикам пакетов.</span><br /><br /><span style="font-family:verdana;">Более подробную информацию может дать команда show crypto ipsec sa.</span><br /><br /><span style="font-family:verdana;">// Доступные SA на рутере.</span><br /><span id="cpry" style="font-family:Courier New;">RouterA#sh crypto ipsec sa </span><br /><br /><span id="h_2h" style="font-family:Courier New;">interface: FastEthernet1/0</span><br /><span id="xyru" style="font-family:Courier New;"> Crypto map tag: cr_outside, local addr 10.10.11.2</span><br /><br /><span id="bs68" style="font-family:Courier New;"> protected vrf: (none)</span><br /><span id="xx4i" style="font-family:Courier New;"> local ident (addr/mask/prot/port): (192.168.1.0/255.255.255.0/0/0)</span><br /><span id="aurz" style="font-family:Courier New;"> remote ident (addr/mask/prot/port): (192.168.2.0/255.255.255.0/0/0)</span><br /><span id="uaos" style="font-family:Courier New;"> current_peer 10.10.10.2 port 500</span><br /><span id="ocs5" style="font-family:Courier New;"> PERMIT, flags={origin_is_acl,}</span><br /><span id="c3st" style="font-family:Courier New;"> #pkts encaps: 9, #pkts encrypt: 9, #pkts digest: 9</span><br /><span id="b7qw" style="font-family:Courier New;"> #pkts decaps: 9, #pkts decrypt: 9, #pkts verify: 9</span><br /><span id="k8lf" style="font-family:Courier New;"> #pkts compressed: 0, #pkts decompressed: 0</span><br /><span id="p2yq" style="font-family:Courier New;"> #pkts not compressed: 0, #pkts compr. failed: 0</span><br /><span id="hf06" style="font-family:Courier New;"> #pkts not decompressed: 0, #pkts decompress failed: 0</span><br /><span id="bqze" style="font-family:Courier New;"> #send errors 1, #recv errors 0</span><br /><br /><span id="r.5w" style="font-family:Courier New;"> local crypto endpt.: 10.10.11.2, remote crypto endpt.: 10.10.10.2</span><br /><span id="ytpg" style="font-family:Courier New;"> path mtu 1500, ip mtu 1500</span><br /><span id="qm9h" style="font-family:Courier New;"> current outbound spi: 0xB2259128(2988806440)</span><br /><br /><span id="rq8l" style="font-family:Courier New;"> inbound esp sas:</span><br /><span id="p-uh" style="font-family:Courier New;"> spi: 0x8A02CA5F(2315438687)</span><br /><span id="zet0" style="font-family:Courier New;"> transform: esp-256-aes esp-sha-hmac ,</span><br /><span id="i:d2" style="font-family:Courier New;"> in use settings ={Tunnel, }</span><br /><span id="cvwc" style="font-family:Courier New;"> conn id: 2002, flow_id: SW:2, crypto map: cr_outside</span><br /><span id="hjr-" style="font-family:Courier New;"> sa timing: remaining key lifetime (k/sec): (4533541/3425)</span><br /><span id="oi87" style="font-family:Courier New;"> IV size: 16 bytes</span><br /><span id="zesb" style="font-family:Courier New;"> replay detection support: Y</span><br /><span id="g7zw" style="font-family:Courier New;"> Status: ACTIVE</span><br /><br /><span id="ektz" style="font-family:Courier New;"> inbound ah sas:</span><br /><br /><span id="y454" style="font-family:Courier New;"> inbound pcp sas:</span><br /><br /><span id="dwk0" style="font-family:Courier New;"> outbound esp sas:</span><br /><span id="yjji" style="font-family:Courier New;"> spi: 0xB2259128(2988806440)</span><br /><span id="dms." style="font-family:Courier New;"> transform: esp-256-aes esp-sha-hmac ,</span><br /><span id="v4gv" style="font-family:Courier New;"> in use settings ={Tunnel, }</span><br /><span id="d_:d" style="font-family:Courier New;"> conn id: 2001, flow_id: SW:1, crypto map: cr_outside</span><br /><span id="kgsk" style="font-family:Courier New;"> sa timing: remaining key lifetime (k/sec): (4533541/3425)</span><br /><span id="mgr3" style="font-family:Courier New;"> IV size: 16 bytes</span><br /><span id="msi6" style="font-family:Courier New;"> replay detection support: Y</span><br /><span id="sm26" style="font-family:Courier New;"> Status: ACTIVE</span><br /><br /><br /><span id="cky3" style="font-family:Courier New;"> inbound ah sas:</span><br /><br /><span id="k_db" style="font-family:Courier New;"> inbound pcp sas:</span><br /><br /><span id="ld4t" style="font-family:Courier New;"> outbound esp sas:</span><br /><span id="icfa" style="font-family:Courier New;"> spi: 0xB2259128(2988806440)</span><br /><span id="vmfg" style="font-family:Courier New;"> transform: esp-256-aes esp-sha-hmac ,</span><br /><span id="c6x9" style="font-family:Courier New;"> in use settings ={Tunnel, }</span><br /><span id="appf" style="font-family:Courier New;"> conn id: 2001, flow_id: SW:1, crypto map: cr_outside</span><br /><span id="dh2c" style="font-family:Courier New;"> sa timing: remaining key lifetime (k/sec): (4533541/3363)</span><br /><span id="x6qi" style="font-family:Courier New;"> IV size: 16 bytes</span><br /><span id="g-eu" style="font-family:Courier New;"> replay detection support: Y</span><br /><span id="ztj7" style="font-family:Courier New;"> Status: ACTIVE</span><br /><br /><span id="qm:g" style="font-family:Courier New;"> outbound ah sas:</span><br /><br /><span id="wyxy" style="font-family:Courier New;"> outbound pcp sas:</span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com2tag:blogger.com,1999:blog-2333148333771997943.post-9038340312315182812008-04-09T17:50:00.004+02:002008-04-09T18:02:15.808+02:00Новый CSA<span style="font-family: verdana;">Появилась новая версия Cisco Security Agent. </span><br /><span style="font-family: verdana;">Достаточно интересно, что теперь к функцям HIPS та же добавилась функциональнасть ативируса. Также достаточно забавно, что несмотря на достаточно долгое и успешное сотрудничество Cisco c компанией Trendmicro в данном случае использован движок open-source проекта </span><a style="font-family: verdana;" href="http://clamav.com/">ClamAV</a><span style="font-family: verdana;">. Судя по </span><a style="font-family: verdana;" href="http://www.cisco.com/en/US/products/sw/secursw/ps5057/index.html">информации представленной на сайте cisco</a><span style="font-family: verdana;">, монитора реального времени нет, на данный момент реализована только проверка по-требованию.</span><br /><span style="font-family: verdana;">Однако существует возможность удалённого управления и обновления антивируса из менеджмент консоли самого CSA. </span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0tag:blogger.com,1999:blog-2333148333771997943.post-10090930898215648772008-04-03T21:45:00.000+02:002008-04-03T21:49:53.539+02:00 <font id="r6j." size="4"><b id="nryu"><a title="Troubleshooting firewalls" href="http://techoover.blogspot.com/2008/04/toubleshooting-firewalls-firewall-cisco_5133.html" id="uinv">Troubleshooting firewalls</a> </b></font><br id="kpo3"><br id="ndi6"><font id="kf75" size="3">В нескольких предыдущих заметках я рассказывал о различных аспектах настройки firewall устройств Cisco PIX и ASA. Почти всё также относиться к модулю FWSM для 65 серии коммутаторов. Зачастую в заметках просто рассказывалось как настроить какую-либо "фичу", причем в минимальной конфигурации, так как переписывать документацию смысла особого нет, а вот иметь <a title="шпаргалочку для быстрого подглядывания например номера порта который необходимо разрешить на firewall для работы HSRP" href="http://techoover.blogspot.com/2007/08/hsrp.html" id="s8p5">шпаргалочку для быстрого подглядывания например номера порта который необходимо разрешить на firewall для работы HSRP</a> оказалось достаточно удобно. <br id="xnfp">Сегодня я расскажу о действиях когда что-то идет не так как планировалось. Поскольку последнее время я занимаюсь исключительно с ASA устройствами речь пойдет о них.<br id="jq_o"><br id="lgqp">Прежде всего необходимо воспользоваться простыми show командами, зачастую с их помощью можно определить источник проблем.<br id="r9w:">Для поиска проблем при прохождении трафика через firewall крайне полезны команды show xlate и show connection. Первая предназначена для просмотра активных <br id="mqfv">сетевых трансляций, вторая для просмотра соединений. Почему зачастую для построения соединений нужен NAT и как его правильно настроить модно прочитать в одной из <a title="предыдущих заметок" href="http://techoover.blogspot.com/2007/12/nat-pixasa.html" id="fpde">предыдущих заметок</a>. Обращайте внимание на флаги которые появляются при выводе show xlate detail, например можно долго искать проблему в "странно работающем" DNS если не заметить флага "D" при трансляции.</font><br id="j2_e"><font id="t8:l" color="#000000"><br id="ggq7"><span id="mbvu" style="font-family: Courier New;">pixasa# sh xlate detail </span><br style="font-family: Courier New;" id="n7jk"><span id="f_xw" style="font-family: Courier New;">1 in use, 1 most used</span><br style="font-family: Courier New;" id="p:ag"><span id="f2vy" style="font-family: Courier New;">Flags: D - DNS, d - dump, I - identity, i - dynamic, n - no random,</span><br style="font-family: Courier New;" id="xcuu"><span id="xywz" style="font-family: Courier New;"> r - portmap, s - static</span><br style="font-family: Courier New;" id="gkgh"><span id="y5t1" style="font-family: Courier New;">NAT from inside:10.10.11.5 to outside:10.10.11.2 flags sD</span><br id="a4.p"><br id="zy:5"></font><font id="c8n9" size="3">Крайне полезная команда show local-host. Показывает не достаточно подробную информацию. Причем не только по соединениям, а по всевозможным лимитам установленным для данного потока. Немного странновая терминилогия, но если верить документации local-host создается для каждого хоста который шлет пакеты на firewall или через него. Что интересно, во втором случае создается два локальных хоста, например как в этом примере. От <span id="fb6s" style="font-family: Verdana;">10.10.10.2 обращается по telnet к 10.10.11.2, соответственно для каждого могут быть применены свои лимиты. Также команда полезна для просмотра трансляция созданых с помощью </span><span id="juom" style="font-family: verdana;"><span id="w6ei" style="font-family: verdana;">Identity NAT.</span></span></font><br id="ipjv"><br id="ebmi"><font style="font-family: Courier New;" id="t8:l" color="#000000"><span id="mbvu">pixasa#</span></font><span id="p1gp" style="font-family: Courier New;"> sh local-host </span><br style="font-family: Courier New;" id="j.xa"><span id="wlgg" style="font-family: Courier New;">Interface inside: 1 active, 2 maximum active, 0 denied</span><br style="font-family: Courier New;" id="vfel"><span id="uf5f" style="font-family: Courier New;">local host: <10.10.11.2>,</span><br style="font-family: Courier New;" id="fx3-"><span id="v5_5" style="font-family: Courier New;"> TCP flow count/limit = 1/unlimited</span><br style="font-family: Courier New;" id="foy4"><span id="zc4y" style="font-family: Courier New;"> TCP embryonic count to host = 0</span><br style="font-family: Courier New;" id="vc41"><span id="pv_i" style="font-family: Courier New;"> TCP intercept watermark = unlimited</span><br style="font-family: Courier New;" id="h.uo"><span id="o41g" style="font-family: Courier New;"> UDP flow count/limit = 0/unlimited</span><br style="font-family: Courier New;" id="jhzq"><br style="font-family: Courier New;" id="yaki"><span id="et2r" style="font-family: Courier New;"> Conn:</span><br style="font-family: Courier New;" id="w9gx"><span id="noap" style="font-family: Courier New;"> TCP out 10.10.10.2:35803 in 10.10.11.2:23 idle 0:00:00 bytes 73 flags UIOB</span><br style="font-family: Courier New;" id="wea0"><span id="d:-d" style="font-family: Courier New;">Interface outside: 1 active, 1 maximum active, 0 denied</span><br style="font-family: Courier New;" id="n_a5"><span id="s64k" style="font-family: Courier New;">local host: <10.10.10.2>,</span><br style="font-family: Courier New;" id="f0jt"><span id="rik_" style="font-family: Courier New;"> TCP flow count/limit = 1/unlimited</span><br style="font-family: Courier New;" id="xx05"><span id="iivo" style="font-family: Courier New;"> TCP embryonic count to host = 0</span><br style="font-family: Courier New;" id="qrj1"><span id="exr8" style="font-family: Courier New;"> TCP intercept watermark = unlimited</span><br style="font-family: Courier New;" id="fq6w"><span id="xei9" style="font-family: Courier New;"> UDP flow count/limit = 0/unlimited</span><br style="font-family: Courier New;" id="u9cu"><br style="font-family: Courier New;" id="jmlz"><span id="oa7t" style="font-family: Courier New;"> Conn:</span><br style="font-family: Courier New;" id="uj6q"><span id="fb6s" style="font-family: Courier New;"> TCP out 10.10.10.2:35803 in 10.10.11.2:23 idle 0:00:00 bytes 73 flags UIOB</span><br id="eg_l"><br id="krtr"><font id="l4_4" size="3">Команда show asp drop покажет общую статистику о пакетах заблокированных по тем или иными причинам. Например при настройке <a title="Unicast Reverse Path Forwarding" href="http://techoover.blogspot.com/2007/11/unicast-reverse-path-forwarding.html" id="gy-x">Unicast Reverse Path Forwarding</a><span id="v6d." style="font-family: verdana;"> сколько именно пакетов было заблокировано.<br id="vcqp">Также крайне полезная информация позволяющая сходу оценить количественные показатели. Сколько было заблокировано ACL (строчка </span>Flow is denied by access rule)</font><span id="v6d." style="font-family: verdana;"><font id="sy0f" size="3">, а сколько например по причине некорректно установленных опций в пакете (Bad TCP flags).<br id="u9qw">Примерно как в примере ниже.</font><br id="ls2f"><br id="dbsz"></span> <p style="font-family: Courier New;" id="nik:" class="MsoNormal"><span id="sf48" lang="EN-US">pixasa# show asp drop | </span><span id="w2yo" lang="EN-US">in Reverse</span><span id="w2yo" lang="EN-US">-path</span></p><span id="w2yo" style="font-family: Courier New;" lang="EN-US">Reverse-path verify failed 15</span><p style="font-family: Courier New;" id="nik:" class="MsoNormal"><br id="r4.:"></p><p style="font-family: Courier New;" id="nik:" class="MsoNormal"><span id="sf48" lang="EN-US">pixasa# show asp drop | </span><span id="ziy6" lang="EN-US">in Bad option length in </span><br id="t8i."> </p> <p style="font-family: Courier New;" id="l6v9" class="MsoNormal"><span id="ziy6" lang="EN-US">Bad option length in TCP 731</span></p> <p id="e2lk" class="MsoNormal"><br id="h4ae"></p><p id="e2lk" class="MsoNormal"><font id="ktoz" size="3"><span id="z-.i" lang="EN-US">Следующая крайне полезная show команда позволить посмотреть насколько интенсивно используется процессор. Вывод очень похож на вывод команды uptime в системах *nix.</span></font></p><p id="e2lk" class="MsoNormal"><br id="j8qe"></p><p style="font-family: Courier New;" id="e2lk" class="MsoNormal"><span id="sf48" lang="EN-US">pixasa</span><span id="z-.i" lang="EN-US"># show cpu usage<br id="j2yv">CPU utilization for 5 seconds = 9%; 1 minute: 11%; 5 minutes: 7%</span></p><p id="e2lk" class="MsoNormal"><br id="btfx"></p><p id="e2lk" class="MsoNormal"><font id="z:_l" size="3"><span id="z-.i" lang="EN-US">Если используются <a title="виртуальные firewall" href="http://techoover.blogspot.com/2008/01/blog-post.html" id="xjyk">виртуальные firewall</a>, можно посмотреть статистику по конкретному контексту.</span></font></p><span id="sf48" lang="EN-US"><br id="v6cd"><span id="qt61" style="font-family: Courier New;">pixasa</span></span><span id="gir2" style="font-family: Courier New;"># show cpu context system</span><br style="font-family: Courier New;" id="j8dl"><p style="font-family: Courier New;" id="e2lk" class="MsoNormal"><span id="z-.i" lang="EN-US"><span id="rrx4">CPU utilization for 5 seconds = 6.3%; 1 minute: 7.7%; 5 minutes: 3.8%</span></span></p><p id="e2lk" class="MsoNormal"><span id="z-.i" lang="EN-US"><span id="rrx4" style="font-family: Courier New;"><br id="sz00"></span></span></p><p id="e2lk" class="MsoNormal"><font style="font-family: Verdana;" id="mkq2" color="#000000" size="3"><span id="z-.i" lang="EN-US"><span id="rrx4">show traffic покажет загрузку интерфейсов, может быть задержки происходят просто потому, что не хватает пропускной способности интерфейса?</span></span></font><font id="t.5i" size="3"><br id="jadh"></font></p><p style="font-family: Verdana;" id="e2lk" class="MsoNormal"><font id="hz8w" size="3"><span id="z-.i" lang="EN-US"><span id="rrx4">Следующая show команда будет полезна при анализе причин задержек или дропов на нагруженных устройствах. show block по сути показывает заполненность внутренних буферов. <a title="Описание" href="http://www.cisco.com/en/US/docs/security/asa/asa80/command/reference/s2.html#wp1291385" id="t4wb">Описание</a> что она конкретно показывает.<br id="lytk"></span></span></font></p><font id="roms" size="3"> <br id="qt.e">Следующая команда проста и универсальна по своей сути. Часто бывает ситуация когда вроде бы всё должно работать, но при этом что-то не работает. <br id="c713">На помощь придет отличный тестировщик любых IP соединений - трассировка пакета. <br id="a726"><br id="rz6w">// Синтаксис достаточно простой. Команда начинается с ключевых слов packet-tracer input<br id="h-s8">// далее следует указание интерфейса в который будем "инжектить" пакет и необходимые параметры в виде IP адресов и портов.</font><br id="n3vj"><p id="e2lk" class="MsoNormal"><span id="sf48" lang="EN-US"><span id="qt61" style="font-family: Courier New;">pixasa</span></span><span id="gir2" style="font-family: Courier New;">#</span> packet-tracer input outside tcp 10.10.10.2 2222 10.10.11.2 23 detailed</p><p id="e2lk" class="MsoNormal"><br id="n0yb"></p><p id="e2lk" class="MsoNormal"><font id="mkkm" color="#ff0000" size="3"><span id="z-.i" lang="EN-US"><font id="g-lo" color="#000000">Выводом будет пошаговая трассировка пакете через все проверки и лимиты возможные на firewall, проверка NAT если включен nat-control,</font></span></font><font id="gxbv" size="3"> провер</font><font id="mkkm" color="#ff0000" size="3"><span id="z-.i" lang="EN-US"><font id="igbq" color="#000000">ка urpf если включена, конечно же соответствие политике устройства, т.е. access-lists. Приводить здесь вывод я не буду, он достаточно объемен. Лично я не представляю как я раньше без неё обходился, настолько удобным это оказалось. <br id="y8dz"></font></span></font></p><p id="e2lk" class="MsoNormal"><font id="mkkm" color="#ff0000" size="3"><span id="z-.i" lang="EN-US"><font id="xfl_" color="#000000">Что интересно, firewall действительно создает этот пакет запускает его в реальный процессинг, это видно по строчкам лога, в которых можно разглядеть реальные события как </font></span><br id="m69o"><span id="z-.i" lang="EN-US"><font id="xfl_" color="#000000">например создание слота трансляции для трассировочного пакета.</font><br id="gqrs"></span></font></p><p style="font-family: Verdana;" id="e2lk" class="MsoNormal"><font id="w3_t" size="3"><span id="z-.i" lang="EN-US"><br id="ovoy"></span></font></p><p style="font-family: Verdana;" id="e2lk" class="MsoNormal"><font id="n3g-" size="3"><span id="z-.i" lang="EN-US">Достаточно симпатично </span><span id="z-.i" lang="EN-US">packet trace выглядит запущенный в графическом режиме из ASDM. </span><br id="z35i"><span id="z-.i" lang="EN-US">Если же </span></font><font id="ssma" face="Verdana" size="3">искусственно </font><font id="kwql" size="3"><span id="z-.i" lang="EN-US">запущенный пакет проходит без проблем, а реальные приложения не работают остается только проверенное средство в виде сниффера.</span> <br id="x8r-"><span id="z-.i" lang="EN-US">Действительно, может проблема в том, что до firewall пакеты даже не доходят? Есть замечательная команда <a title="show capture о которой я уже писал" href="http://techoover.blogspot.com/2007/09/live-and-learn.html" id="kaqp">show capture о которой я уже писал</a>. Повторяться здесь не буду, просто имейте в виду.<br id="v3bh"></span></font></p><font id="y0lf" size="3">Также не следует забывать о существовании просто огромного количества debug команд на все случаи жизни. Здорово облегчить жизнь может <a title="использование фильтров" href="http://www.cisco.com/en/US/docs/security/asa/asa72/configuration/guide/cli.html#wp1020957" id="gg-t">использование фильтров</a> для всё тех же команд show.<br id="yiwi"></font><br id="p6bg"><br id="hxdi">pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0tag:blogger.com,1999:blog-2333148333771997943.post-16132466725119392302008-03-30T15:06:00.002+02:002008-03-30T15:24:39.125+02:00Modular policy<div xmlns='http://www.w3.org/1999/xhtml'><p id='z8to' class='western' style='margin-bottom: 0.2in;'><font face='verdana' id='m:gs'><font size='2' id='k.of'><b id='ajks'>0. Официальная документация</b></font></font><font size='2' face='verdana' id='gh53'><br id='i3j7'/></font><font face='verdana' id='n_nu'><font size='2' id='s1jk'>http://www.cisco.com/en/US/docs/security/asa/asa80/configuration/guide/mpc.html<br id='nfy-'/>http://www.cisco.com/en/US/docs/security/asa/asa80/configuration/guide/inspect.html<br id='r1vb'/><br id='n3s-'/></font></font><font face='verdana' id='zaau'><font size='2' id='mv_.'><i id='py8b'>В заметке сознательно опущены некоторые параметры или команды, приведены только наиболее часто используемые примеры.</i></font></font><font face='verdana' id='c22u'><font size='2' id='o:ln'><br id='t.8j'/></font></font><font size='2' face='verdana' id='c62w'><br id='kevz'/></font><font face='verdana' id='jv1t'><font size='2' id='t_5v'>С помощью сервисных политик можно сделать достаточно много интересных вещей например это может быть</font></font></p> <pre id='k5p.' class='western'><font face='verdana' id='j_ye'><font size='2' id='he8n'>- различные операции на уровне TCP/IP;</font></font><font face='verdana'><br/></font><font face='verdana' id='jvju'><font size='2' id='h:2v'>- отправка трафика на модули ASA - CSC или IPS;</font></font><font face='verdana'><br/></font><font face='verdana' id='gdtc'><font size='2' id='h_be'>- различные виды QoS;</font></font><font face='verdana'><br/></font><font face='verdana' id='bal1'><font size='2' id='p:dq'>- инспекция трафика на уровне приложений.</font></font></pre><p id='pa0t' class='western' style='margin-bottom: 0.2in;'> <font face='verdana' id='vb.y'><font size='2' id='rtac'>Поскольку активация всех этих прелестей выполняется никак не одной командой, необходимо разбить весь процесс настройки на несколько этапов:<br id='bg2y'/>- определение трафика к которому будут применяться правила дополнительной обработки;</font></font><font size='2' face='verdana' id='o_.4'><br id='x0pu'/></font><font face='verdana' id='m3om'><font size='2' id='e_o3'>- описание действий которые необходимо производить с отобранным трафиком (создание политики);</font></font><font size='2' face='verdana' id='pg9i'><br id='tmam'/></font><font face='verdana' id='d0ci'><font size='2' id='hyym'>- привязывание политики к конкретному интерфейсу или глобально.</font></font></p><p id='pa0t' class='western' style='margin-bottom: 0.2in;'><br/></p><p id='pa0t' class='western' style='margin-bottom: 0.2in;'> </p><pre id='pe4o' class='western'><font face='verdana' id='g1y_'><font size='2' id='shg4'><b id='p2gb'>1. Определение </b></font></font><br/><font face='verdana' id='x40w'><font size='2' id='nh9o'>Определение трафика подлежащего обработке производиться с помощью конструкции class-map. </font></font><font face='verdana'><br/></font><font face='verdana' id='lp35'><font size='2' id='n9kw'>Параметров у команды достаточно много, потому просто приведу пару примеров.<br/><br/></font></font><font face='verdana' id='f0jg'><font size='2' id='dc:n'>// Определенный хост/подсеть, да и вообще всё что можно описать с помощью acl.</font></font><font face='verdana'><br/></font><font face='verdana' id='rkd_'><font size='2' id='ymn_'>// Например создадим class-map для выделения трафика определённого клиента.</font></font><br/><font face='Courier New' id='f88o'><font size='2' id='wzjw'>ciscoasa(config)# access-list web01 permit ip any host 10.10.12.2 log</font></font><font face='Courier New'><br/></font><font face='Courier New' id='rt_b'><font size='2' id='opql'>ciscoasa(config)# class-map cmap_web01</font></font><font face='Courier New'><br/></font><font face='Arial, sans-serif' id='eou6'><font size='2' id='j-lu'><font face='Courier New'>ciscoasa(config-cmap)# match access-list web01<br/></font><font face='verdana'><br/></font></font></font><font face='verdana' id='i40s'><font size='2' id='wi53'>// class-map отлавливающий весь проходящий http трафик</font></font><br/><font face='Courier New' id='qmxv'><font size='2' id='z359'>ciscoasa(config)# class-map cmap_http</font></font><font face='Courier New'><br/></font><font face='Arial, sans-serif' id='ik7s'><font size='2' id='z_tm'><font face='Courier New'>ciscoasa(config-cmap)# match port tcp eq 80</font><br/><br/></font></font><font face='verdana' id='qm9z'><font size='2' id='i:op'>Это конечно самые простые способы выделить трафик из общего потока, также можно использовать:</font></font><font face='verdana'><br/></font><font face='verdana' id='dkwc'><font size='2' id='lag8'>- <a href='http://en.wikipedia.org/wiki/DiffServ_Code_Point'>DSCP</a>;</font></font><font face='verdana'><br/></font><font face='verdana' id='qocg'><font size='2' id='ceil'>- <a href='http://en.wikipedia.org/wiki/Real-time_Transport_Protocol'>RTP</a>;</font></font><font face='verdana'><br/></font><font face='verdana' id='g3no'><font size='2' id='dng_'>- tunnel-group, выделяет трафик относящийся к определенному vpn-туннелю;</font></font><font face='verdana'><br/></font><font face='verdana' id='sldk'><font size='2' id='d6x3'>- весь трафик;</font></font><font face='verdana'><br/></font><font face='Arial, sans-serif' id='et_m'><font size='2' id='lg3e'><font face='verdana'>... и некоторые другие</font><br/><br/><br/></font></font><font face='verdana' id='s:im'><font size='2' id='h8o2'><b id='fiu9'>2. Время действий. Обрабатываем трафик</b></font></font><font face='verdana' id='d_0l'><font size='2' id='v4r9'>.</font></font><font face='verdana'><br/></font><font face='verdana' id='y.o.'><font size='2' id='i:yr'>Самый интересный пожалуй шаг. Для ранее определенного трафика можно начинать выполнять разные действия. </font></font><font face='verdana'><br/></font><font face='verdana' id='yowk'><font size='2' id='bexw'>Релизуется это с помощью политик (policy-map), в рамках которой для каждого вышеопределенного class-map <br id='p3lp'/>можно задавать необходимые ограничения. Каждая политика может содержать несколько class-map. </font></font><br/><font face='verdana'><br/></font><font face='verdana' id='ujah'><font size='2' id='cua9'>Начнем с простого – ограничим скорость закачки по http до 8000 bit/s.<br id='lgol'/></font></font><font face='verdana' id='clc6'><font size='2' id='zsfb'>Логично было бы создать политику для интерфейса inside и установить лимит на иходящий трафик <br/>либо политику для интерфейса outside и установить лимит на входящий трафик.<br id='nuzg'/>На деле всё иначе. <br/>Вышеуказанный лимит реализуется двумя способами: либо определить политику для интерфейса inside и установить лимит <br id='u9o1'/>на входящий трафик либо путем создания политики для интерфейса outside и установки лимита на исходящий трафик. <br id='qu.:'/>Выглядит это нелогично, согласитесь. Более того, несмотря на указанные в документации и в подсказке bit/s.я так и не <br id='juzr'/>понял, в чем указывается значение лимита. В моём случае при указании 8000 bit/s я ожидал увидеть ограничение не 8 килобайт в секунду, <br id='jgn7'/>однако wget упорно качал с скоростью около 54 килобайт в секунду. <br id='j.i.'/>Для любителей конкретики: это было проверено на двух версиях прошивки 7.23 и 8.02.</font></font><font face='verdana'><br/></font><br/><font face='verdana' id='i3l1'><font size='2' id='jc:w'>Вот так могут выглядеть примеры конфигурации:<br/><br/></font></font><font face='verdana' id='cvua'><font size='2' id='b-xc'>// Определяем политику </font></font><br/><font face='Courier New' id='mgp2'><font size='2' id='pzu3'>ciscoasa(config)# policy-map pmap_inside</font></font><br/><font face='verdana' id='i.3l'><font size='2' id='eayx'><br/>// В рамках политики выделяем class-map над которым будем производить действия, их может быть несколько.</font></font><br/><font face='Courier New' id='s.js'><font size='2' id='f97v'>ciscoasa(config-pmap)# class cmap_http</font></font><br/><font face='Arial, sans-serif' id='a4hz'><font size='2' id='d0x-'><br/><font face='verdana'>// В рамках конкретного class-map применяем действие, а данном случае лимит на 8000 bit/s.</font></font></font><br/><font face='Courier New' id='z8kw'><font size='2' id='h-hx'>ciscoasa(config-pmap-c)# police input 8000 </font></font><br/><br/><font face='verdana' id='q683'><font size='2' id='ovai'>//Аналогично для второго описанного случая</font></font><br/><font face='Courier New' id='re9p'><font size='2' id='u280'>ciscoasa(config)# policy-map pmap_outside</font></font><font face='Courier New'><br/></font><font face='Courier New' id='r7xp'><font size='2' id='v037'>ciscoasa(config-pmap)# class cmap_http</font></font><font face='Courier New'><br/></font><font face='Courier New' id='tfhd'><font size='2' id='x0bv'>ciscoasa(config-pmap-c)# police output 8000</font></font><font face='Courier New'> </font><br/><br id='r5b8'/><font id='only'><font id='lt9i'><font face='Arial, sans-serif' id='o8_i'><font size='2' id='rmnr'><font face='verdana'>Конечно же всё выяснилось. Проблема описанная выше встречается только если выделять трафик с по определённому порту. <br id='hu_q'/>В данном случае это был порт 80. Если же указать на трафик с помощью acl по адресам, всё начинает работать как и было описано в документации.</font><br/><br id='y6k3'/><font face='verdana'>//Например</font><br id='cjv1'/></font></font></font></font><font face='Courier New'><big>access-list inside_host extended permit ip any host 10.10.11.2 log<br id='qq80'/>class-map cmap_down<br id='ejlh'/> match access-list inside_host<br id='ajp0'/>policy-map pmap_outside<br id='taa-'/> class cmap_down<br id='gg3j'/> police input 8000<br id='pyhk'/>service-policy pmap_outside interface outside</big><br id='c5n8'/></font><br/><font face='verdana'>Действительно устанавливается лимит на 1 килобит. <br id='wu67'/><br id='oom3'/><font face='verdana'> </font></font><font face='verdana' id='o8_i'><font size='2' id='rmnr'>В качестве примера манипуляций с TCP/IP приведу пример уже знакомый постоянным читателям блога. </font></font><font face='verdana'><br/></font><font face='verdana' id='afeq'><font size='2' id='te1i'><a href='http://techoover.blogspot.com/2007/12/nat-pixasa.html'>В заметке о конфигурации NAT </a> я рассказывал как firewall может</font></font><font face='verdana'><br/></font><font face='verdana' id='aozv'><font size='2' id='etfp'>бороться с SYN-flood атаками перехватывая сессии до полной завершения установки соединения. </font></font><font face='verdana'><br/></font><font face='verdana' id='h5gs'><font size='2' id='oz5t'>Проведем те же манипуляции, только обойдемся без NAT, который нужен далеко не всегда.</font></font><font face='verdana'><font face='verdana'><br/></font><br/></font><font face='verdana' id='hzf2'><font size='2' id='aej1'>// Включение перехвата установки соединений, для всего трафика определённого в class-map cmap_BigClient</font></font><br/><font face='Courier New' id='s2cn'><font size='2' id='cciw'>ciscoasa(config)# policy-map pmap_outside</font></font><font face='Courier New'><br/></font><font face='Courier New' id='ubvb'><font size='2' id='ej_d'>ciscoasa(config-pmap)# class cmap_web01</font></font><font face='Courier New'><br/></font><font face='Courier New' id='cewc'><font size='2' id='q5h.'>ciscoasa(config-pmap-c)# set connection embryonic-conn-max 1</font></font><br/><br/><font face='verdana' id='tkkr'><font size='2' id='msj3'>Фактически с помощью данного способа можно реализовать достаточно широкий функционал как <br/>различного вида лимитированием так и нормализацией потока tcp. <br/>Тема достаточно большая, возможно позже я напишу отдельную заметку по этому поводу.</font></font><font face='verdana'> <br/></font><font face='Arial, sans-serif' id='et_m'><font size='2' id='lg3e'><br/><br/><br/></font></font><font face='verdana' id='dwv3'><font size='2' id='w43s'><b id='ql8-'>3. Применение к интерфейсу</b></font></font><font face='verdana'><br/></font><font face='verdana' id='h4-.'><font size='2' id='u6u1'>Конкретная политика применяется с помощью команды service policy, синтаксис следующий:<br/><br/></font></font><font face='verdana' id='mait'><font size='2' id='m68:'>// применение политики pol_out к интерфейсу outside</font></font><br/><font face='Arial, sans-serif' id='xx5s'><font size='2' id='o_fn'><font face='Courier New'>ciscoasa(config)# service-policy pol_out interface outside</font><br/><br/></font></font><font face='verdana' id='f33q'><font size='2' id='uxmb'>Зоркий глаз опытного цисковода конечно обратит внимание, что команда по сути аналогична </font></font><font face='verdana'><br/></font><font face='verdana' id='t_kr'><font size='2' id='nyh7'>по действиям команде access-group привязывающей конкретный acl к интерфейсу.</font></font><font face='verdana'><br/></font><font face='verdana' id='qcdw'><font size='2' id='sur1'>Так это и есть, отличие в том, что политика может быть глобальной. Кроме конкретных политик для интерфейсов</font></font><font face='verdana'><br/></font><font face='verdana' id='xjax'><font size='2' id='r7s0'>существует одна, большая, для всех сразу. Конечно её можно менять по своему усмотрению.<br/><br/></font></font><font face='verdana' id='yhbn'><font size='2' id='d8.v'>// изменение глобальной политики</font></font><font face='verdana'><br/></font><font face='Courier New' id='pz1u'><font size='2' id='bf0i'>ciscoasa(config)# service-policy pol_global global<br/><br/></font></font><font face='verdana' id='rys4'><font size='2' id='ifvt'>Глобальная политика единственная, для которой существуют параметры по-умолчанию. </font></font><br/><font face='verdana'><big><br id='dkw:'/></big><font face='verdana'><big><font face='verdana'>Нераскрытой осталась тема фильтрации трафика на более высоких уровнях модели OSI, так называемый application<br id='w-0e'/>inspection. Это отдельная большая тема, хотя команды конфигурирования похожи. </font></big><br/></font></font><font face='Arial, sans-serif' id='et_m'><font size='2' id='lg3e'><br/></font></font></pre></div>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com4tag:blogger.com,1999:blog-2333148333771997943.post-47178686975945841272008-02-05T09:51:00.000+01:002008-02-05T10:18:31.214+01:00Немного о правах<span style="font-family:verdana;">Краткая заметка о настройке </span><span class="misspell" suggestions="" style="font-family:verdana;">AAA</span><span style="font-family:verdana;"> на устройствах PIX/ASA.</span><br /><span style="font-family:verdana;">Зачем это нужно расписывать не буду и так вроде очевидно. </span><br /><br /><span style="font-weight: bold;font-family:verdana;" >0. Официальная документация</span><br /><a href="http://cisco.com/en/US/docs/security/asa/asa80/configuration/guide/fwaaa.html"><span style="font-family:verdana;">http://cisco.com/en/US/docs/security/asa/asa80/configuration/guide/fwaaa.html</span></a><br /><br /><span style="font-weight: bold;font-family:verdana;" >1. Необходимый минимум. Простейшая аутентификация.</span><br /><span style="font-family:verdana;">Минимальная настройка которая необходима как минимум для удаленного захода, например по </span><span class="misspell" suggestions="" style="font-family:verdana;">ssh</span><span style="font-family:verdana;"> или с помощью </span><span class="misspell" suggestions="" style="font-family:verdana;">ASDM</span><span style="font-family:verdana;">.</span><br /><span style="font-family:verdana;">По-сути это должны быть одни из первых команд на новой железяке.</span><br /><br /><span style="font-family:verdana;">//создаем пользователя</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">username</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">admin</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">password</span><span style="font-family:courier new;"> superpuper</span><br /><br /><span style="font-family:verdana;">//Разрешаем необходимый доступ - </span><span class="misspell" suggestions="" style="font-family:verdana;">ssh</span><span style="font-family:verdana;"> и http. </span><br /><span style="font-family:verdana;">// В данном случае открывается доступ для </span><span class="misspell" suggestions="Коста,холста,хвоста,хота,оста" style="font-family:verdana;">хоста</span><span style="font-family:verdana;"> 10.2.1.10 находящегося в </span><span class="misspell" suggestions="" style="font-family:verdana;">inside</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">ssh</span><span style="font-family:courier new;"> 10.2.1.10 255.255.255.255 </span><span class="misspell" suggestions="" style="font-family:courier new;">inside</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# http 10.2.1.10 255.255.255.255 </span><span class="misspell" suggestions="" style="font-family:courier new;">inside</span><br /><br /><span style="font-family:verdana;">Далее необходимо сообщить firewall каким образом обрабатывать запросы аутентификации. </span><br /><span style="font-family:verdana;">Для этого можно использовать внешние сервера, но в минимальной конфигурации без этого можно обойтись.</span><br /><br /><span style="font-family:verdana;">// указываем где искать пароли для пользователей. В данному случае локально.</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">aaa</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">authentication</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">ssh</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">console</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">LOCAL</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">aaa</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">authentication</span><span style="font-family:courier new;"> http </span><span class="misspell" suggestions="" style="font-family:courier new;">console</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">LOCAL</span><br /><span style="font-family:verdana;"></span><span style="font-family:verdana;"></span><br /><span style="font-family:verdana;">Вот и всё. Теперь появилась возможность зайти удалённо.</span><br /><span style="font-family:verdana;">Однако, для внесения изменений в конфигурацию используется </span><span class="misspell" suggestions="" style="font-family:verdana;">enable</span><span style="font-family:verdana;"> доступ. </span><br /><span style="font-family:verdana;">// Можно использовать распределённые пароль, указываемый командой </span><span class="misspell" suggestions="" style="font-family:verdana;">enable</span><span style="font-family:verdana;"> </span><span class="misspell" suggestions="" style="font-family:verdana;">password</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">enable</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">password</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">pupersuper</span><br /><br /><span style="font-family:verdana;">Но это не всегда удобно и совершенно не безопасно. Гораздо практичнее каждому пользователю использовать свой пароль.</span><br /><span style="font-family:verdana;">Чем-то это похоже на работу </span><span class="misspell" suggestions="" style="font-family:verdana;">sudo</span><span style="font-family:verdana;"> - пользователь просто вводит свой пароль еще раз.</span><br /><span style="font-family:verdana;"><br />// Использовать для </span><span class="misspell" suggestions="" style="font-family:verdana;">enable</span><span style="font-family:verdana;"> пароль пользователя, а не глобальный</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">aaa</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">authentication</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">enable</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">console</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">LOCAL</span><br /><br /><br /><span style="font-weight: bold;font-family:verdana;" >2. Необходимый минимум. Простейшая авторизация.</span><br /><span style="font-family:verdana;">В принципе для простых административных задач уровня </span><span class="misspell" suggestions="" style="font-family:verdana;">smb</span><span style="font-family:verdana;"> вышеописанного вполне хватает. </span><br /><span style="font-family:verdana;">Есть еще одна полезная функция - разделение привилегий. Например для задач мониторинга и простейшей поддержки </span><br /><br /><span style="font-family:verdana;">Разрешим пользователю </span><span class="misspell" suggestions="" style="font-family:verdana;">operator</span><span style="font-family:verdana;"> возможность просматривать некоторую статистику по активным соединениям.</span><br /><span style="font-family:verdana;">Задача разбивается на несколько шагов. </span><br /><br /><span style="font-family:verdana;">//Аналогично с аутентификацией необходимо указать как авторизовать действия пользователей.</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">aaa</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">authorization</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">command</span><span style="font-family:courier new;"> LOCAL</span><br /><br /><span style="font-family:verdana;">// Добавляем пользователя.</span><br /><span style="font-family:verdana;">// Используем необязательный параметр </span><span class="misspell" suggestions="" style="font-family:verdana;">privilege</span><span style="font-family:verdana;">. Он указывает максимальный уровень привилегий которые может получить пользователь.</span><br /><span style="font-family:verdana;">// Проводя аналогии с </span><span class="misspell" suggestions="" style="font-family:verdana;">sudo</span><span style="font-family:verdana;"> - это группа в которую включен пользователь. Отличия только в том, что старшие группы включают в себя младшие.</span><br /><span style="font-family:verdana;">// Т.е. пользователь с уровнем привилегий 6 имеет привилегии уровня 5.</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">username</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">operator</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">password</span><span style="font-family:courier new;"> 111 </span><span class="misspell" suggestions="" style="font-family:courier new;">privilege</span><span style="font-family:courier new;"> 5</span><br /><br /><span style="font-family:verdana;">Далее необходимо указать что разрешено конкретному уровню привилегий.</span><br /><span style="font-family:verdana;">Для этих целей используется команда </span><span class="misspell" suggestions="" style="font-family:verdana;">privilege</span><span style="font-family:verdana;"> с следующим синтаксисом:</span><br /><br /><span class="misspell" suggestions="" style="font-family:courier new;">privilege</span><span style="font-family:courier new;"> {show | </span><span class="misspell" suggestions="" style="font-family:courier new;">clear</span><span style="font-family:courier new;"> | </span><span class="misspell" suggestions="" style="font-family:courier new;">configure</span><span style="font-family:courier new;">} </span><span class="misspell" suggestions="" style="font-family:courier new;">level</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">level</span><span style="font-family:courier new;"> [</span><span class="misspell" suggestions="" style="font-family:courier new;">mode</span><span style="font-family:courier new;"> {</span><span class="misspell" suggestions="" style="font-family:courier new;">enable</span><span style="font-family:courier new;"> | </span><span class="misspell" suggestions="" style="font-family:courier new;">configure</span><span style="font-family:courier new;">}] </span><span class="misspell" suggestions="" style="font-family:courier new;">command</span><span style="font-family:courier new;"> command</span><br /><br /><span style="font-family:verdana;">// Разрешим пользователям с уровнем привилегий 5 просматривать текущие соединения.</span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span>(<span class="misspell" suggestions="">config</span>)# </span><span class="misspell" suggestions="" style="font-family:courier new;">privilege</span><span style="font-family:courier new;"> show </span><span class="misspell" suggestions="" style="font-family:courier new;">level</span><span style="font-family:courier new;"> 5 </span><span class="misspell" suggestions="" style="font-family:courier new;">command</span><span style="font-family:courier new;"> conn</span><br /><br /><span style="font-family:verdana;">// Теперь после ввода команды пользователем команды </span><span class="misspell" suggestions="" style="font-family:verdana;">enable</span><span style="font-family:verdana;"> и своего пароля он получит возможность использовать команду </span><br /><span style="font-family:courier new;"><span class="misspell" suggestions="">ciscoasa</span># show conn</span><br /><br /><span style="font-family:verdana;">// При вводе команды которая не разрешена получим следующий результат</span><br /><span class="misspell" suggestions="" style="font-family:courier new;">ciscoasa</span><span style="font-family:courier new;"># show </span><span class="misspell" suggestions="" style="font-family:courier new;">xlate</span><span style="font-family:courier new;"> </span><br /><span style="font-family:courier new;"> ^</span><br /><span class="misspell" suggestions="" style="font-family:courier new;">ERROR</span><span style="font-family:courier new;">: % </span><span class="misspell" suggestions="" style="font-family:courier new;">Invalid</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">input</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">detected</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">at</span><span style="font-family:courier new;"> '^' </span><span class="misspell" suggestions="" style="font-family:courier new;">marker</span><span style="font-family:courier new;">.</span><br /><span class="misspell" suggestions="" style="font-family:courier new;">ERROR</span><span style="font-family:courier new;">: </span><span class="misspell" suggestions="" style="font-family:courier new;">Command</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">authorization</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">failed</span><br /><br /><span style="font-family:verdana;">Привилегии не ограничиваются только просмотром. Можно дать возможность вносить изменения в конфигурацию.</span><br /><br /><span style="font-family:verdana;">// разрешим той же группе пользователей изменять таблицу </span><span class="misspell" suggestions="" style="font-family:verdana;">рутинга</span><br /><span class="misspell" suggestions="" style="font-family:courier new;">ciscoasaconfig</span><span style="font-family:courier new;">)# </span><span class="misspell" suggestions="" style="font-family:courier new;">privilege</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">configure</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">level</span><span style="font-family:courier new;"> 5 </span><span class="misspell" suggestions="" style="font-family:courier new;">command</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">route</span><span style="font-family:courier new;"> </span><br /><span class="misspell" suggestions="" style="font-family:courier new;">ciscoasaconfig</span><span style="font-family:courier new;">)# </span><span class="misspell" suggestions="" style="font-family:courier new;">privilege</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">configure</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">level</span><span style="font-family:courier new;"> 5 </span><span class="misspell" suggestions="" style="font-family:courier new;">command</span><span style="font-family:courier new;"> configure</span><br /><br /><br /><span style="font-family:verdana;">// Для просмотра текущего уровня привилегий предназначена соответствующая команда show</span><br /><span class="misspell" suggestions="" style="font-family:courier new;">ciscoasa</span><span style="font-family:courier new;"># show </span><span class="misspell" suggestions="" style="font-family:courier new;">curpriv</span><span style="font-family:courier new;"> </span><br /><span class="misspell" suggestions="" style="font-family:courier new;">Username</span><span style="font-family:courier new;"> : </span><span class="misspell" suggestions="" style="font-family:courier new;">operator</span><br /><span class="misspell" suggestions="" style="font-family:courier new;">Current</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">privilege</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">level</span><span style="font-family:courier new;"> : 5</span><br /><span class="misspell" suggestions="" style="font-family:courier new;">Current</span><span style="font-family:courier new;"> </span><span class="misspell" suggestions="" style="font-family:courier new;">Mode</span><span style="font-family:courier new;">/s : P_</span><span class="misspell" suggestions="" style="font-family:courier new;">PRIV</span><br /><br /><br /><span style="font-family:verdana;">В случае если устройств больше чем одно либо </span><span id="bad_word" class="misspell" suggestions="" style="font-family:verdana;">пользователей</span><span style="font-family:verdana;"> достаточно много применение локальной базы представляется нецелесообразным. </span><br /><span style="font-family:verdana;">В этом случае можно указать устройству </span><span class="misspell" suggestions="" style="font-family:verdana;">обращаться</span><span style="font-family:verdana;"> к серверам </span><span class="misspell" suggestions="" style="font-family:verdana;">ААА</span><span style="font-family:verdana;"> за информацией. Но об этом в следующих постах.</span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com2tag:blogger.com,1999:blog-2333148333771997943.post-2310255257549866422008-01-23T10:31:00.000+01:002008-01-23T10:55:47.468+01:00Много-в-одном<span style="font-family:verdana;">Среди множества возможностей устройств PIX/ASA есть довольно интересные. Одна из таких - разделение одного физического firewall на несколько виртуальных. Количество, собственно, зависит от приобретенной лицензии. Т.е. прямой зависимости между мощностью железяки и количеством виртуальных firewall нет. Конечно есть табличка в которой примерно обозначены рекомендуемые нагрузки для каждой модели из серии, но всё же это больше зависит от количества денег. </span><br /><span style="font-family:verdana;">Допустимое количество контекстов можно увидеть с помощью команды show version.</span><br /><br /><b><span style="font-family:verdana;">0. Официальная документация</span><br /></b><a href="http://www.cisco.com/en/US/docs/security/asa/asa80/configuration/guide/contexts.html">http://www.cisco.com/en/US/docs/security/asa/asa80/configuration/guide/contexts.html</a><br /><br /><b style="font-family: verdana;">1. А зачем?<br /></b><span style="font-family:verdana;">В терминологии Cisco виртуальные firewall называются контекстами. В дальнейшем будем использовать именно эту терминологию. Режимы работы называются соответственно одноконтекстный и мультиконтекстный. Посмотреть текущий режим можно командой showmode. В режиме поддержки виртуальных firewall не поддерживаются некоторые возможности: </span><br /><span style="font-family:verdana;">- динамические протоколы маршрутизации;</span><br /><span style="font-family:verdana;">- виртуальные частные сети;</span><br /><span style="font-family:verdana;">- мультикаст рутинг;</span><br /><span style="font-family:verdana;">- обнаружение угроз (сканирование портов, TCP SYN flood, прочие).</span><br /><br /><span style="font-family:verdana;">Как видно многие приятные и удобные функциональные возможности становятся недоступными в мультиконтекстном режиме. Что же заставляет пользователей выбирать этот режим работы? Сама компания Cisco Отвечает на это вопрос следующим образом видит такие сферы применения:</span><br /><span style="font-family:verdana;">- сервисный провайдер который предлагает дополнительные услуги своим клиентам. Вплоть до отдачи управления виртуальным firewall;</span><br /><span style="font-family:verdana;">- большое предприятие либо студенческий кампус, желающий разделять трафик различных подразделений;</span><br /><span style="font-family:verdana;">- большое предприятие использующее различные политики безопасности для разных департаментов.<br /><br /></span><b style="font-family: verdana;">2. Что внутри?</b><br /><span style="font-family:verdana;">Переходим от маркетинга к практике. Контексты бывают трех видов:</span><br /><span style="font-family:verdana;">- системный</span><br /><span style="font-family:verdana;">Системное пространство в котором создаются виртуальные контексты и задаются их параметры. Здесь же настраиваются ассоциации интерфейсов с пользовательскими контекстами. Не имеет никакой сетевой конфигурации и не может использоваться как обычный контекст. При необходимости доступа к сетевым ресурсам использует административный контекст.</span><br /><span style="font-family:verdana;">- административный</span><br /><span style="font-family:verdana;">Полноценный виртуальный firewall, но используется в основном для управления физическим устройствам и остальными контекстами. Может использоваться как обычный контекст, но не рекомендуется его использование как пользовательского поскольку пользователь имеющий права доступа к административному контексту по сути имеет права для доступа к любому другому.</span><br /><span style="font-family:verdana;">- пользовательский</span><br /><span style="font-family:verdana;">Собственно то ради чего всё это и затевалось. Полноценный виртуальный firewall с отдельной политикой безопасности и выделенными интерфейсами.</span><br /><span style="font-family:verdana;">Практически всё что может быть настроено на физическом устройстве в одноконтекстном режиме может быть настроено в данном виртуальном.</span><br /><br /><span style="font-family:verdana;">Каждый пакет поступающий на интерфейсы физического устройства необходимо классифицировать для определения в какой именно виртуальный firewall его отправить. В случае если интерфейс закреплен только за одним виртуальным firewall это проблем не вызывает. Однако при использовании разделенных интерфейсов возникает дополнительная обработка с своими правилами. </span><br /><span style="font-family:verdana;">Для определения контекста назначения используется специальный классификатор занимающийся определением. В случае разделенных интерфейсов классификатор зачастую не может однозначно определить пункт назначения, однако предусмотрен ряд "подсказок" помогающий определить где находятся искомые сети.</span><br /><span style="font-family:verdana;">- уникальные МАС-адреса</span><br /><span style="font-family:verdana;">Есть возможность назначить одному интерфейсу разные МАС адреса в пределах одного контекста. Также можно использовать команду mac-address auto для автоматического назначения адресов.</span><br /><span style="font-family:verdana;">- NAT<br /></span><span style="font-family:verdana;">Может использоваться как конфигурация с</span><span style="background-color: rgb(255, 255, 255);font-family:verdana;" ><a href="http://techoover.blogspot.com/2007/12/nat-pixasa.html"> nat/global так и обыкновенный static</a><span style="text-decoration: underline;">,</span> </span><span style="font-family:verdana;">ожидаемо, что в первом случае входящие соединения будут невозможны.</span><br /><span style="font-family:verdana;"><br /></span><b style="font-family: verdana;">3</b><b style="font-family: verdana;">. Рассмотрим пример</b><br /><span style="font-family:verdana;">В качестве примера выбрана типичная конфигурация с общим (разделенным) внешним интерфейсом и уникальными внутренними. Два клиента А и В, у клиента А также присутствуетweb-сервер для которого решено организовать демилитаризованную зону. </span><br /><span style="font-family:verdana;">Итак существующие интерфейсы:</span><br /><span style="font-family:verdana;">ethernet 0/0 - admin_outside - 10.10.3.1/26</span><br /><span style="font-family:verdana;">ethernet 0/0 - outsideA - 10.10.3.129/26</span><br /><span style="font-family:verdana;">ethernet 0/0 - outsideB - 10.10.3.65/26</span><br /><span style="font-family:verdana;">ethernet 0/1.11 - dmzA - 10.1.1.1/24</span><br /><span style="font-family:verdana;">ethernet 0/2.21 - insideA - 10.2.1.1/24</span><br /><span style="font-family:verdana;">ethernet 0/2.22 - insideB - 10.2.2.1/24</span><br /><br /><br /><span style="font-weight: bold;font-family:verdana;" >3.1. Внимание! Переключаю!</span><br /><br /><span style="font-family:verdana;">Первым делом необходимо изменить режим функционирования устройства с помощью команды mode <режим></span><br /><br /><span style="font-family:courier new;">ciscoasa(config)# mode multiple </span><br /><span style="font-family:courier new;">WARNING: This command will change the behavior of the device</span><br /><span style="font-family:courier new;">WARNING: This command will initiate a Reboot</span><br /><span style="font-family:courier new;">Proceed with change mode? [confirm] </span><br /><span style="font-family:courier new;">Convert the system configuration? [confirm]</span><br /><br /><span style="font-family:verdana;">При переходе в другой режим работы железяка предлагает сконвертировать конфигурацию в новый режим. При этом настройки всех интерфейсов активных в обычном режиме будут перенесены без изменений в административный контекст. Т.е. операцию можно проводить удалённо, потери соединения не будет. В данном случае при подготовке к миграции была удалена вся конфигурация кроме конфигурации интерфейса ethernet 0/0 который в дальнейшем будет выполнять роль разделенного outside. После перезагрузки и миграции конфигурации:<br /><br /></span><span style="font-family:courier new;">$ ssh admin@10.10.3.1</span><br /><span style="font-family:courier new;">admin@10.10.3.1's password: </span><br /><span style="font-family:courier new;">Type help or '?' for a list of available commands.</span><br /><span style="font-family:courier new;">ciscoasa/admin> en</span><br /><span style="font-family:courier new;">Password: </span><br /><span style="font-family:courier new;">ciscoasa/admin# </span><br /><br /><span style="font-family:verdana;">Первым визуальным признаком работы в мультиконтекстном режиме является измененный вид приглашения, кроме hostname отображается название текущего контекста. Также режим работы можно просмотреть с помощью команды show mode:<br /><br /></span> <span style="font-family:courier new;">ciscoasa/admin# sh mode </span><br /><span style="font-family:courier new;"> Security context mode: multiple<br /><br /></span><span style="font-weight: bold;font-family:verdana;" >3.2. Системный контекст</span><br /><br /><span style="font-family:verdana;">Для перехода между контекстами используется команда changeto context <имя контекста>. Как упоминалось раньше создание сабинтерфейсов и ассоциация их с виртуальными firewall выполняется из системного контекста. Переходим в него и создаем интерфейсы описанные выше.</span><br /><br /><span style="font-family:courier new;">ciscoasa/admin# changeto system<br />ciscoasa# conf t</span><br /><span style="font-family:courier new;">ciscoasa(config)# interface ethernet 0/1.11</span><br /><span style="font-family:courier new;">ciscoasa(config-subif)# vlan 11</span><br /><span style="font-family:courier new;">ciscoasa(config-subif)# description DMZ for customer A<br />ciscoasa(config-subif)# no sh</span><br /><span style="font-family:courier new;">ciscoasa(config-subif)# exit</span><br /><span style="font-family:courier new;">ciscoasa(config)# interface ethernet 0/2.21<br />ciscoasa(config-subif)# vlan 21</span><br /><span style="font-family:courier new;">ciscoasa(config-subif)# description inside for customer A<br />ciscoasa(config-subif)# no sh</span><br /><span style="font-family:courier new;">ciscoasa(config-subif)# exit</span><br /><span style="font-family:courier new;">ciscoasa(config)# interface ethernet 0/2.22<br />ciscoasa(config-subif)# vlan 22<br />ciscoasa(config-subif)# description inside for customer B<br />ciscoasa(config-subif)# no sh</span><br /><span style="font-family:courier new;">ciscoasa(config-subif)# exit</span><br /><span style="font-style: italic;font-family:verdana;" ></span><br /><br /><span style="font-family:verdana;">Переходим к активной фазе - создаем контексты и ассоциируем их с виртуальными устройствами. </span><br /><span style="font-family:verdana;">Команды выполняются из системного контекста. </span><br /><br /><span style="font-family:verdana;">/<span style="font-family:verdana;">/Создадим контексты</span><br /></span><span style="font-family:courier new;">ciscoasa(config)# context CustA</span><br /><span style="font-family:courier new;"> Creating context 'CustA'... Done. (2)</span><br /><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# context CustB</span><br /><span style="font-family:courier new;"> Creating context 'CustB'... Done. (3)</span><br /><br /><span style="font-family:verdana;">// Необходимо указать где хранить конфигурацию контекста. Для этого служит команда config-url. Параметры достаточно разнообразны - tftp, http, прочие.</span><br /><span style="font-family:verdana;">// В данном случае будем хранить конфигурацию на flash. При указании конфига firewall пытается его загрузить. Если не находит пытается создать.</span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# config-url flash:/CustA.cfg</span><br /><span style="font-family:courier new;"> INFO: Converting flash:/CustA.cfg to disk0:/CustA.cfg</span><br /><span style="font-family:courier new;">WARNING: Could not fetch the URL disk0:/CustA.cfg</span><br /><span style="font-family:courier new;"> INFO: Creating context with default config</span><br /><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# config-url flash:/CustB.cfg</span><br /><span style="font-family:courier new;"> INFO: Converting flash:/CustB.cfg to disk0:/CustB.cfg</span><br /><span style="font-family:courier new;">WARNING: Could not fetch the URL disk0:/CustB.cfg</span><br /><span style="font-family:courier new;"> INFO: Creating context with default config<br /><br /></span><br /><span style="font-family:verdana;">// Следующий шаг - ассоциация созданных интерфейсов. Необходима команда - allocate-interface <физический интерфейс> <виртуальное имя>.</span><br /><span style="font-family:verdana;">// Дополнительным параметром invisible/visible можно указать будет ли физическое имя интерфейса видно из виртуального контекста. </span><br /><span style="font-family:verdana;">// Например, в данном случае нет никакого желания, чтобы пользователь видел номер его vlan. Значение по-умолчанию invisible.</span><br /><br /><span style="font-family:courier new;">ciscoasa(config)# context CustA</span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# allocate-interface Ethernet0/0 outside </span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# allocate-interface Ethernet0/1.11 dmzA </span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# allocate-interface Ethernet0/2.21 insideA</span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# exit</span><br /><span style="font-family:courier new;">ciscoasa(config)# context CustB</span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# allocate-interface Ethernet0/0 outside </span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# allocate-interface Ethernet0/2.22 insideB</span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# exit</span><br /><br /><br /><span style="font-family:verdana;">Проверить текущую конфигурацию можно командой show context. В данном случае видно какие контексты созданы и какие интерфейсы им выделены.</span><br /><br /><span style="font-family:courier new;">ciscoasa# sh context </span><br /><span style="font-family:courier new;">Context Name Class Interfaces URL</span><br /><span style="font-family:courier new;">*admin default Ethernet0/0 disk0:/admin.cfg</span><br /><span style="font-family:courier new;"> CustA default Ethernet0/0,Ethernet0/1.11, disk0:/CustA.cfg</span><br /><span style="font-family:courier new;"> Ethernet0/2.21 </span><br /><span style="font-family:courier new;"> CustB default Ethernet0/0,Ethernet0/2.22 disk0:/CustB.cfg</span><br /><br /><span style="font-family:courier new;">Total active Security Contexts: 3<br /><br /></span><span style="font-weight: bold;font-family:verdana;" >3.3. Конфигурация виртуальных контекстов</span><br /><br /><span style="font-family:verdana;">Настройка сетевой конфигурации в контексте CustA.</span><br /><br /><span style="font-family:courier new;">ciscoasa/CustA# conf t</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config)# int outside </span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# nameif outside</span><br /><span style="font-family:courier new;">INFO: Security level for "outside" set to 0 by default.</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# ip address 10.10.3.2 255.255.255.0</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# no sh</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# exit</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config)# int insideA </span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# security-level 100</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# nameif insideA</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# ip addre 10.2.1.1 255.255.255.0</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# no sh</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# exit</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config)# int dmzA </span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# nameif dmzA </span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# security-level 50</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# ip addre 10.1.1.1 255.255.255.0</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# no sh</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config-if)# exit</span><br /><br /><span style="font-family:verdana;">// При такой конфигурации работать ничего не будет. Необходимо перейти в системный контекст и настроить уникальные адреса</span><br /><span style="font-family:courier new;">ciscoasa(config)# mac-address auto<br /><br /></span><span style="font-family:verdana;">// Исходящий трафик благополучно уходит. Подобного же эффекта можно добится с помощью команд NAT в контексте CustA.</span><br /><span style="font-family:courier new;">ciscoasa/CustA# conf t</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config)# global (outside) 1 interface</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config)# nat (dmzA) 1 10.1.1.0 255.255.255.0</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config)# nat (insideA) 1 10.2.1.0 255.255.255.0</span><br /><br /><span style="font-family:verdana;">// Для почтового сервера находящегося в dmzA необходимо установить статическую трансляцию</span><br /><span style="font-family:verdana;">static (dmzA,outside) 10.10.3.130 10.1.1.2 netmask 255.255.255.255</span><br /><br /><span style="font-family:verdana;">// Если в dmz находятся хосты с реальными адресами на интерфейсах можно поступить следующим образом.</span><br /><span style="font-family:courier new;">ciscoasa/CustA(config)# static (dmzA,outside) 100.100.100.0 100.100.100.0 netmask 255.255.255.0</span><br /><br /><span style="font-weight: bold;font-family:verdana;" >3.4. "Вам не положено!". Кратко и лимитах.</span><br /><br /><span style="font-family:verdana;">Для каждого виртуального контекста есть возможность задавать лимиты различного типа. Например ограничение на количество сессий ssh или ASDM.</span><br /><span style="font-family:verdana;">Также интересным вариантом может быть ограничение на количество осуществленных трансляций, соединений внутренних хостов. Указывать можно в абсолютных величинах либо в процентном отношении.</span><br /><span style="font-family:verdana;">Конфигурируется это достаточно просто. </span><br /><span style="font-family:verdana;">// Для начала надо создать класс обслуживания. </span><br /><span style="font-family:courier new;">ciscoasa(config)# class bronze</span><br /><br /><span style="font-family:verdana;">// Введем некоторые ограничения. Например не более двух сессий ssh.</span><br /><span style="font-family:courier new;">ciscoasa(config-class)# limit-resource ssH 2</span><br /><br /><span style="font-family:verdana;">// Применим к определенному контексту</span><br /><span style="font-family:courier new;">ciscoasa(config)# context CustA</span><br /><span style="font-family:courier new;">ciscoasa(config-ctx)# member bronze</span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com4tag:blogger.com,1999:blog-2333148333771997943.post-67791765339894044202007-12-11T07:03:00.001+01:002007-12-11T07:11:46.841+01:00Настройка NAT на устройствах PIX/ASA<span style="font-family:verdana;"> Настройка NAT на устройствах PIX/ASA</span><br /><br /><br /><b style="font-family: verdana;">Терминология</b><br /><span style="font-family:verdana;">global_IP - адрес в который будет осуществляться трансляция</span><br /><span style="font-family:verdana;">real_ip - оригинальный адрес, подлежащий переписыванию</span><br /><span style="font-family:verdana;">real_ifc - интерфейс на который приходят оригинальные пакеты подлежащие трансляции</span><br /><span style="font-family:verdana;">global_ifc - интерфейс который будет использован для дальшейшей маршрутизации транслированного пакета</span><br /><br /><b style="font-family: verdana;">Static<br /></b><span style="font-family:verdana;">Неудивительно и вполне ожидаемо, что для конфигурирования статических трансляций используется команда static имеющая следующий синтаксис:</span><br /><br /><span style="font-family:courier new;">PIX(config)# static (real_ifc,global_ifc) {global_ip |interface} {real_ip [netmask mask]} </span><br /><br /><b style="font-family: verdana;">Static </b><b style="font-family: verdana;">NAT</b><br /><span style="font-family:verdana;">Классический НАТ один к одному используется в тех случаях когда необходима реальная трансляция, маппинг, адреса.</span><br /><span style="font-family:courier new;">PIX(config)# static (inside,outside) global_IP real_IP netmask 255.255.255.255</span><br /><br /><span style="font-family:verdana;">Т.е. если у нас реальный адрес на интерфейсе хоста во внутренней сети 10.10.10.10, а провайдер нам выделил пул из адресов 192.168.100.0/24 мы можем обеспечить доступность хоста снаружи введя команду</span><br /><span style="font-family:courier new;">PIX(config)# static (inside,outside) 192.168.100.10 10.10.10.10 netmask 255.255.255.255</span><br /><span style="font-family:verdana;">Всё что приходит на адрес 192.168.100.10 будет передаваться на хост с адресом 10.10.10.10.<br /><br /></span><b style="font-family: verdana;">Static </b><b style="font-family: verdana;">PAT</b><br /><span style="font-family:verdana;">Сюда же относиться и просто проброс порта, называемый обычно PAT, да и показываемый в по sh xlate тоже РАТ. Используеться в тех случаях когда необходимо обеспечить доступность снаружи только по некоторым портам. Допустим для почтового сервера.</span><br /><span style="font-family:courier new;">PIX(config)# static (inside,outside) tcp 192.168.100.10 smtp 10.10.10.10 smtp netmask 255.255.255.255</span><br /><br /><span style="font-family:verdana;">Также может быть полезно в случае, если сервисов больше чем реальных адресов. Ничего не мешает пробросить порт и на веб-сервер.</span><br /><span style="font-family:courier new;">PIX(config)# static (inside,outside) tcp 192.168.100.10 www 10.10.10.11 www netmask 255.255.255.255<br /><br /></span><b style="font-family: verdana;">Dynamic<br /></b><b style="font-family: verdana;">Dynamic </b><b style="font-family: verdana;">NAT<br /></b><span style="font-family:verdana;">Определяется пул адресов для которых будет проводиться трансляция и пул в которые она будет проводиться.</span><br /><span style="font-family:verdana;">Трансляция просиходит один к одному, т.е. каждый хост inside хост имеет монопольное право на один адрес из global_IP диапазона. Соответственно если global_IP <><br /><br /><span style="font-family:verdana;">Определяем, что будем транслировать (real_IP):</span><br /><br /><span style="font-family:courier new;">PIX(config)# nat (real_ifc) nat_id real_ip [mask]</span><br /><span style="font-family:courier new;">PIX(config)# nat (inside) 1 10.10.10.0 255.255.255.0</span><br /><br /><span style="font-family:verdana;">Во что будем транслировать (global_IP):</span><br /><br /><span style="font-family:verdana;">PIX(config)# global (global_ifc) nat_id global_ip[-global_ip] [netmask global_mask]</span><br /><span style="font-family:verdana;">PIX(config)# global (outside) 1 192.168.100.20-192.168.100.121 </span><br /><br /><span style="font-family:verdana;">Вот такая нехитрая конфигураци позволяет получить доступ в внешнюю сеть первым 100 хостам из сети 10.10.10.0/24 :)</span><br /><span style="font-family:verdana;">Зачастую этот тип трансляции используется в том случае если протокол более высокого уровня не поддерживает работу через PAT.</span><br /><br /><br /><b style="font-family: verdana;">Dynamic </b><b style="font-family: verdana;">PAT<br /></b><span style="font-family:verdana;">То что в Linux называется маскарадинг. Ситуация когда несколько внутренних хостов используют один, либо несколько, глобальных адресов для выхода в внешнюю сеть..</span><b style="font-family: verdana;"><br /></b><br /><span style="font-family:verdana;">Определяем, что будем транслировать (real_IP):</span><br /><span style="font-family:courier new;"> PIX(config)# nat (real_ifc) nat_id real_ip [mask]</span><br /><br /><span style="font-family:verdana;">В данном случае мы будем выпускать "в мир" всё ту же многострадальную сеть - 10.10.10.0/24. Это наши настоящие (real_IP) адреса на интерфейсах внутренних хостов.</span><br /><span style="font-family:courier new;"> PIX(config)# nat (inside) 1 10.10.10.0 255.255.255.0</span><br /><br /><span style="font-family:verdana;">Транслироваться всё это будет в один адрес global_IP: </span><br /><span style="font-family:courier new;">PIX(config)# global (outside) 1 192.168.100.130</span><br /><br /><span style="font-family:verdana;">Однако, зачастую интерфейсов на нашем firewall чем два, возможно остальным тоже необходимо получать доступ?</span><br /><span style="font-family:verdana;">Добавляем правило трансляции для еще одного интерфейса, необходимо использовать такой же nat-id.</span><br /><span style="font-family:courier new;"> PIX(config)# nat (inside2) 1 10.10.11.0 255.255.255.0</span><br /><br /><span style="font-family:verdana;">Теперь хосты из двух подсетей 10.10.10.0/24 и 10.10.11.0/24 видны как один адрес 192.168.100.130.</span><br /><br /><span style="font-family:verdana;">Теперь вполне возможна ситуация, когда лимитов на соединение (около 64 тысяч) будет уже не хватать. </span><br /><span style="font-family:verdana;">Есть возможность выделить еще несколько адресов для РАТ.</span><br /><span style="font-family:courier new;">PIX(config)# global (outside) 1 192.168.100.12</span><br /><span style="font-family:courier new;"> PIX(config)# global (outside) 1 192.168.100.13</span><br /><b style="font-family: verdana;"><br /></b><span style="font-family:verdana;">Есть возможность ипользовать адрес интерфейса, для РАТ трансляции. </span><br /><span style="font-family:verdana;"> PIX(config)# global (outside) 1 interface</span><br /><b style="font-family: verdana;"><br /></b><span style="font-family:verdana;">Также для определения адресов подлежащих трансляции можно пользоваться acl. </span><br /><span style="font-family:verdana;">В примере ниже разрешена трансляция адресов сети 10.10.10.0/24 в адрес outside интерфейса с помощью acl в том случае если адрес назначения сеть 10.10.100.0/24</span><br /><br /><span style="font-family:courier new;"> PIX(config)# access-list someflow permit ip 10.10.10.0 255.255.255.0 10.10.100.0 255.255.255.0</span><br /><span style="font-family:courier new;"> PIX(config)# nat (inside) 1 access-list someflow</span><br /><span style="font-family:courier new;"> PIX(config)# global (outside) 1 interface</span><br /><b style="font-family: verdana;"><br /></b><span style="font-family:verdana;">Это не так очевидно, посему особо отмечу: конфигурация NAT от PAT отличается только способом указания global_IP.В первом случае указывается диапазон, во втором отдельные адреса.</span><br /><span style="font-family:verdana;">nat-id варьируеться от 1 до 2,147,483,647 т.е. можно использовать разные правила трансляции для различных интерфейсов, PIX/ASA различает их по nat-id.<br /><br /></span><b style="font-family: verdana;">Policy NAT</b><br /><span style="font-family:verdana;">Используется в случае необходимости нелинейно транслировать адреса, например в зависимости от адреса назначения. Например адреса внутренней сети 10.10.10.0/24 могут быть транслированы в 192.168.100.12 при обращении к сети 10.11.10.0 и в 192.168.100.13 при обращении к 10.12.10.0</span><br /><br /><span style="font-family:courier new;"> PIX(config)# access-list someflowA permit ip 10.10.10.0 255.255.255.0 10.11.10.0 255.255.255.0</span><br /><span style="font-family:courier new;"> PIX(config)# access-list someflowB permit ip 10.10.10.0 255.255.255.0 10.12.10.0 255.255.255.0</span><br /><span style="font-family:courier new;"> PIX(config)# nat (inside) 1 access-list someflowA</span><br /><span style="font-family:courier new;"> PIX(config)# nat (inside) 2 access-list someflowB</span><br /><span style="font-family:courier new;"> PIX(config)# global (outside) 1 192.168.100.12</span><br /><span style="font-family:courier new;"> PIX(config)# global (outside) 2 192.168.100.13</span><br /><br /><b style="font-family: verdana;">не-NAT</b><br /><span style="font-family:verdana;">Псевдонат используется в тех случаях если включен nat-control, который требует, чтобы для пакета проходящего с более защищенного интерфейса на менее защищенный (inside -> outside) существовала трансляция. В противном случае обработка пакета прекращается.</span><b style="font-family: verdana;"><br /></b><br /><b style="font-family: verdana;">Identity NAT</b><br /><span style="font-family:verdana;">Команда выглядит следующим образом</span><br /><span style="font-family:courier new;">PIX(config)# nat (real_ifc) 0 real_ip real_mask</span><br /><br /><span style="font-family:verdana;">Допустим, что в внутренней сети, например в dmz находиться сервер с реальным адресом на интерфейсе 100.100.100.100.</span><br /><span style="font-family:verdana;">В данном случае команда будет выглядеть так:</span><br /><span style="font-family:courier new;">PIX(config)# nat (dmz) 0 100.100.100.100 255.255.255.255</span><br /><br /><span style="font-family:verdana;">Необходимо обратить внимание на nat-id равный нулю и на отсутствие команды global.</span><br /><span style="font-family:verdana;">Отмечу также, что в данном случае firewall разрешит только соединения в внешнюю сеть (outbound), inbound соединения будут сброшены.</span><br /><br /><b style="font-family: verdana;">NAT Exemption</b><br /><span style="font-family:verdana;">Почти то же самое, что и Identity NAT но соединения разрешены в обе стороны. Настраивается почти так же, единственное отличие - используется acl.</span><br /><br /><span style="font-family:courier new;">PIX(config)# access-list nonat_from_dmz permit ip 100.100.100.100 255.255.255.255 any</span><br /><span style="font-family:courier new;">PIX(config)# nat (dmz) 0 access-list nonat_from_dmz</span><br /><br /></span><br /><b style="font-family: verdana;">Плюшки</b><br /><span style="font-family:verdana;">Это не все параметры имеющиеся в арсенале команд nat и static. Полный синтаксис выглядит так:</span><br /><span style="font-family:courier new;">... [norandomseq] [[tcp] max_conns [emb_limit]] [udp udp_max_conns]</span><br /><br /><span style="font-style: italic;font-family:verdana;" >norandomseq</span><br /><span style="font-family:verdana;">Включено по-умолчанию. При каждом новом соединении firewall генерирует случайный initial sequence number (ISN).</span><br /><span style="font-family:verdana;">Связано это с тем, что tcp/ip стек некоторых ОС использует предсказуемые ISN, что дает возможность злоумышленнику вклиниться в чужую сессию.</span><br /><span style="font-family:verdana;">Атака носит название </span><span style="font-family:Verdana,Arial,Helvetica;">TCP hijacking.<br />PIX/ASA использует оригинальный </span><span style="font-family:verdana;">ISN для поддержания сессис с сгенерировавшим его хостом и переписывает на сгенерированый собственноручно, для общения с хостом назначения.</span><span style="font-family:Verdana,Arial,Helvetica;"><br /></span><span style="font-family:verdana;">Протоколы используемые проверку целостности пакетов не смогут работать в таких жестоких условиях. :) Для отключения используется данный параметр.</span><br /><br /><span style="font-style: italic;font-family:verdana;" >tcp max_conns и udp udp_max_conns</span><br /><span style="font-family:verdana;">В принипе из названия всё понятно. Лимиты на количество соединений. Значения по умолчанию равны нулю - отсутствие лимитов.</span><br /><br /><span style="font-style: italic;font-family:verdana;" >emb_limit</span><br /><span style="font-family:verdana;">Удивительно полезная и нужная опция. Позволяет защитить внутренние хосты от syn-flood.</span><br /><span style="font-family:verdana;">До тех пор пока лимит не достигнут, все новые пакеты (первый syn) перенаправляються оригинальному хосту получателю.</span><br /><span style="font-family:verdana;">Как только лимит в достигнут firewall перехватывает новые пакеты, с первым syn, и отвечает иницатору соединения с syn-ack.</span><br /><span style="font-family:verdana;">В случае благополучного завершения тройного рукопожатия,получения ack от инициатора, firewall создает новое соединение с оригинальным хостом назначения.</span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com7tag:blogger.com,1999:blog-2333148333771997943.post-66318026744285474542007-12-04T20:03:00.001+01:002007-12-04T20:14:20.146+01:00uRPF loose mode<span style="font-size:100%;"><span style="font-family:verdana;">Не так давно <a href="http://techoover.blogspot.com/2007/11/unicast-reverse-path-forwarding.html">я уже писал о Unicast Reverse Path Forwarding</a> технологии и одной из отличитильных особенностей реализации была невозможность её использования при асинхронном рутинге. Связано это с тем, что проверка достижимости проводилась с помощью cef для каждого конкретного интерфейса.<br />Времена меняються! Собственно они изменились еще с версии 12.2Т IOS, просто я узнал об этом только сейчас. :)<br /><br />Итак. Старый режим, известный как uRPF, теперь называется uRPF strict mode, а новый uRPF loose mode.<br />Изменения в первую очередь касаються работы с асинхронным рутингом. Теперь проверка достижимости адреса источника осуществляется для всех интерфейсов. Другими словами неважно откуда пришел пакет, если есть дорога обратно то он легитимен.<br /></span><br /><span style="font-family:verdana;"> Настроить такое поведени можно с помощью команды </span></span><span class="content"><span style="font-size:100%;"><span style="font-family:verdana;">ip verify unicast source </span></span><span class="cKeyword"><span style="font-size:100%;"><span style="font-family:verdana;">reachable-via выполненой в контексте интерфейса.</span></span><br /><span style="font-size:100%;"><br /></span></span></span><span class="content" style="font-size:100%;"><pre><span style="font-family:courier new;">RouterA (config-if)# </span><span class="content" style="font-family:courier new;">ip verify unicast source <span class="cKeyword">reachable-via {rx|any} </span></span><span style="font-weight: bold;font-family:courier new;" class="content" ><span style="font-style: normal; font-weight: normal;">[</span></span><span class="content" style="font-family:courier new;"><span class="cKeyword">allow-default</span></span><span style="font-weight: bold;" class="content"><span style="font-style: normal; font-weight: normal;font-family:courier new;" >]</span> </span><br /></pre></span><span style="font-size:100%;"><span class="content" style="font-family:verdana;">rx - возврат к истокам. strict mode, проверять достижимость источника только для интерфейса через который пакет получен<br />any - loose mode, проверять доостижимость через любой доступный интерфейс<span style="font-style: normal; font-weight: normal;"><br /></span><span class="cKeyword">allow-default</span> - использовать ли для проверки default route<br /><br />Дополнительно loose mode отбрасывает пакеты с адресами источника:<br />- адреса зарезервированные для специального применения (0/8, 127/8);<br />- адреса предназначенные для частных сетей (RFC 1918);<br />- адреса которые рутятся в интерфейс null на рутере.<br /><br /></span></span><span class="content" style="font-family:verdana;"><span style="font-size:100%;"><br /></span><span style=";font-family:verdana;font-size:100%;" ><span style="font-weight: bold;">Легкий debug</span></span><span style="font-size:100%;"><br /></span><span style="font-size:100%;"><span style="font-family:verdana;"> Проверить "работает ли эта штуковина" можно следующими способами:<br /><br /><span style="font-family:courier new;">RouterA# show ip interface Serial1/1 | in verif</span><br /><span style="font-family:courier new;">RouterA# show ip traffic | in RPF</span><br /><br /><span class="content" style="font-family:verdana;"><span style=";font-family:verdana;font-size:85%;" ><span style="font-size:100%;">В обоих случаях можно увидеть счетчики RFP. Увеличение которых, показывает отброшенные пакеты.</span><br /></span> </span></span></span></span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0tag:blogger.com,1999:blog-2333148333771997943.post-65732997342058996612007-11-19T06:34:00.000+01:002007-11-27T00:22:04.166+01:00ASA Firewall operation<span style="font-size:100%;"><br /><span style="font-family:verdana;">Что происходит с пакетом попадающим внутрь PIX/ASA firewall, по каким параметрам принимается решение пропускать пакет дальше или нет?</span><br /><br /><span style="font-family:verdana;">Прежде всего, замечу, что минимальными требованиями к пакету являются: </span><br /><span style="font-family:verdana;">- настроеная трансляция адресов между интерфейсми. Конечно, это требование можно отключить с помощью команды no nat-control, однако поведение по умолчанию именно такое;</span><br /><span style="font-family:verdana;">- политика доступа (access-list) разрешающая доступ.</span><br /><br /><span style="font-family:verdana;">Минимальные условия это конечно здорово, но жизнь была бы слишком скучна, правда? :) </span><br /><span style="font-family:verdana;">Попробуем разобратся, что происходит на каждом шаге.</span><br /><span style="font-family:verdana;">К сожалению я не нашел подобной информации на сайте производителя. Зато под рукой оказалась замечательная книга "Cisco ASA PIX and FWSM Handbook" из которой и почерпнута это информация.<br /><br /></span></span><span style="font-family:verdana;">1. Initial Checking</span><br /><br /><span style="font-family:verdana;">Базовые проверки на целостность пакета, допустимые опции и прочее.</span><br /><span style="font-family:verdana;">Именно на этом этапе проводится проверка Reverse Path Forwarding про которую я уже <a href="http://techoover.blogspot.com/2007/11/unicast-reverse-path-forwarding.html">рассказывал</a>.</span><br /><span style="font-family:verdana;">Отмечу, что RPF будет полноценно работать только в случае спуфинга адресов между интерфейсами. В классическом случае outside - ASA - inside спуфинг на outside интерфейсе определить он не сможет.</span><br /><br /><span style="font-family:verdana;">2. Xlate lookup (outbound)</span><br /><br /><span style="font-family:verdana;">Именно сейчас проверяется одно из минимальных условий - трансляция адресов между интерфейсами. </span><br /><span style="font-family:verdana;">Совершенно неважно будет это статическая трансляция one to one или динамическая с применением overload. </span><br /><span style="font-family:verdana;">Сначала firewall попытается найти уже существующую трансляцию (можно посмотреть по show xlate), в случае неудачи пытается создать, если конечно политика это предусматривает.</span><br /><br /><span style="font-family:verdana;">Этот шаг происходит на разных этапах в случае входящего/исходящего соедининия. </span><br /><span style="font-family:verdana;">Проверка осуществляется на втором шаге в случае исходящего соединения.</span><br /><span style="font-family:verdana;">Этому есть логичное объясниение - адрес источника будет переписан и именно он должен фигурировать в дельнейших проверках (acl).</span><br /><br /><span style="font-family:verdana;">Повторюсь. Это поведение можно выключить используя no nat-control. Однако, до версии прошивки 7.1 этого сделать было нельзя.</span><br /><br /><span style="font-family:verdana;">Также именно здесь firewall проверяет такие параметры как:</span><br /><span style="font-family:verdana;">- лимиты на количество активных соединений;</span><br /><span style="font-family:verdana;">- лимиты на количество полу-открытых соединений (embryonic);</span><br /><span style="font-family:verdana;">- таймауты на соединение.<br /><br /></span><br /><span style="font-family:verdana;">3. Connection lookup</span><br /><br /><span style="font-family:verdana;">Поскольку firewall у нас "умный" и знает, что такое stateful фильтрация, ему необходимо когда-то проверять состояние соединения. Почему бы не на этом этапе? :)</span><br /><span style="font-family:verdana;">Литературы по stateful фильтрации достаточно, описывать еще раз не буду.</span><br /><br /><span style="font-family:verdana;">4. ACL lookup</span><br /><br /><span style="font-family:verdana;">Именно на этом этапе происходит что-то знакомое. Как видно из названия проверяется политика доступа - поиск соответствующего access-list</span><br /><span style="font-family:verdana;">По умолчанию никаких acl не применено. Трафик разрешен с более безопасного интерфейса на менее безопасный. Уровень безопасности определяется значением security level.</span><br /><br /><span style="font-family:verdana;">5. Xlate lookup (inbound)</span><br /><br /><span style="font-family:verdana;">Происходит та же проверка, что и на шаге 2. Но только для входящего трафика.</span><br /><br /><span style="font-family:verdana;">6. Uauth lookup</span><br /><br /><span style="font-family:verdana;">В случае если firewall используется как cut-through authentication proxy на этом шаге проверяются логин/пароль пользователя для его аутентификации.</span><br /><span style="font-family:verdana;">Если это не первое соединение инициируемое пользователем проверяется таймер аутентификации.</span><br /><br /><span style="font-family:verdana;">7. Inspection</span><br /><br /><span style="font-family:verdana;">На последнем шаге осуществляется инспекция протокола. Конкретные действия выполняемые в этом случае очень сильно зависят от инспектируемого протокола.</span><br /><span style="font-family:verdana;">Про самые интересные постараюсь рассказать в следующих заметках.</span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0tag:blogger.com,1999:blog-2333148333771997943.post-64581122033432158712007-11-06T10:32:00.001+01:002007-11-19T06:40:38.634+01:00Unicast Reverse Path Forwarding<span style="font-family:verdana;">Зачастую можно увидеть как сетевые администраторы используют традиционные списки доступа для предотвращения подделки адресов (spoofing).</span><br /><span style="font-family:verdana;">Видимо сказывается привычка выработаная с годами. :)</span><br /><br /><span style="font-family:verdana;">Тем не менее многие знают или слышали о такой штуке как Unicast Reverse Path Forwarding.</span><br /><br /><b style="font-family: verdana;">Как это работает<br /><br /></b><span style="font-family:verdana;">Для работы Unicast Reverse Path Forwarding должен быть включен cef.</span><br /><span style="font-family:verdana;">При получении пакета uRPF проверяет соответствует ли адрес источника и интерфейс через который получен пакет значениям в таблице FIB.</span><br /><span style="font-family:verdana;"> По сути выполняется обратный резолвинг адреса источника используя базу (</span><span class="content" style="font-family:verdana;">reverse lookup</span><span style="font-family:verdana;">) FIB</span><br /><br /><span style="font-family:verdana;"> Решение конечно не универсальное. Его нельзя применять в случае ассиметричного рутинга (вход по одному интерфейсу, а выход по другому).</span><br /><br /><span style="font-family:verdana;"> Подробнее можно почитать в RFC 2267.</span><br /><br /><span style="font-weight: bold;font-family:verdana;" >Настройка</span><br /><span style="font-family:verdana;"><br />Cisco IOS</span><br /><span style="font-family:verdana;"> В конфигурацию интерфейса необходимо добавить строку<br /></span><br /><span style="font-family:courier new;"> routerA(conf-if)# ip verify unicast reverse-path</span><br /><span class="content"></span><br /><span style="font-family:verdana;"> PIX/ASA</span><br /><span style="font-family:verdana;"> В режиме глобальной конфигурации необходимо выполнить команду</span><br /><strong style="font-weight: normal;"><br /><span style="font-family:courier new;"> myasa# ip verify reverse-path interface e0</span></strong><span style="font-weight: bold; font-style: italic;font-family:courier new;" ></span><em style="font-family: courier new; font-weight: bold;"></em><br /><br /><br /><b style="font-family: verdana;">Проверка состояния rpf</b><br /><p style="font-family: verdana;">В случае Cisco IOS проверить можно поискав строку относящуюся с rpf в выводе команды:<br /></p><span style="font-family:courier new;">RouterA#</span><b style="font-family: courier new;"> </b><span style="font-family:courier new;">show cef interface FastEthernet 0/0</span><span style="font-family:courier new;"><br /><span style="font-style: italic;"><skip></skip></span></span><br /><span style="font-family:courier new;">IP unicast RPF check is enabled<br /><br /></span><span style="font-family:verdana;">В случае PIX/ASA всё выглядит похоже:</span><br /><pre style="font-family: courier new;">myasa# show ip verify statistics<br />interface outside: 21 unicast rpf drops<br />interface inside: 2738 unicast rpf drops<br />interface vpn: 0 unicast rpf drops</pre>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com3tag:blogger.com,1999:blog-2333148333771997943.post-82273242545109423192007-10-11T18:52:00.001+02:002007-11-19T10:39:52.829+01:00Настройка DHCP в PIX/ASA<span style="color: rgb(0, 0, 0);font-size:100%;" ><span style="font-family:verdana;">Периодически приходят посетители с google, которые находят блог по ключевым словам asa dhcp.</span><span style="font-family:verdana;"> Не очень понимая как это происходит, я решил не разочаровывать их написать маленькую заметку на интересующую их тему. :)</span><br /><span style="font-family:verdana;"> Может сделаю это практикой.<br /><br /></span><span style="font-weight: bold;font-family:verdana;" >0. Официальная документация</span><br /><a style="font-family: verdana;" title="http://cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example09186a00806c1cd5.shtml" href="http://cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example09186a00806c1cd5.shtml" id="f7pq">http://cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example09186a00806c1cd5.shtml</a><br /><a style="font-family: verdana;" title="http://cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example09186a008075fcfb.shtml" href="http://cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example09186a008075fcfb.shtml" id="j4re">http://cisco.com/en/US/products/hw/vpndevc/ps2030/products_configuration_example09186a008075fcfb.shtml</a><br /><br /><span style="font-family:verdana;"> Существует два режима работы DHCP.</span><br /><span style="font-family:verdana;"> - сервер</span><br /><span style="font-family:verdana;"> - клиент</span><br /><br /><span style="font-family:verdana;"> Для чего нужен каждый рассказывать не буду, вроде и так понятно.</span><br /><br /><br /><span style="font-weight: bold;font-family:verdana;" >1. Сервер. Необходимый минимум</span><br /><br /><span style="font-family:verdana;"> Минимальная настройка это всего две команды. Первая определяет пул из которого будут "черпаться" адреса, вторая указывает на каком интерфейсе слушать.</span><span style="font-family:verdana;"> Можно запустить несколько сервисов на нескольких интерфейсах</span><br /><br /><span style="font-family:courier new;"> dhcpd address 10.10.10.1-10.10.10.128 LAN</span><br /><span style="font-family:courier new;">dhcpd enable LAN</span><br /></span> <span style="color: rgb(0, 0, 0);font-size:100%;" ><br /><span style="font-weight: bold;font-family:verdana;" >2. Сервер. Дополнительно.</span><br /><br /><span style="font-family:verdana;"> Следующие команды позволяют настраивать различные параметры передаваемые клиентам. К большинству из них можно добавить ключевое слово interface с указанием интерфейса PIX/ASA, что позволит иметь разные настройки для разных интерфейсов.</span><br /><br /><span style="font-family:verdana;"> // Передать клиенту адрес dns сервера</span><br /><span style="font-family:courier new;"> dhcpd dns 192.168.100.25</span><br /><br /><span style="font-family:verdana;"> // Передать клиенту адрес wins сервера</span><br /><span style="font-family:courier new;">dhcpd wins 192.168.100.25</span><br /><br /><span style="font-family:verdana;"> // dns домен</span><br /><span style="font-family:courier new;"> dhcpd domain piva.net</span><br /><br /><span style="font-family:verdana;"> // Время на которое выдается адрес. Указывается в секундах</span><br /><span style="font-family:courier new;"> dhcpd lease 7200</span><br /><br /><span style="font-family:verdana;"> В качестве дополнительной проверки PIX/ASA пингует адрес перед выдачей. </span><br /><span style="font-family:verdana;"><a href="http://techoover.blogspot.com/2007/08/dhcp.html"> Похожее поведение можно настроить и в IOS</a>, здесь это включено по-умолчанию.</span><span style="font-family:verdana;"> Перед выдачей адреса посылается для icmp пакета.</span><br /><span style="font-family:verdana;"> Как это выключить я не нашел. :)</span><span style="font-family:verdana;"> Зато есть способ управлять таймаутами.</span><br /><br /><span style="font-family:verdana;"> // Изменяем таймуат отклика на пинг. По-умолчанию равен 50 миллисекундам.</span><br /><span style="font-family:courier new;"> dhcpd ping_timeout 100</span></span><span style="color: rgb(0, 0, 0);font-family:courier new;font-size:100%;" > </span> <span style="color: rgb(0, 0, 0);font-size:100%;" ><br /></span><span style="color: rgb(0, 0, 0);font-size:100%;" ><br /><span style="font-weight: bold;font-family:verdana;" >3. Клиент</span><br /><span style="font-family:verdana;"> При настройке PIX/ASA как клиента dhcp всё еще проще.</span><br /><span style="font-family:verdana;"> В контексте редактирования интерефейса необходимо добавить всего одну команду.</span><br /><br /><span style="font-family:verdana;"> // Получать IP адрес для интерфейса динамически</span><br /><span style="font-family:courier new;"> ip address dhcp [setroute]</span><br /><br /><span style="font-family:verdana;"> Важным, но необязательным, парамером этой команды является setroute.</span><br /><span style="font-family:verdana;"> При указании которого перепишется таблица маршрутизации и новым шлюзом по-умолчанию будет назначен шлюз полученый динамически.</span><br /><br /></span> <p style="color: rgb(0, 0, 0);font-family:verdana;"><span style="font-size:100%;"><span style="font-weight: bold;font-family:verdana;" >4. Дополнительно</span><br /><span style="font-family:verdana;">Есть возможность передавать полученые как dhcp клиент параметры (dns, wins, домен) клиентам dhcp динамически.</span></span></p> <p style="color: rgb(0, 0, 0);font-family:verdana;"><span style="font-size:100%;">// Отдавать параметры полученые как клиент своим клиентым</span></p><p style="color: rgb(0, 0, 0);font-family:verdana;"><span style="font-size:100%;"><span style="font-family:courier new;">dhcpd auto_config interface LAN</span><br /></span></p>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com2tag:blogger.com,1999:blog-2333148333771997943.post-57781994322462932072007-10-08T20:31:00.000+02:002008-05-12T13:59:28.807+02:00Live and learn: кто это сделал!?<span style="font-family:verdana;">Сколько раз возникал у вас такой вопрос? Часто хочется посмотреть кто изменял концигурацию и какие именно команды вводил. </span> <span style="font-family:verdana;">Не буду много рассказывать лучше показать.</span> <span style="font-family:verdana;">Как это выглядело раньше? Кто-то зашел на железяку и внес какие-то изменения.</span> <span style="font-family:verdana;">Об этом в логе останется информация следующая информация:</span><br /><br /><span style="font-size:85%;"><span style="font-family:courier new;">*Mar 1 00:12:15.675: %SYS-5-CONFIG_I: Configured from console by one on vty0 (10.10.10.1)<br /><br /></span></span><span style="font-family:verdana;">И всё!</span><br /><br /><span style="font-family:verdana;">С некоторой версии ios появилась возможность посмотреть кто и что конкретно сделал. Подробненько. :)</span><br /><span style="font-family:verdana;">Для этого необходимо добавить в конфигурацию следующие строки:</span><br /><br /><span style="font-family:courier new;">archive</span><br /><span style="font-family:courier new;"> log config</span><br /><span style="font-family:courier new;"> logging enable</span><br /><span style="font-family:courier new;"> notify syslog</span><br /><span style="font-family:courier new;"> hidekeys</span><br /><br /><br /><span style="font-family:verdana;"> logging enable - писать лог. По умолчанию выключено.</span><br /><span style="font-family:verdana;"> notify syslog - писать лог локально или посылать также на syslog сервер</span><br /><span style="font-family:verdana;">hidekeys - не записывать в лог пароли</span><br /><br /><span style="font-family:verdana;">Теперь процесс логина и изменения отобразится примерно следующим образом:</span><br /><span style="font-family:verdana;">Легко определить что в гости заходил пользователь one и настроил интерфейс FastEthernet1/0.</span><br /><span style="font-size:85%;"><br /><span style="font-family:courier new;">*Mar 1 00:18:18.839: %PARSER-5-CFGLOG_LOGGEDCMD: User:one logged command:!exec: enable</span><br /><span style="font-family:courier new;">*Mar 1 00:18:58.003: %PARSER-5-CFGLOG_LOGGEDCMD: User:one logged command:interface FastEthernet1/0</span><br /><span style="font-family:courier new;">*Mar 1 00:19:11.023: %PARSER-5-CFGLOG_LOGGEDCMD: User:one logged command:ip address 192.168.1.1 255.255.255.0</span><br /><span style="font-family:courier new;">*Mar 1 00:19:13.715: %PARSER-5-CFGLOG_LOGGEDCMD: User:one logged command:no shutdown</span><br /><span style="font-family:courier new;">*Mar 1 00:19:15.687: %LINK-3-UPDOWN: Interface FastEthernet1/0, changed state to up</span><br /><span style="font-family:courier new;">*Mar 1 00:19:16.687: %LINEPROTO-5-UPDOWN: Line protocol on Interface FastEthernet1/0, changed state to up</span><br /></span><br /><span style="font-family:verdana;">Официальная документация</span><br /><a title="http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a0080454f8c.html#wp1100253" href="http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a0080454f8c.html#wp1100253" id="z5pp">http://www.cisco.com/en/US/products/ps6350/products_configuration_guide_chapter09186a0080454f8c.html#wp1100253</a>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0tag:blogger.com,1999:blog-2333148333771997943.post-55354592727953859142007-10-01T13:48:00.000+02:002007-10-01T13:55:14.038+02:00BGP: запоминаем порядок<span style="font-size:100%;"><span style="font-family:verdana;">BGP использует алгоритм для определения правильной дороги к определенной сети.</span><br /><span style="font-family:verdana;">Подробно он описан в следующем документе.</span><br /><a style="font-family: verdana;" href="http://cisco.com/en/US/tech/tk365/technologies_tech_note09186a0080094431.shtml">http://cisco.com/en/US/tech/tk365/technologies_tech_note09186a0080094431.shtml</a><br /><br /><span style="font-family:verdana;">Однако запомнить порядок трудновато. Совершенно случайно нашел мнемонику которая позволяет здорово облегчить жизнь.</span><br /><br /></span><div class="snap_preview"><p style="font-family: verdana;font-family:verdana;" ><span style="font-size:100%;">“We Love Oranges AS Oranges Mean Pure Refreshment”</span></p> <p style="font-family: verdana;font-family:verdana;" ><span style="font-size:100%;">W Weight (Highest)<br />L Local_Pref (Highest)<br />O Originate (local originate)<br />AS As_Path (shortest)<br />O Origin Code (IGP <></p><span style="font-family: verdana;font-size:100%;" >нашёл <a href="http://mal0y.wordpress.com/2007/07/24/bgp-attributes-mnemonic/">здесь</a>.<br /></span><span style="font-size:100%;"><br /></span><p style="font-family: verdana;"></p><span style="font-size:100%;"><br /></span></div><span style="font-size:100%;"><br /></span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0tag:blogger.com,1999:blog-2333148333771997943.post-7385352841283737642007-09-12T08:52:00.000+02:002008-05-12T13:59:28.808+02:00Live and learn<span style=";font-family:verdana;font-size:100%;" ><span>[upd, 19.09.2007]</span><span style="font-weight: bold;"><br /></span></span><span style="font-family:verdana;">Попалась совершенно замечательная статья в подробностях показывающая как нижеописанное применять на PIX/ASA.<br /><a href="http://security-planet.de/2005/07/26/cisco-pix-capturing-traffic/"></a></span><span style="font-family:verdana;"><a href="http://security-planet.de/2005/07/26/cisco-pix-capturing-traffic/">http://security-planet.de/2005/07/26/cisco-pix-capturing-traffic/</a></span><br /><br /><span style="color: rgb(0, 0, 0);font-family:verdana;font-size:100%;" ><br />Век живи - век учись. Всегда оказывается что чего-то не знаешь...<br /><br /></span><p style="background-color: rgb(255, 255, 255);font-family:verdana;"> <span style="color: rgb(0, 0, 0);font-size:100%;" >Как часто при попытке дианостировать разнообразные "подземные стуки", я сожалел о том, что под Cisco нет ничего похожего на tcpdump.</span> </p> <p style="background-color: rgb(255, 255, 255);font-family:verdana;"> <span style="color: rgb(0, 0, 0);font-size:100%;" >Глупец. Я ошибался. Оказывается, все прогрессивное человечество давно энает способы. Итак, представляем...</span> </p> <p style="background-color: rgb(255, 255, 255);font-family:verdana;"><span style="font-size:100%;"><br /></span></p><p style="background-color: rgb(255, 255, 255);font-family:verdana;"> <span style="color: rgb(0, 0, 0);font-size:100%;" >1. </span><span style="color: rgb(0, 0, 0);font-size:100%;" >Cisco PIX/ASA</span></p><p style="background-color: rgb(255, 255, 255);font-family:verdana;"><span style="font-size:100%;">Способ хорошо известен.<br /></span></p><p style="background-color: rgb(255, 255, 255);font-family:verdana;"><span style="font-size:100%;">Описан здесь: <a href="http://cisco.com/en/US/products/ps6120/products_tech_note09186a00807c35e7.shtml"></a></span><span style="font-size:100%;"><a href="http://cisco.com/en/US/products/ps6120/products_tech_note09186a00807c35e7.shtml">http://cisco.com/en/US/products/ps6120/products_tech_note09186a00807c35e7.shtml</a></span></p><p style="background-color: rgb(255, 255, 255);font-family:verdana;">Скопирую суть:</p><p class="MsoNormal" style="font-family:courier new;"><span style="font-size:85%;">ciscoasa(config)#access-list inside_test permit icmp any host 192.168.1.1</span></p> <p class="MsoNormal" style="font-family:courier new;"><span style="font-size:85%;">ciscoasa(config)#capture inside_interface access-list inside_test interface inside</span></p>The user pings the inside interface of the ASA (ping 192.168.1.1). This output is displayed.<p style="font-family: verdana;" class="MsoNormal"><br /></p> <p class="MsoNormal" style="font-family:courier new;"><span style="font-size:85%;">ciscoasa#show capture inside_interface</span></p> <p class="MsoNormal" style="font-family:courier new;"><span style="font-size:85%;"> 1: 13:04:06.284897 192.168.1.50 > 192.168.1.1: icmp: echo request</span></p> <p style="font-family: verdana;" class="MsoNormal"> </p><p style="background-color: rgb(255, 255, 255);font-family:verdana;"> <span style="color: rgb(0, 0, 0);font-size:85%;" ><br /></span></p><p style="background-color: rgb(255, 255, 255);font-family:verdana;"><span style="color: rgb(0, 0, 0);font-size:100%;" >2. Cisco router</span> </p><span style="font-family:verdana;">Создаем ip access-list которым будем "ловить" интересующий нас трафик.</span><br /><br /><span style="font-size:85%;"><span style="font-family:courier new;">routerA(conf)# access-list 111 permit ip 10.10.10.0 0.0.0.255 10.10.15.0 0.0.0.255</span><br /><span style="font-family:courier new;">routerA(conf)# access-list 111 permit ip 10.10.15.0 0.0.0.255 10.10.10.0 0.0.0.255</span><br /></span><br /><p face="verdana" style="background-color: rgb(255, 255, 255);"><span style="font-size:100%;"> Запускаем команду на выполнение и смотрим результат:</span></p><p style="background-color: rgb(255, 255, 255);font-family:courier new;"><span style="font-size:85%;">routerA# debug ip packet 111 detail</span></p><p style="background-color: rgb(255, 255, 255);font-family:courier new;"><span style="font-size:85%;">IP packet debugging is on (detailed) for access list 111</span></p><p style="background-color: rgb(255, 255, 255);font-family:courier new;"><span style="font-size:85%;"><br /></span></p><p style="background-color: rgb(255, 255, 255);font-family:courier new;"><span style="font-size:85%;">*Mar 1 00:10:32.975: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:33.119: IP: s=10.10.15.1 (Serial2/0), d=10.10.10.5 (FastEthernet0/0), g=10.10.10.5, len 44, forward<br />*Mar 1 00:10:33.123: TCP src=23, dst=43741, seq=762553188, ack=408925172, win=4128 ACK SYN<br />*Mar 1 00:10:33.239: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:33.287: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:33.291: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:33.431: IP: s=10.10.15.1 (Serial2/0), d=10.10.10.5 (FastEthernet0/0), g=10.10.10.5, len 52, forward<br />*Mar 1 00:10:33.435: TCP src=23, dst=43741, seq=762553189, ack=408925181, win=4119 ACK PSH<br />*Mar 1 00:10:33.455: IP: s=10.10.15.1 (Serial2/0), d=10.10.10.5 (FastEthernet0/0), g=10.10.10.5, len 77, forward<br />*Mar 1 00:10:33.459: TCP src=23, dst=43741, seq=762553201, ack=408925181, win=4119 ACK PSH<br />*Mar 1 00:10:33.575: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:33.599: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:33.647: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:33.759: IP: s=10.10.15.1 (Serial2/0), d=10.10.10.5 (FastEthernet0/0), g=10.10.10.5, len 40, forward<br />*Mar 1 00:10:33.763: TCP src=23, dst=43741, seq=762553238, ack=408925196, win=4104 ACK<br />*Mar 1 00:10:35.415: IP: s=10.10.15.1 (Serial2/0), d=10.10.10.5 (FastEthernet0/0), g=10.10.10.5, len 40, forward<br />*Mar 1 00:10:35.423: TCP src=23, dst=43741, seq=762553238, ack=408925196, win=4104 ACK PSH FIN<br />*Mar 1 00:10:35.623: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:35.627: IP: tableid=0, s=10.10.10.5 (FastEthernet0/0), d=10.10.15.1 (Serial2/0), routed via FIB<br />*Mar 1 00:10:35.647: IP: s=10.10.15.1 (Serial2/0), d=10.10.10.5 (FastEthernet0/0), g=10.10.10.5, len 40, forward<br />*Mar 1 00:10:35.651: TCP src=23, dst=43741, seq=762553239, ack=408925197, win=4104 ACK<br /></span></p><span style="font-size:100%;"><br /></span><p style="background-color: rgb(255, 255, 255); font-family: verdana;"><span style="font-size:100%;">Это решение не работает с </span><span class="content" style="font-size:100%;">fast-switching (ip route-cache)</span><span class="content" style="font-size:100%;">.</span> </p>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com2tag:blogger.com,1999:blog-2333148333771997943.post-80818635297827403672007-09-11T08:31:00.000+02:002008-04-17T08:57:14.163+02:00Фазы (этапы) IPSec<span style="font-size:100%;"><span style="font-family:verdana;">Сырая версия, но ньансов настолько много, что хочеться записать то что помниться, чтобы потом дополнять.<br /></span><span style="font-family:verdana;">Итак, поговорим о ipsec. Знать это полезно при траблшутинге проблем связаных с установлением VPN туннеллями.<br /><br /></span></span><span style="font-family:verdana;"> 1. Определение трафика подлежащего шифрованию.</span><br /><span style="font-family:verdana;">Чаще всего используеются так называемые crypto acl.</span><br /><br /><span style="font-family:verdana;">2. Первая фаза IKE. </span><br /><span style="font-family:verdana;">2.1. Аутентификация обоих концов туннеля.</span><br /><span style="font-family:verdana;">2.2. Создается IKE SA которая используется для защиты процесса IKE.</span><br /><span style="font-family:verdana;">2.3. Выполняется алгоритм Диффи-Хелмана, который гарантирует, что на каждом конце туннеля будет использоватся одинаковый shared secret, без пересылания этого shared secret.</span><br /><span style="font-family:verdana;">2.4. Создается туннель для работы второй фазы IKE.</span><br /><br /><br /><span style="font-family:verdana;">Первая фаза IKE может проходить в двух режимах:</span><br /><span style="font-family:verdana;">- Main mode</span><br /><span style="font-family:verdana;">проходит в три этапа:</span><br /><span style="font-family:verdana;"> - согласование используемых алгоритмов</span><br /><span style="font-family:verdana;"> - обе стороны используеют алгоритм Диффи-Хелмана для определения ключей</span><br /><span style="font-family:verdana;"> - используя ключи стороны аутентифицируют друг-друга.</span><br /><span style="font-family:verdana;">- Aggressive mode</span><br /><span style="font-family:verdana;">Все что посылается в Main mode в три этапа, посылается в одном пакете. Основная проблема, что стороны обмениваются информацией до того как безопасное соединение будет установлено.</span><br /><span style="font-size:100%;"><br /><span style="font-family:verdana;">3. Вторая фаза IKE.</span><br /><span style="font-family:verdana;">Основаня задача этого этапа подготовить IPSec SA которые будут использоватся непосредственно для шифрования трафика. Сюда входит согласование параметров и собственно установка.</span><br /><span style="font-family:verdana;">IPSec может переходить из фазы 4 к фазе 4 и назад в нескольких случаях:</span><br /><br /><span style="font-family:verdana;">- каждая SA имеет определенное время жизни (например 1 час в Checkpoint), соостветственно по истечении этого часа необходимо пересоздать SA. </span><br /><span style="font-family:verdana;"> При этом для создания новой SA используется тот же shared secret, что и раньше.</span><br /><span style="font-family:verdana;">- использование perfect forward secrecy (PFS). Алгоритм PFS гарантирует, что при создании новой SA предыдущий shared secret использоватся не будет, более того не будет никакой корреляции между старым и новым shared secret. Для реализации PFS используется алгоритм Диффи-Хелмана в quick mode.</span><br /><br /><span style="font-family:verdana;">Quick mode: для ренерации новой SA используется текущая SA (нет отброса на первую фазу IKE).</span><br /><br /><br /><span style="font-family:verdana;">4. Нормальная работа.</span><br /><span style="font-family:verdana;">На этой фазе туннель работает в нормальном режиме шифруя и расшифровывая трафик.</span><br /><br /><span style="font-family:verdana;">5. Закрытие туннеля.</span><br /><span style="font-family:verdana;">Может быть принудительным (clear SA) либо по истечении тайм-аута.</span><br /><br /></span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com2tag:blogger.com,1999:blog-2333148333771997943.post-48629269893101375052007-09-04T16:35:00.000+02:002007-11-19T06:55:00.260+01:00GLBP<span style="color: rgb(0, 0, 0);font-family:verdana;" >Продолжая тему резервирования...</span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:verdana;" ><br /><br />0. Официальная документация</span><br /><a style="font-family: verdana; color: rgb(0, 0, 0);" title="http://cisco.com/en/US/products/sw/iosswrel/ps1839/products_white_paper09186a00801541c8.shtml" href="http://cisco.com/en/US/products/sw/iosswrel/ps1839/products_white_paper09186a00801541c8.shtml" id="rxnk">http://cisco.com/en/US/products/sw/iosswrel/ps1839/products_white_paper09186a00801541c8.shtml</a><br /><a style="font-family: verdana; color: rgb(0, 0, 0);" title="http://cisco.com/en/US/products/ps6600/products_data_sheet0900aecd803a546c.html" href="http://cisco.com/en/US/products/ps6600/products_data_sheet0900aecd803a546c.html" id="v:ap">http://cisco.com/en/US/products/ps6600/products_data_sheet0900aecd803a546c.html</a><span style="color: rgb(0, 0, 0);font-family:verdana;" > </span><br /><a style="font-family: verdana; color: rgb(0, 0, 0);" title="http://cisco.com/en/US/products/ps6600/prod_presentation0900aecd801790a3.html" href="http://cisco.com/en/US/products/ps6600/prod_presentation0900aecd801790a3.html" id="iesp">http://cisco.com/en/US/products/ps6600/prod_presentation0900aecd801790a3.html</a><span style="color: rgb(0, 0, 0);font-family:verdana;" > </span><br /><br /><br /><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:verdana;" >1. Зачем это нужно и как это работает</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Зачем нужен еще один протокол? В отличии от <a href="http://techoover.blogspot.com/2007/08/hsrp.html">HSRP</a> который работает в режиме Active/Standby GLBP работает в режиме Active/Active.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Это означает, что дополнительно к функциям резервирования реализуемым HSRP добавилась возвожность реализовать Load Sharing.</span><br /><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Краткий принцип работы: выбирается главный рутер (AVG), все остальные играют пассивную (AVF) роль. Управляющий рутер назначает каждому пассивному дополнительный виртуальный МАС адрес. </span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Каждый из рутеров имеет на интерфейса одинаковый виртуальный IP.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >AVG отвечает на ARP запросы спрашивающие МАС виртуального IP посылая в ответ один из виртуальных МАС адресов пассивных рутеров (AVF). </span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Соответственно можно ожидать, что распределение трафика по разным рутерам будет примерно одинаковым.</span><br /><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Максимальное количество рутеров в одной GLBP группе равно четырем.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Количество GLBP групп на одном интерфейсе не должно превышать</span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" > 1024. Соответственно от 0 до 1023.</span><br /><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >AVG - </span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" >Active Virtual Gateway - главный рутер, основная задача присвоение участвующим рутерам различных виртуальных </span><span style="color: rgb(0, 0, 0);font-family:verdana;" >МАС адресов и ответ на ARP запросы касающиеся виртуального IP.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Дополнительно выбирается Standby </span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" > Virtual Gateway который перебирает на себя функции </span><span style="color: rgb(0, 0, 0);font-family:verdana;" >AVG в случае отказа последнего.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >AVF - </span><span style="color: rgb(0, 0, 0);" class="content"><span style="font-family:verdana;">Active Virtual Forwarder - занимается непосредственно пересылкой клиентского трафика.</span><br /><br /></span><span style="font-weight: bold; color: rgb(0, 0, 0);font-family:verdana;" >2. Минимальная настройка</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" > Команды вводятся в режиме конфигурации интерфейса</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ><br />// Основной адрес интерфейса<br />RouterA(config-if)# ip address 10.0.0.254 255.255.255.0<br /></span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" > // Группа в пределах которой работает GLBP и "разделяемый" адрес. </span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" >RouterA(config-if)# glbp 20 ip 10.0.0.1 </span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" >Также есть возможность использовать несколько адресов в пределах конкретной группы. Для этого необходимо использовать ключевое слово secondary после </span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" >ip адреса.</span><br /><br /><span style="font-weight: bold; color: rgb(0, 0, 0);">3. Дополнительные команды</span><br /><span style="color: rgb(0, 0, 0);">// Приоритет при выборе AVG. Значение по умолчанию - 100.</span><br /><span style="color: rgb(0, 0, 0);" class="content">RouterА(config-if)# glbp 20 priority 254</span><br /><br /><span style="color: rgb(0, 0, 0);">// </span><span style="color: rgb(0, 0, 0);" class="content">Обращать внимание на приоритет при перераспределении ролей </span><span style="color: rgb(0, 0, 0);">AVG/AVF</span><span style="color: rgb(0, 0, 0);" class="content">. Действует аналогично HSRP</span><br /><span style="color: rgb(0, 0, 0);" class="content">RouterA(config-if)# glbp 20 preempt<br /><br /><span style="font-family:verdana;">// Алгоритм отвечающий за порядок ответа на </span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >ARP запросы. Может быть:</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" > none - в этом случае балансировка не выполняется. </span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >AVG всегда отвечает на ARP запросы только своим </span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >МАС. Т.е. работаем как обычный HSRP.</span><br /><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ><span style="background-color: rgb(255, 255, 255);" class="cBold"><span style="font-style: italic;">round-robin</span> - Крутить по кругу. По истечению тайм-аута хранения </span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >МАС адреса у клиента он может получить новый МАС в ответ от </span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >AVG. Значение по умолчанию.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" > <span style="background-color: rgb(255, 255, 255);" class="cBold"><span style="font-style: italic;"><br />host-dependent </span>- </span><span style="background-color: rgb(255, 255, 255);" class="cBold">По истечению тайм-аута хранения </span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >МАС адреса у клиента он гарантированно получит тот же МАС от AVF в ответ на новый запрос. Конечно, до тех пор пока состояние группы неизменно.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" > Используется в том случае если на рутерах входящих в GLBP группу осуществляется трансляция адресов (NAT), это гарантирует что текущие сессии не потеряются.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ><span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255);" class="cBold"><span style="color: rgb(0, 0, 0);"><span style="font-style: italic;"><br />weighted </span>- Разделять полосу основываясь на весах весах каждого рутера. </span><br /><span style="color: rgb(0, 0, 0);">Для использования весов необходимо задать их в конфигурации для каждого рутера участвующего в группе с помощью команды:<br /><br /><br /></span></span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" >RouterA(config-if)# glbp 10 weighting 70</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ><span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255);" class="cBold"><span style="color: rgb(0, 0, 0);">Работает по простому принципу. Если на другом рутере в той же группе задать вес 140, то распределение будет один к двум. Необходимо учитывать, что это не распределение трафика, а распределение хостов.</span><br /><br /><span style="color: rgb(0, 0, 0);">// Пример</span><br /></span></span>RouterA(config-if)# glbp 20 load-balancing </span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ><span style="background-color: rgb(255, 255, 255);" class="cBold">round-robin</span></span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ><br /><span style="color: rgb(0, 0, 0);">// Команда аналогичная </span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >HSRP, в ситауции когда рутер с большим приоритетом для данной группы появляется в сети. Отдавать ли ему роль AVG или нет. И если отдавать, то сколько подождать.</span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);">Router(config-if)# glbp 20 forwarder preempt delay minimum 30<br /><br />// tracking. Первым делом нужно создать объект трекинга. Сделать это можно используя следующую команду:<br /></span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);">Router(config)# </span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);">track 100 interface Serial 2/0 line-protocol<br /><br /><span style="color: rgb(255, 0, 0);">todo: </span>разобратся с трекингом подробнее<br /><br />// Применяем трекинг к </span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);"></span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);">glbp. Т.е. в </span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);"></span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);">glbp группе 20 отслеживать объект 100 и в случае падения уменьшать приоритет на 20.</span></span></span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);">Router(config-if)# </span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);">glbp 20 weighting track 100 decrement 200<br /><br /><br />При этом что интересно, если один товарищ устал и оставшимся приходится работать за себя и за того парня, AVG ответственнен за пересылку трафика ранее ходившего через упавший AVF. Т.е. отвечает на </span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" >ARP запросы по его адресам тоже. Тут мне видится такая штука: видимо при использовании в GLBP группе более чем двух активных AVF полезно изначально (с помощью весов) занизить трафик идущий через AVG, поскольку в случае поломки ему и так приходится работать за двоих. </span><br /><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);"><br /><br /></span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" ><span class="content"><span style="color: rgb(0, 0, 0);"><span style="font-weight: bold;">4. Команды диагностики</span><br />Легче всего проверить как это выглядит со стороны клиента. Например в данном случае используется алгорит балансировки round-robin. Вывод команды sh arp с двух </span><span style="color: rgb(0, 0, 0);">клиентов.</span></span></span><span style="color: rgb(0, 0, 0);font-family:verdana;" class="content" ><br /><br /><span style="color: rgb(255, 0, 0);"><span style="background-color: rgb(255, 255, 255);" class="cBold"><span style="color: rgb(0, 0, 0);">// Главное поле: Hardware Addr.<br /></span></span></span><span style="font-size:85%;"><span style="font-family:courier new;">Client#sh arp</span><br /><span style="font-family:courier new;">Protocol Address Age (min) Hardware Addr Type Interface</span><br /><span style="font-family:courier new;">Internet 10.10.10.1 6 0007.b400.1401 ARPA FastEthernet0/0</span><br /><br /><span style="font-family:courier new;">client1#sh arp</span><br /><span style="font-family:courier new;">Protocol Address Age (min) Hardware Addr Type Interface</span><br /><span style="font-family:courier new;">Internet 10.10.10.1 4 0007.b400.1402 ARPA FastEthernet0/0</span></span><br /><br /><br />// Еще одна полезная команда<br /><span style="font-size:85%;"><span style="font-family:courier new;">RouterA# sh glbp br</span><br /></span></span><span style="color: rgb(0, 0, 0);font-size:85%;" ><span style="font-family:courier new;">Interface Grp Fwd Pri State Address Active router Standby route</span><br /><span style="font-family:courier new;">Fa0/0 20 - 254 Active 10.10.10.1 local 10.10.10.4</span><br /><span style="font-family:courier new;">Fa0/0 20 1 7 Active 0007.b400.1401 local -</span><br /><span style="font-family:courier new;">Fa0/0 20 2 7 Active 0007.b400.1402 local -</span><br /></span>pablohttp://www.blogger.com/profile/02969517187693284531noreply@blogger.com0