Опыт организации граничных шлюзов на основе Linux

Опыт организации граничных шлюзов на основе Linux

(тезисы доклада на конференции “open source forum ’05”)

Николай Малых

ЗАО BiLiM Systems

Санкт-Петербург

Современный бизнес практически немыслим без использования сетевых технологий хотя бы для получения доступа к информации через Internet. Следовательно для большинства организаций актуальна задача подключения своей локальной сети к внешним сетям. При организации такого подключения возникает необходимость установки на стыке сетей (периметре внутренней сети) специальных аппаратно-программных комплексов, которые будем называть далее шлюзами. В задачи граничного шлюза входит:

  • маршрутизация трафика между внутренней сетью и одним или несколькими каналами связи с внешними сетями;
  • контроль и учет трафика входящего в сеть и выходящего из него;
  • трансляция адресов сетевого уровня (IP).

Для решения такого рода задач выпускается множество устройств, однако все эти устройства рассчитаны на массовые (типовые) варианты использования и далеко не всегда соответствуют потребностям конкретной организации. Показательным примером может служить автономная система, включающая сеть одной организации. Для этого случая требуется установить на границе сети шлюз, который поддерживает протокол BGP4 и обеспечивает функции сетевого экранирования (брандмауэр). Стоимость такого шлюза (маршрутизатора) общего назначения сегодня составляет около 15 тысяч долларов США.

Операционные системы семейства UNIX содержат все, что необходимо для организации такого шлюза, в своем составе или в числе прикладных программ. Мы выбрали для организации шлюза ОС RedHat, хотя в процессе его создания и последующего развития от исходного набора файлов RedHat мало что осталось, поскольку большая часть используемых пакетов была собрана из исходных кодов с внесением во многих случаях тех или иных изменений. В качестве аппаратной платформы используется ПК общего назначения с процессором Celeron 300 МГц, оперативной памятью размеров 512 Мбайт и дисковым накопителем размером 20 Гбайт. Очевидно, что рыночная стоимость такого ПК на сегодняшний день не превышает нескольких десятков долларов.

Шлюз используется для маршрутизации пакетов между четырьмя сегментами FastEthernet – 2 внешних канала, локальная сеть компании и сегмент публичных серверов (DMZ). Наша компания имеет зарегистрированную автономную систему, поэтому на шлюзе поддерживается протокол BGP4 для анонсирования наших префиксов и получения маршрутной информации от 2 провайдеров.

Ядро Linux собрано и оптимизировано с учетом использования компьютера в качестве маршрутизатора и межсетевого экрана, поэтому в нем отключены все ненужные компоненты и отключена поддержка загружаемых модулей (LKM). Монолитное ядро позволяет повысить производительность системы и предотвращает возможность неконтролируемой загрузки модулей (например, троянских программ, выполненных в форме LKM). В ядре также отключена поддержка функций, позволяющих осуществить несанкционированный локальный доступ к шлюзу (монитор, клавиатура, мышь, порты USB, LPT)

Для обеспечения маршрутизации используется пакет Zebra с незначительными доработками, который собран с поддержкой лишь реально используемых протоколов OSPF и BGP4. Фильтрация пакетов и учет трафика осуществляются на основе Netfilter/iptables с незначительными доработками по сравнению со стандартным набором, распространяемым в составе ядра, iptables и POM. Для мониторинга целостности файловой системы шлюза используется пакет samhain, а для проверки на наличие в системе враждебного кода набор утилит, включающий chkrootkit, rkhunter и др. Контроль записей в журнальных файлах осуществляется с помощью простой утилиты logcheck. Для обеспечения дополнительной надежности некоторые записи дублируются на сервере syslog, находящемся внутри сети компании. В качестве системы детектирования попыток вторжения или иных нежелательных действий (например сканирования портов) для шлюза и внутренних сетей используется стандартный пакет Snort. В нашем случае шлюз служит лишь в качестве набора датчиков Snort, собирающих информацию и передающих ее в базу данных на один из внутренних серверов. Кроме того, попытки входа в систему или проникновения в сеть регистрируются также с помощью утилиты hostsentry и набора правил iptables. Дополнительным детектором попыток сканирования служит утилита portsentry и набор правил iptables.

Перечислим набор функций, реализованных на шлюзе:

  • маршрутизация пакетов IP с поддержкой протоколов BGP4 и OSPF;

  • трансляция адресов для входящего и исходящего трафика;

  • межсетевое экранирование с учетом состояния соединений (stateful);

  • фильтрация пакетов, входящих в сеть и выходящих наружу:

  • ingress-фильтрация в соответствии с RFC 2267;

  • фильтрация спама на основе списков доступа;

  • фильтрация спама по частоте попыток подключения;

  • фильтрация попыток несанкционированного доступа к шлюзу по протоколу SSH;

  • фильтрация нежелательного трафика по протоколам, номерам портов и адресам IP;

  • управление полосой для исходящего трафика;

  • детектирование попыток сканирования или проникновения в сеть;

  • блокирование DoS-атак на шлюз и хосты внутренних сетей;

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

  • удаленное управление с использованием SSH-соединений и Web-интерфейса;

  • детектирование попыток вторжения и сканирования для шлюза и внутренней сети;

  • детектирование и блокирование недопустимого исходящего трафика для предотвращения возможности организации атак из сети компании;

  • система мониторинга и оповещения администратора о сигналах тревоги по электронной почте или с помощью SMS;

  • учет трафика пользователей из внутренней сети;

  • система LookingGlass для проверки связности сети из удаленных точек.

Данный шлюз в описанной конфигурации используется с начала 2002 года и доказал свою надежность и эффективность.

Запись опубликована в рубрике Linux. Добавьте в закладки постоянную ссылку.