Довольно часто случается ситуация, когда фирма слишком мала, чтобы
держать постоянного администратора или у крупной фирмы имеется
маленький филиал, с которым необходимо организовать связь по
защищенному каналу или просто предоставить доступ в Internet.
Естесственно, встает вопрос выбора маршрутизатора и общепринятых
выходов тут два:
1. Обычный PC с установленной unix-like ОС
2. Аппаратный маршрутизатор
Конечно, первый вариант позволяет реализовать в рамках одной машины
такие службы как DNS, Mail, Web и т.д но зачастую такие возможности
просто остаются невостребованными.
Мы рассмотрим второй вариант. В качестве маршрутизатора выберем
Cisco SB 101 Secure Broadband Router по причине низкой цены (240$)
и довольно широких возможностей, которые, впрочем, тоже имеют свои
пределы, не стоит забывать, что это младший продукт в линейке, если
вам нужно больше, то обратитесь к моделям 851 или 835.
Начальная настройка вряд ли вызовет у кого затруднения, но на всякий
случай приведу конфигурацию, минимально необходимую для начала работы:
!
! Last configuration change at 09:40:53 UTC Fri Feb 3 2006 by mixa
! NVRAM config last updated at 09:40:55 UTC Fri Feb 3 2006 by mixa
!
version 12.4
no service pad
service timestamps debug datetime msec
service timestamps log datetime msec
service password-encryption
!
hostname dream
!
boot-start-marker
boot system flash sb101-k9oy6-mz.124-5a.bin
boot-end-marker
!
logging buffered 51200 warnings
!
no aaa new-model
!
resource policy
!
ip rcmd rcp-enable
ip rcmd rsh-enable
ip rcmd remote-host cisco 10.1.255.3 cisco enable
no ip dhcp use vrf connected
ip dhcp excluded-address 10.1.255.1
ip dhcp excluded-address 10.1.255.2
ip dhcp excluded-address 10.1.255.3
!
ip dhcp pool mynet
import all
network 10.1.255.0 255.255.255.0
default-router 10.1.255.1
dns-server 10.1.1.1
lease 0 2
!
!
ip cef
no ip domain lookup
ip domain name home.dreamcatcher.ru
ip host bill 10.1.255.3
ip host mixa 10.1.255.2
ip name-server 217.72.144.76
ip name-server 10.1.1.1
!
!
username mixa privilege 15 secret megapassword
!
!
!
!
!
interface Ethernet0
description --- Inner Interface ---
ip address 10.1.255.1 255.255.255.0
ip nat inside
!
interface Ethernet1
description --- Outer Interface ---
bandwidth 128
ip address 10.1.1.28 255.255.255.0
ip nat outside
duplex auto
fair-queue
no cdp enable
!
ip route 0.0.0.0 0.0.0.0 10.1.1.100
no ip http server
no ip http secure-server
ip flow-export version 5
ip flow-export destination 10.1.255.3 9999
!
ip nat translation tcp-timeout 300
ip nat inside source list 10 interface Ethernet1 overload
!
!
access-list 10 permit 10.1.255.0 0.0.0.255
snmp-server community secret RO 10
!
control-plane
!
banner motd *
Dreamcatcher Home
*
!
line con 0
login local
no modem enable
transport output all
line aux 0
transport output all
line vty 0 4
access-class 10 in
privilege level 15
login local
transport input ssh
transport output all
!
scheduler max-task-time 5000
end
Не забывайте, что если вы планируете работать с шифрованными туннелями
и ssh, то необходимо выполнить команду:
Как вы можете увидеть, настроен протокол NetFlow, позволяющий собирать
и анализировать информацию о трафике, заблокирован NetBios, доступ к
консоли разрешен только из локальной сети и сконфигурирован доступ
rsh/rcp, что весьма удобно для написания скриптов.
Данный маршрутизатор имеет встроенный пакетный фильтр, настройку и
работу которого я бы и хотел рассмотреть в данной статье.
Этот механизм называется CBAC. Context-Based Access Control (CBAC)
возможность, заложенная в Cisco IOS(R) Firewall Feature Set,
позволяющая определять, какой трафик должен быть разрешен на основании
списков доступа (access list). Списки доступа CBAC включают инструкции
анализа ip, позволяющие удостовериться в отсутствии нападения прежде,
чем трафик будет передан внутрь локальной сети.
CBAC может использоваться совместно с NAT, в этом случае наши списки
доступа должны ссылаться на внешние адреса, а не на адреса локальной
сети.
При составлении правил CBAC необходимо ответить на три ключевых
вопроса:
1. Какой исходящий трафик мы пропускаем?
2. Какой входящий трафик мы пропускаем?
3. Какой трафик мы хотим анализировать?
В нашем случае, мы предполагаем, что такие службы как DNS и почта
предоставляются провайдером, используется NAT.
Наша конфигурация использует только входящие списки доступа, мы делаем
anti-spoofing и фильтрацию входящего трафика одним списком
(Output-Traf). Ethernet 1 является внешним интерфейсом, Ethernet 0 -
внутренним. Таким образом, получаем:
!
ip inspect name Internet ftp timeout 3600
ip inspect name Internet h323 timeout 3600
ip inspect name Internet http timeout 3600
ip inspect name Internet smtp timeout 3600
ip inspect name Internet tcp timeout 3600
ip inspect name Internet udp timeout 15
!
interface ethernet 0
ip inspect Internet in
ip access-group Output-Traf in
interface ethernet 1
ip access-group Input-Traf in
!
!
ip access-list extended Input-Traf
remark ----- Deny incoming trafic -----
permit icmp any host 10.1.1.28 unreachable
permit icmp any host 10.1.1.28 echo-reply
permit icmp any host 10.1.1.28 packet-too-big
permit icmp any host 10.1.1.28 time-exceeded
permit icmp any host 10.1.1.28 traceroute
permit icmp any host 10.1.1.28 administratively-prohibited
permit icmp any host 10.1.1.28 echo
deny ip any any log
ip access-list extended Output-Traf
remark ----- Premit out trafic -----
permit tcp 10.1.255.0 0.0.0.255 any
permit udp 10.1.255.0 0.0.0.255 any
permit icmp 10.1.255.0 0.0.0.255 any
deny ip any any log
!
Проверить работу пакетного фильтра можно следующей командой:
dream#show ip inspect session
Established Sessions
Session 81BAE880 (10.1.255.5:65402)=>(192.168.1.2:21) ftp SIS_OPEN
Session 81BAF780 (10.1.255.5:65399)=>(192.168.1.2:64255) ftp-data SIS_OPEN
Список Output-Traf предназначен для исходящего трафика, а Input-Traf
для входящего. Как вы видите, список Input-Traf запрещает все, кроме
служебного icmp трафика и если вы прикрепите его к интерфейсу без
задания ip inspect, то доступ в мир будет закрыт, так как все ответы,
на посланные из сети запросы будут заблокированы. Принцип действия
CBAC некоторым образом можно сравнить с действием правил типа
"keep-state" в пакетных фильтрах IPF, PF, etc. - создается
динамическое правило, пропускающее ответные пакеты по направлению в
локальную сеть.
CBAC поддерживает следущие протоколы:
Ключевое имя Протокол
cuseeme CUSeeMe Protocol
ftp File Transfer Protocol
h323 H.323 Protocol (например Microsoft NetMeeting или Intel Video Phone)
http HTTP Protocol
rcmd R commands (r-exec, r-login, r-sh)
realaudio Real Audio Protocol
rpc Remote Procedure Call Protocol
smtp Simple Mail Transfer Protocol
sqlnet SQL Net Protocol
streamworks StreamWorks Protocol
tcp Transmission Control Protocol
tftp TFTP Protocol
udp User Datagram Protocol
vdolive VDOLive Protocol
Таким образом, с помощью CBAC мы можем достаточно хорошо защитить нашу
локальную сеть, получив довольно дешевое и качественное решение.