понедельник, 31 января 2011 г.

Настройка ICMP политик

Для предотвращения reconnaissance атак следует запретить все ICMP сообщения, кроме разрешенных.
В зависимости от условий, могут быть различные настройки, но, как правило, необходимо  разрешать: 
1.   PING   
Название
Type
Code
Echo request
8
0
Echo reply  
0
0

2.   TRACEROUTE
Название
Type
Code
11
1
Destination port unreachable
3
3

3.   Для обеспечения работы Path MTU discovery
Название
Type
Code
Fragmentation required, and DF flag set
3
4

Необходимо помнить, что маршрутизатор  применяет ACL только к транзитным пакетам (за некоторым исключением на некоторых платформах) и не применяет  к пакетам, сгенерированным самим маршрутизатором.  Для подавления сообщений, сгенерированных маршрутизатором,  ICMP Type 3 существует команда интерфейса no ip unreachable.  Однако, на внешнем интерфейсе она не всегда хороша, т.к. эта команда подавляет  отправку сообщений ICMP Type 3 Code 4 (Fragmentation required, and DF flag set), делая невозможным Path MTU Discovery. Чтобы маршрутизатор не генерировал сообщения ICMP Type 3 при обращении на диапазон неиспользуемых адресов, нужно на Null интерфейсе (предполагаем, что маршрут к неиспользуемым адресам указывает именно туда)  прописать  ip unreachable, тогда маршрутизатор пакеты к этим адресам будет отбрасывать молча.

List of permitted control messages (incomplete list)

Type
Code
Description
0 - Echo Reply[3]
0
1 and 2

Reserved
3 - Destination Unreachable[4]
0
Destination network unreachable
1
Destination host unreachable
2
Destination protocol unreachable
3
Destination port unreachable
4
5
Source route failed
6
Destination network unknown
7
Destination host unknown
8
Source host isolated
9
Network administratively prohibited
10
Host administratively prohibited
11
Network unreachable for TOS
12
Host unreachable for TOS
13
Communication administratively prohibited
0
Source quench (congestion control)
0
Redirect Datagram for the Network
1
Redirect Datagram for the Host
2
Redirect Datagram for the TOS & network
3
Redirect Datagram for the TOS & host
6

Alternate Host Address
7

Reserved
0
Echo request
9 - Router Advertisement
0
Router Advertisement
10 - Router Solicitation
0
Router discovery/selection/solicitation
11 - Time Exceeded[5]
0
TTL expired in transit
1
Fragment reassembly time exceeded
12 - Parameter Problem: Bad IP header
0
Pointer indicates the error
1
Missing a required option
2
Bad length
0
Timestamp
0
Timestamp reply
15 - Information Request
0
Information Request
16 - Information Reply
0
Information Reply
0
Address Mask Request
0
Address Mask Reply
19

Reserved for security
20 through 29

Reserved for robustness experiment
0
Information Request
31

Datagram Conversion Error
32

Mobile Host Redirect
33

Where-Are-You (originally meant for IPv6)
34

35

Mobile Registration Request
36

Mobile Registration Reply
37

Domain Name Request
38

Domain Name Reply
39

40

41

42 through 255

Reserved

пятница, 28 января 2011 г.

Особенности реализации TRACEROUTE на различных ОС


Принцип работы команды основан на отсылке серии IP пакетов с возрастающим параметром Time To Live (TTL) от 1 до максимум  30 (по умолчанию).  Каждый маршрутизатор на пути следования пакета, приняв пакет с TTL=1 отсылает источнику сообщение ICMP type 11 , code 0 (time exceeded, TTL exceeded). Таким образом, у источника есть шанс узнать путь к хосту назначения. При условии, конечно, что для всех отосланных пакетов путь был одинаковым, т.е. маршруты стабильными и предопределенными.  На разных операционках команда реализована разными способами.

 Cisco IOS и Linux
Используются udp пакеты с начальным TTL по умолчанию равным 1 и с начальным портом назначения по умолчанию 33434. Порт источника выбирается случайным образом выше 0x8000 (32768).  Каждый следующий пакет высылается на следующий UDP порт, а порт источника снова выбирается случайным образом.  Т.н. расширенная (extended) traceroute позволяет задавать параметры, отличные от параметров по умолчанию.
Каждый маршрутизатор на пути следования пакетов, получивший пакет с TTL=1 отсылает источнику ICMP сообщение type 11, code 0 (time exceeded, TTL exceeded).
По достижении пакетом хоста назначения, последний отправляет ICMP type3, code 3 (destination unreachable, port unreachable).
В Linux команда работает похожим образом, только порт источника остается постоянным.

 
На Cisco маршрутизаторах коды ответов команды traceroute в CLI:
! -- success
* -- time out
N -- network unreachable
H -- host unreachable
P -- protocol unreachable
A -- admin denied
Q -- source quench received (congestion)
? -- unknown (any other ICMP message)

