Показаны сообщения с ярлыком IP inpect. Показать все сообщения
Показаны сообщения с ярлыком IP inpect. Показать все сообщения

воскресенье, 18 мая 2014 г.

IP inspect


Итак ещё раз про IP inspect

Есть ситуация, у нас стоит Cisco Firewall типа ASA или PIX. В локальной сети сидит боец невидимого фронта(10.0.0.3) который мечтает соединиться с сервером (172.30.1.50) по телнету (порт 23 протокол TCP). Оставим вопрос: "зачем это нужно пьяному гусару?" -- на усмотрение самого пьяного гусара и обратимся к стульям. 

Чтобы обеспечить такое соединение нужно обеспечить 2 этапа

Этап 1: Трафик должен пройти из [ зоны Inside]   --> в --> [ зону Outside ]
логично прописать ему access-list вида:
ASA(config)# access-list 101 permit tcp any any eq 23
Такой вариант написания листа доступа годится для начинающего CCNA асистента, даже работать будет, но это слишком общее правило чтобы им вот так разбрасываться

Более точный и разумный он будет такой:
ASA(config)# access-list 101 permit tcp host 10.0.0.3 host 172.30.1.50 any eq 23
можно ещё шлифануть его на предмет Time-Based, но это уже надо регламент работы организации смотреть и на должность пьяного гусара :)

Итак трафик благополучно преодолел пределы атмосферы и улетел в открытый космос в сторону сервера, предположим, что он даже благополучно вернулся к нашему файерволу, тут начинается этап 2

Этап 2: Трафик должен пройти обратно из [ зоны Outside]   --> в --> [ зону Inside ]
Но у нас неувязка, согласно регламенту компании на интерфейсе Outside, в направлении in, должно всегда висеть правило:
deny ip any any
и оно не предполагает исключений ни для влюблённых, ни для инопланетян. Как же быть?

Попробуем сделать финт ушами и применить фишечку под названием IP inspect. Суть работы IP inspect в нашем случае заключается  в просмотре и запоминании  трафика который инициирован изнутри, чтобы затем  пропустить его так же мягко и нежно снаружи обратно, когда он вернётся (за кадром он на самом деле создаёт динамический ACL на ходу, и сразу же его убивает когда сессия закрывается).
Если же пришедший трафик не соответствует никакой сессии, на следующем логическом шаге  маршрутизатор проверяет ACL, висящий на интерфейсе, на предмет наличия правила для этого трафика. В нашем случае это будет deny ip any any. И любой трафик не иницированный изнутри будет дохнуть прямо на точке входа.

Вернёмся к нашим баранам гусарам, смело создаём IP inspect правило
ip inspect name FWRULE tcp
и применяем его на интерфейс в направлении in
(config-if)# ip inspect FWRULE in

Услышав удовлетворённый вздох гусара, достигшего  высшей точки удовольствия от соединения по телнету, возвращаемся обратно к работе.

P.S. На самом деле на ASA/PIX конфигурация IP inspect не настолько проста ( подробно см. по метке IP inspect ), здесь приведён только сам принцип.


понедельник, 18 марта 2013 г.

Cisco ASA, Часть первая, ACL

Часть первая


Задача: 
пользователи  должны иметь доступ к серверу xp_http_ftp_cisco 
по порту 80 (web-сайт), 
21,20 (для ftp) 
и 10000 (для администрирования сервера ftp по web-интерфейсу);

Итак приступим:

1) Поднять интерфейсы, настроить ip-адреса и security-level
ciscoasa> en
Password:
ciscoasa# conf t
ciscoasa(config)# hostname asa1
 

asa1(config)# interface g2
asa1(config-if)# nameif inside
INFO: Security level for "inside" set to 100 by default.

asa1(config-if)# ip address 192.168.1.1 255.255.255.0
asa1(config-if)# no shutdown
asa1(config-if)# exit

asa1(config)# interface g1
asa1(config-if)# nameif DMZ
INFO: Security level for "DMZ" set to 0 by default.
asa1(config-if)# security-level 50
asa1(config-if)# ip address 10.10.10.1 255.255.255.0
asa1(config-if)# no shutdown
asa1(config-if)# exit

asa1(config)# interface g0
asa1(config-if)# nameif outside
INFO: Security level for "outside" set to 0 by default.
asa1(config-if)# ip address 3.3.3.1 255.255.255.0
asa1(config-if)# no shutdown
asa1(config-if)# exit
asa1(config)# wr
Building configuration...
Cryptochecksum: 4063acb7 c6982e66 0e0b787d a5a2c78f

2246 bytes copied in 1.290 secs (2246 bytes/sec)
[OK]


