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

Граница на замке

Антон Карпов, toxa@cterra.ru

Спецвыпуск: Хакер, номер #051, стр. 051-030-2


RULES="$RULES\npass out inet6 proto icmp6 all icmp6-type routersol"

RULES="$RULES\npass in inet6 proto icmp6 all icmp6-type routeradv"

Очевидно, pf ругается на отсутствие поддержки inet6 и падает лапками кверху. Закомментируй эти строчки или просто откажись от сборки своего ядра - на это вряд ли есть веские причины.

Сконфигурировать OpenBSD не сложнее, чем установить его. Классическое решение - шлюз, отделяющий локальную сеть с внутренней адресацией (сети 192.168.0.0/16, 172.16.0.0/12, 10.0.0.0/8 согласно RFC1918) от интернета. В этом случае нужно сконфигурировать оба интерфейса, включить маршрутизацию между интерфейсами (форвардинг) и настроить Network Address Translation (NAT). В OpenBSD сетевые карты настраиваются путем занесения в файл /etc/hostname.%26lt;имя_интерфейса%26gt; необходимой информации.

Внешний адрес:

# cat /etc/hostname.vr0

inet 62.89.2XX.XX 255.255.255.192 NONE

Внутренний адрес:

# cat /etc/hostname.vr1

inet 192.168.0.1 255.255.255.0 NONE

В /etc/sysctl.conf раскомментируй строчку:

net.inet.ip.forwarding=1

Информация о шлюзе провайдера (default gateway) заносится в файл /etc/mygate:

# cat /etc/mygate

62.89.2XX.1

Для пользователей локальной сети шлюзом по умолчанию станет внутренний интерфейс машины - 192.168.0.1. Наконец, если провайдер внес в свою зону имен A-запись для твоего шлюза (или если ты собираешься поднять свой dns-сервер, что вряд ли потребуется для домашней сети), то внеси имя машины в файл /etc/myname:

# cat /etc/myname

puffy.toxahost.ru

Если имя не обслуживается ни одним dns-сервером, то внеси то же имя в /etc/hosts:

62.89.2XX.XX puffy.toxahost.ru

Некоторые провайдеры предоставляют клиентам только внешние IP-адреса. В таком случае на твою локальную сеть будет выделена подсеть из диапазона адресов, принадлежащих провайдеру, а шлюз будет выполнять роль моста (bridge), прозрачного для сети. Поднять мост на OpenBSD просто как пять копеек:

# cat /etc/bridgename.bridge0

add vr0

add vr1

blocknonip vr0

blocknonip vr1

up

где vr0 и vr1 - интерфейсы, которые мы будем "бриджить". Хоть мост работает на втором уровне модели TCP и имеет дело исключительно с MAC-адресами, ему, тем не менее, можно присвоить IP-адрес для удаленного доступа. Строго говоря, "прозрачный мост" (transparent bridge) и мост с присвоенными адресами - разные вещи, так как ведут себя по-разному в некоторых случаях. В нашем случае требуется удаленный доступ к машине, но нет нужны присваивать адреса обоим интерфейсам, поэтому /etc/hostname.vr0 оставим как есть, а в /etc/hostname.vr1 пропишем просто поднятие интерфейса:

# echo up %26gt; /etc/hostname.vr1

Шлюзом по умолчанию для клиентов в таком случае будет роутер провайдера.

Функциональность прежде всего

Определимся с тем, что будет крутиться на шлюзе, кроме стандартного sshd для удаленного администрирования. Для получения почты с отчетами о работе системы мы запустим pop3-сервер pop’a3d (входит в штатную поставку), для подсчета трафика соорудим систему trafd/mysql. Экономить на трафике путем кеширования web-страниц будем с помощью прокси-сервера squid. Наконец, чтобы обеспечить контроль над пользователями, в качестве метода "на коленке" для защиты сети от любителей менять IP-адрес на адрес соседа поставим arpwatch, который будет вести таблицу записей "IP-MAC" и сигнализировать об аномалиях. Разумеется, для "хакера", охочего до чужого трафика, не составит труда поменять и MAC-адрес. Но по большому счету, более-менее адекватную защиту может обеспечить разве что фильтрация MAC на порту свитча (а такие приборы стоят денег) или организация VPN. Но хочешь ли ты ходить из квартиры в квартиру и показывать недалеким пользователям, где у них в Windows настраиваются политики IPSec?

Назад на стр. 051-030-1  Содержание  Вперед на стр. 051-030-3