Для предотвращения DoS атак на Cisco маршрутизаторах установлено ограничение на отправку сообщений ICMP ureachable не чаще, чем раз в 500 ms. Это объясняет "пропадающие" ответные пакеты. В версиях IOS 12.1 и выше 'njn параметр можно поменять командой
 
no ip icmp rate-limit unreachable
 
 
 
Microsoft Windows
Для трассировки использует ICMP  type=8, code=0 (echo request) вместо UDP. Соответственно, хост назначения высылает ICMP type=0, code=0 (echo reply). Все остальное аналогично.

понедельник, 24 января 2011 г.


Настройка Enhanced Easy VPN Server на ISR маршрутизаторах Cisco.

Задача




Обеспечить удаленным пользователям ограниченный доступ (только к одному серверу) в корпоративной сети (LAN) по шифрованному каналу.
Оборудование – CISCO 18XX
Шифрованный канал организован с использованием технологий Cisco Enhanced Easy VPN на сервере и Cisco VPN Client в качестве Remote части. Cisco Enhanced Easy VPN – это традиционный Easy VPN реализованный с использованием dynamic VTI вместо crypto map.

Cisco Router
Удаленный клиент
Cisco Enhanced Easy VPN Server (dVTI)
Easy VPN remote (Cisco VPN Client)

IOS -  Version 12.4 ADVANCED SECURITY
Аутентификация – pre-shared key
Split Tunneling – разрешен
Пользователю назначается адрес из диапазона (10.10.10.1-10.10.10.254) и разрешается доступ только к почтовому серверу сети (10.10.20.0/24). Права доступа являются per-group-based.

Аутентификация и авторизация пользователей будет производиться с помощью локальной базы, т.к. по аутентификация LDAP не поддерживается, а развертывание дополнительного Radius сервера для малого офиса представляется неэффективным. 



Заходим в режим конфигурации
Cisco_Router# conf t
и получаем такую строку приглашения режима конфигурации
Cisco_Router(config)#
Далее строка приглашения не показана

На Cisco Router  создаем пользователя VPNUSER
username VPNUSER password VPNpass

На Cisco Router определяем локальную аутентификацию и авторизацию
aaa new-model
aaa authentication login default local
aaa authorization exec default local
aaa authorization network default local

Для запрещения пользователю доступа к локальному shell используем ATTRIBUTE LIST
aaa attribute list VPNaccess
attribute type service-type noopt service shell mandatory

Назначаем созданному пользователю этот ATTRIBUTE LIST
username VPNUSER aaa attribute list VPNaccess

Создадим пул адресов
ip local pool dpool 10.10.10.1 10.10.10.254

Определяем CRYPTO POLICY
crypto isakmp policy 10
encr 3des
authentication pre-share
group 2
crypto isakmp keepalive 10

Задаем TRANSFORM-SET
crypto ipsec transform-set MYSET esp-3des esp-sha-hmac

Определяем  VTI PROFILE
crypto ipsec profile VTI
set transform-set MYSET
set isakmp-profile VPNRemoteProfile 
Создадим шаблон клиентского профайла
crypto isakmp profile VPNRemoteProfile
match identity group RemoteVPN
client authentication list default
isakmp authorization list default
client configuration address respond
virtual-template 1

Создадим ACL для Split Tunnel
ip access-list extended Split_Tunnel_ACL
permit ip 10.10.20.0 0.0.0.255 any

Создаем группу VPN
crypto isakmp client configuration group RemoteVPN
key VPNRemote
dns 10.10.10.5
domain mydomain.ru
pool dpool
acl Split_Tunnel_ACL
access-restrict FastEthernet0/1
pfs

Создадим ACL для VPN Access
ip access-list extended VPN_Access
permit ip 10.10.10.0 0.0.0.7 10.10.20.0 0.0.0.255 log

Создадим шаблон VTY для пользователей
interface Virtual-Template 1 type tunnel
ip unnumbered FastEthernet0/1
ip access-group VPN_Access in
tunnel source FastEthernet0/1
tunnel mode ipsec ipv4
tunnel protection ipsec profile VTI


Команды для проверки

show aaa attributes protocol radius
show crypto session detail
show interface virtual-template
show ip interface brief
debug aaa per-user