2) Добавим доступ с ASDM (опционально)
asa1(config)# username admin password cisco privilege 15
asa1(config)# http server enable
asa1(config)# http 192.168.1.0 255.255.255.0 inside

 ------------------------------------
Ставим TFTP сервер типа TFTPDWin и загружаем на флеш память ASA файл с asdm
---------------------------------------
asa1# copy tftp: flash:
Address or name of remote host []? 192.168.1.2
Source filename []? asdm-647.bin
Destination filename [asdm-647.bin]?
Accessing tftp://192.168.1.2/asdm-647.bin....!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!etc

Writing current ASDM file disk0:/asdm-647.bin!!!!!!!!!!!!!!etc
17902288 bytes copied in 129.60 secs (138777 bytes/sec)
-------------------------------------
asa1# sh flash:
--#--  --length--  -----date/time------  path
    5  4096        Mar 17 2013 14:03:36  log
   10  4096        Mar 17 2013 14:03:42  coredumpinfo
   11  59          Mar 17 2013 14:03:42  coredumpinfo/coredump.cfg
   90  196         Mar 17 2013 14:03:42  upgrade_startup_errors_201303171403.log
   15  4096        Mar 17 2013 18:36:04  boot
   16  6           Mar 18 2013 18:35:00  boot/grub.conf
   80  0           Mar 17 2013 18:47:18  nat_ident_migrate
   91  28672       Jan 01 1980 00:00:00  FSCK0000.REC
   92  4096        Jan 01 1980 00:00:00  FSCK0001.REC
   93  28672       Jan 01 1980 00:00:00  FSCK0002.REC
   94  4096        Jan 01 1980 00:00:00  FSCK0003.REC
   95  28672       Jan 01 1980 00:00:00  FSCK0004.REC
   96  4096        Jan 01 1980 00:00:00  FSCK0005.REC
   97  17902288    Mar 20 2013 09:29:34  asdm-647.bin

268136448 bytes total (249769984 bytes free)
asa1# wr
Building configuration...
Cryptochecksum: e7e2b9ec 35d191e6 92560981 c5bfc984

3247 bytes copied in 1.370 secs (3247 bytes/sec)
[OK]



3) Формируем access-list согласно нашей задаче
asa1(config)# access-list HTTP_FTP_10000_inside extended permit tcp 192.168.1.0 255.255.255.0 host 10.10.10.201 eq www
asa1(config)# access-list HTTP_FTP_10000_inside extended permit tcp 192.168.1.0 255.255.255.0 host 10.10.10.201 eq ftp
asa1(config)# access-list HTTP_FTP_10000_inside extended permit tcp 192.168.1.0 255.255.255.0 host 10.10.10.201 eq 10000 
asa1(config)# access-list HTTP_FTP_10000_inside extended permit tcp 192.168.1.0 255.255.255.0 host 10.10.10.201 eq www 
asa1(config)# access-list HTTP_FTP_10000_inside extended permit icmp 192.168.1.0 255.255.255.0 any

4) Применяем созданный access-list  на inside интерфейс
asa1(config)# access-group HTTP_FTP_10000_inside in interface inside

5) Настраиваем service-policy аля ip inspect

 

asa1(config)# policy-map global_policy
определяем название map
asa1(config-pmap)# class-map inspection_default
определяем дефолтные настройки совпадения по трафику
asa1(config-cmap)# match default-inspection-traffic
asa1(config-cmap)# exit
------------------------------

теперь создаём класс inspection_default 
и доверяем ему инспектировать трафик
далее прописываем какой вид трафика он будет инспектировать

------------------------------
asa1(config)# policy-map global_policy
asa1(config-pmap)# class inspection_default
asa1(config-pmap-c)# inspect ftp
asa1(config-pmap-c)# inspect icmp
asa1(config-pmap-c)# exit
asa1(config-pmap)# exit

------------------------------
Дальше возможны варианты развития событий:

Либо вы применяете его на все интерфейсы
Что не есть хорошо, ибо схема на этом не заканчивается 
asa1(config)# service-policy global_policy global

Либо на один из интерфейсов, правильнее на inside
asa1(config)# service-policy global_policy interface inside


Результат смотреть так:
asa1(config)# show service-policy inspect ftp

P.S.
Однако тот же эффект будет и на DMZ
asa1(config)# service-policy global_policy interface DMZ




P.P.S. Написано с идеи этой статьи, однако она полностью устарела.


Справочные статьи: 
http://www.cisco.com/en/US/products/ps6120/products_configuration_example09186a0080b88904.shtml
http://www.cisco.com/en/US/products/ps6120/products_configuration_example09186a00807ee585.shtml