Поиск по этому блогу

05.02.2010

Правила для FTP Passive

Вот как рекомендована реализация с использованием списка доступов ACL для корректной работы с ftp-серверами, работающими в пассивном режиме. Пассивный режим характерен тем, что недостаточно открыть порты ftp и ftp-data, так как в течение сессии соединение с сервером устанавливается повторно на случайный порт из определенного диапазона. Разные версии серверов, понятно, настроены по-разному и эти диапазоны различны. Поэтому, если необходимо открыть доступ к публичным ftp серверам, то получается примерно такие правила:
permit tcp 10.0.0.0 0.0.0.255 any eq ftp
permit tcp 10.0.0.0 0.0.0.255 any eq ftp-data
permit tcp 10.0.0.0 0.0.0.255 any range 1024 65535

Очевидное неудобство заключается в открытии всего диапазона tcp портов, куда попадают большинство приложений, например, torrent'ы.
На такой случай в IOSах есть фича Context-based access control (CBAC) , которая отслеживает сессии, создает динамические правила на определенное время.
ip inspect name LAN ftp

interface FastEthernet0/0.100
description LAN
encapsulation dot1Q 100
ip address 10.0.0.254 255.255.255.0
ip access-group LAN.in in
ip inspect LAN in

ip access-list extended LAN.in
permit ip 10.0.0.0 0.0.0.255 10.0.0.0 0.255.255.255
permit tcp 10.0.0.0 0.0.0.255 any eq ftp
permit tcp 10.0.0.0 0.0.0.255 any eq ftp-data
permit tcp 10.0.0.0 0.0.0.255 any eq www

В ACL создан минимум правил, которые разрешают неограниченный доступ из локальной сети LAN в другие подсети корпоративной сети, разрешают ftp,www доступ в сеть интернет. Без inspect'а можно было работать с ftp-серверами, поддерживающими активный режим.
Для проверки будем скачивать антивирусную утилиту CureIT от DrWeb, которая размещена на многих ftp-серверах, размещенных в свою очередь у различных операторов по всему миру. Очевидно, что без inspect перечислять все эти сети в ACL было бы бесполезно:
# host ftp.drweb.com
ftp.drweb.com is an alias for rr.drweb.com.
rr.drweb.com has address 210.233.71.100
rr.drweb.com has address 81.176.67.170
rr.drweb.com has address 81.176.67.171
rr.drweb.com has address 81.176.67.173
rr.drweb.com has address 81.177.37.3
rr.drweb.com has address 83.102.130.174
rr.drweb.com has address 87.242.75.130
rr.drweb.com has address 87.242.75.131
rr.drweb.com has address 91.121.123.94
rr.drweb.com has address 194.67.52.58
rr.drweb.com has address 210.233.71.98

В итоге наблюдаем, как справился с работой inspect:
router#show ip inspect all
Session audit trail is disabled
Session alert is enabled
one-minute (sampling period) thresholds are [unlimited : unlimited] connections
max-incomplete sessions thresholds are [unlimited : unlimited]
max-incomplete tcp connections per host is unlimited. Block-time 0 minute.
tcp synwait-time is 30 sec -- tcp finwait-time is 5 sec
tcp idle-time is 3600 sec -- udp idle-time is 30 sec
tcp reassembly queue length 16; timeout 5 sec; memory-limit 1024 kilo bytes
dns-timeout is 5 sec
Inspection Rule Configuration
Inspection name LAN
ftp alert is on audit-trail is off timeout 3600

Interface Configuration
Interface FastEthernet0/0.100
Inbound inspection rule is LAN
ftp alert is on audit-trail is off timeout 3600
Outgoing inspection rule is not set
Inbound access list is LAN.in
Outgoing access list is not set

Established Sessions
Session 48941834 (10.0.0.100:2701)=>(83.102.130.174:21) ftp SIS_OPEN
Session 4893E35C (10.0.0.100:2702)=>(83.102.130.174:64471) ftp-data SIS_OPEN
Session 4893FF2C (10.0.0.100:2704)=>(83.102.130.174:64487) ftp-data SIS_OPEN
Session 4893E624 (10.0.0.100:2703)=>(83.102.130.174:21) ftp SIS_OPEN