Издательский дом ООО "Гейм Лэнд"СПЕЦВЫПУСК ЖУРНАЛА ХАКЕР #68, ИЮЛЬ 2006 г.

тайная канцелярия

КОНСТАНТИН ГАВРИЛЕНКО

Спецвыпуск: Хакер, номер #068, стр. 068-056-3


Для статьи использовалocь последнee стабильнoe 2.6.16 ядрo, ipsec-tools 0.6.5 и iproute2 2.6.16.

Опустим стандартный процесс сборки и установки, сконцентрировавшись непосредственно на самом процессе конфигурации.

проверь, что в конфигурационном файле ядра следующие опции отмечены для включения в ядрo или выбраны как модули

CONFIG_XFRM=y CONFIG_CRYPTO_MD5=y

CONFIG_XFRM_USER=m CONFIG_CRYPTO_SHA1=m

CONFIG_NET_KEY=m CONFIG_CRYPTO_SHA256=m

CONFIG_INET_AH=m CONFIG_CRYPTO_SHA512=m

CONFIG_INET_ESP=m CONFIG_CRYPTO_DES=y

CONFIG_INET_IPCOMP=m CONFIG_CRYPTO_AES=m

CONFIG_INET_TUNNEL=m CONFIG_CRYPTO_DEFLATE=m

ЛИСТИНГ

проверь, что два хоста, между которыми ты собираешься устанавливать туннель, не имеют никаких препятствий для связи (если установлен брандмауэр, то разреши соединения на UDP-порты 500, 4500 и протоколы 50 и 51)

iptables -A INPUT -i eth0 -p 50 -j ACCEPT

iptables -A INPUT -i eth0 -p 51 -j ACCEPT

iptables -A INPUT -i eth0 -p udp --dport 500 -j ACCEPT

iptables -A INPUT -i eth0 -p udp --dport 4500 -j ACCEPT

для отделения потока трафика, пришедшего через IPSec-туннель, необходимо пометить входящие ESP-пакеты и разрешить беспрепятственный доступ или перенаправить их в отдельную таблицу

iptables -t mangle -A PREROUTING -i eth0 -p esp -j MARK --set-mark 50

iptables -A INPUT -i eth0 -m mark --mark 50 -j ACCEPT

[конфигурация «хост в хост».]

Существует достаточно возможностей установления безопасного соединения между двумя статическими хостами, начиная от использования SSH для защиты административного канала управления или инкапсуляции всего трафика в PPP- канал связи с последующей защитой через SSH или SSL. Хотя наиболее простым и правильным решением в данном случае будет установка хост в хост IPSec соединения, используя PSK для аутентификации сторон.

Ракун — достаточно сложный в конфигурации демон с огромным количеством опций, большинство из которых, к счастью, можно оставить по умолчанию, что значительно облегчает задачу.

В первую очередь нужно установить пароль. Значение ключа устанавливается в файле psk.txt (проверь, чтобы права доступа были 400, -r-------- 1 root root, иначе Ракун не запустится).

генерирование случайного ключа

arhontus / # dd if=/dev/random bs=16 count=1 | xxd -ps

1+0 records in

1+0 records out

16 bytes (16 B) copied, 4.4e-05 seconds, 364 kB/s

cc0c6778f478f5aff03caa38779090c1

помести ключ в файл psk.txt, который имеет двухстолбцовую структуру

arhontus racoon # cat psk.txt

192.168.55.66 cc0c6778f478f5aff03caa38779090c1

В первом столбце указывается идентификатор хоста, будь-то ИП-адрес или имя хоста, а во втором — сам ключ. Такую же операцию проведи и на втором хосте, заменив ИП на противоположный.

Далее необходимо задать политику безопасности IPSec, а именно — какие каналы коммуникации необходимо защитить, а так же каким образом будет осуществляться защита соединения. Политику безопасности возможно определить для хостов и для направления соединения, а также и на уровне сокета, которым пользуется программа. При запуске Ракун не пытается немедленно установить соединение, а ждет уведомления от ядра о том, что данное соединение становится активным и нуждается в защите, после чего инициирует обмен ключами.

Назад на стр. 068-056-2  Содержание  Вперед на стр. 068-056-4