Безопасность и проект Linux Router

  Автор: © Mark Fevola
Перевод: © Иван Песин.


 

Дыры в ядре делаются примерно так же часто, как и обновляется код ядра. Ну да ладно, возможно, не это главное. Тем не менее, уязвимыми местами изобилует любая ОС, вне зависимости от аппаратной платформы. Проект Linux Router (да и вообще, любой маршрутизатор, базирующийся на Linux) обладает некоторыми уникальными пробелами в защите, которых нет в Cisco или других аппаратных маршрутизаторах. Это следует из природы ПК и ядра Linux. Как пример можно указать переполнение буфера в Linux, неизвестный феномен для аппаратных маршрутизаторов. Администратор LRP, вынужден следить за этим и при необходимости - бороться.

Аппаратные решения. С одной стороны, для каждого типа соединения, как-то: ISDN, Ethernet, frame relay T1, xDSL, PPP, ..., даже кабельный модем, имеем: роутер с портмаппингом, Ethernet хаб со стильным графическим HTML интерфейсом, и т.д. - то есть, необходимо отдельное устройство. Каждое устройство специально сделано для определенных и специализированных задач. Кроме того, исходный код и аппаратная часть являются закрытыми и патентованными.

С другой стороны, у нас имеется x86 процессор общего назначения, который может делать что угодно, лишь бы было соответствующее ПО, а проект Linux Router - отличная программа. Он представляет из себя открытую альтернативу аппаратным маршрутизаторам, так же как и Linux, усилиями масс, стал альтернативой коммерческих Унихов. Проект LR базируется на свежем ядре Linux, настроенном специально для решения задач маршрутизации, и легко адаптируем для сетей со следующими требованиями:

  • Скорость и эффективность: абсолютно ничего лишнего, только маршрутизация, маршрутизация и еще раз маршрутизация.
  • Восстановление после сбоев: Если, например, на LR умирает установленная SMC сетевая карта, вы можете вставить вместо нее сетевую Netgear без каких-либо проблем. Надо только подгрузить модуль tulip.o.
  • Безопасность: Ядро работает напрямую со всем аппаратным обеспечением, сетевой подсистемой, подсистемой ввода-вывода, фронт-эндом. Я вернусь к этому чуть позже.

Традиционно, фаерволл и роутер - это разные устройства. И каждый сервис, будь-то прокси или еще что-то, имеет свое аппаратное обеспечение, специально разработанное для той функции, которую он (сервис) выполняет. В наше время, такое аппаратное обеспечение имеет тенденции комбинировать свои функции, так же как и интерфейс ATA IDE сейчас встраивается в материнскую карту, тогда как не более чем 4 года тому, это была отдельная ISA карта.

В конечном итоге, такие многоцелевые устройства, создают новое направление в теории безопасности. А под безопасностью мы понимаем огромное количество вещей. Это и физическая безопасность, и внутренняя, и сетевая, и .. и так еще много "и". И если производство решает уйти от использования аппаратуры закрытой архитектуры, оно должно переосмыслить свою систему безопасности. Вот набросок плана:

I. Физическая безопасность

  1. Политика. Сперва составьте политики безопасности и аудита. Вы не завладеете миром, до тех пор пока у вас нет плана. Воплотите его. Начните с карты сети, и списка:
    • Какие сервисы запущены и на каких машинах
    • У кого какие права доступа
    • Где расположены машины
    • Другие правила, такие как "пароли должны быть 8-символьные, один из которых не символьный", и т.д.
    ...даже такие детали, как насколько часто будут проверяться дискеты с паролями. Когда вы разложите все эти списки перед собой, остаток плана определится сам собою. Когда вы знаете, где работают какие сервисы , легко составить правила фильтрации.

  2. Резервные копии. Скопируйте дискету проекта LR. Не тратьте время на сохранение конфигурационных файлов, просто запишите образ дискеты (а-ля "dd"). Будьте осторожны, т.к. некоторые варианты проекта LR больше, нежели 1.44M и следовательно должны быть смонтированы как (копированы с) /dev/fd0u1680 или аналогичного устройства. Если в системе нет такого устройства, создайте его командой "mknod". Так что резервная копия в этом случае - штука очень быстрая и экономная.

  3. Физическая безопасность и местонахождение. Так как носителем данных проекта LR является флоппи диск, мы должны закрыть компьютер без монитора, без клавиатуры, так, чтобы никто не мог заменить настоящую дискету подделкой. И что бы никто не мог вытащить дискету с целью разрушения: низко техническая DoS атака. Этот подход полезен и с Кисками (Cisco'ми), несмотря на то, что загрузить с подложной системой их нельзя. Если не возможно уединить компьютер, можно отодвинуть дисковод на несколько сантиметров вглубь корпуса, вставить дискету, а снаружи закрыть пластиковой панелью. Это так называемая 'безопасность неизвестностью'.

  4. Запуск. Настоящие серверные помещения оснащены (в дополнении к ограниченному доступу, галоид углеродным огнетушителям, бесперебойному питанию, кондиционированию воздуха и изоляции кабелей) стойками для устройств. Теоретически стойки и фальшполы предназначены для работы с кабельной инфраструктурой, практически же - для хорошей вентиляции, легкого доступа извне, огня, воды, ведер с швабрами, пролитого кофе. LR можно поставить просто на стол. Подойдет даже старый соломенный тюфяк.

  5. Пароль BIOS. Помните, что ваш маршрутизатор - это ПК. Используйте пароль в BIOS. Я не уверен, имеют ли BIOSы 486 материнских плат общий пароль, так что будьте осторожны.

II. Безопасность уровня ядра

Уязвимые места у ядра Linux и у аппаратных маршрутизаторов отличаются. Данные группы CERT, свидетельствуют, что самые распространенные типы атак - это "отказ сервиса" (DoS) и сканирование. Атаки типа DoS легко выполнимы и, в то же время, от них тяжело защитится. Атаки, ориентированные на переполнение буфера (нестандартные), и DoS атаки (обычные) возможны в обоих случаях. Сканирование портов может происходить как изнутри, так и снаружи. Однако, сканирование, не являсь атакой как таковой, может вызвать повышенное число пересоединений в сети, и даже отказ сервиса, в зависимости от интенсивности сканирования. Для того, что бы лучше с этим разобраться, надо посмотреть несколько прецедентов.

Мы решаем эти проблемы ядра при помощи патчей безопасности и nmap. Из главных клонов LRP, ядра Oxygen включают патч Openwall --фактически Oxygen постоянно обновляется. Если вы находите прокол в защите, можете отдыхать спокойно - это последний Oxygen. Согласно Дэвиду Дауситту (David Douthitt), интеллект спрятанный в Oxygen, позволяет ядру защищаться "от IP спуфинга, необычной адресации (martians), и отклонять переадресации и эхо-запросы IСMP." --Но даже в этом случае, стандартная фильтрация (сетевая безопасность, см. ниже) должна так же включать эти правила.

nmap: Я называю это "наследник SATAN". Это программа, на которую нужно равняться остальным. nmap сканирует любые наборы TCP и UDP портов по любым IP адресам и ищет уязвимости в вашей сети. nmap обнаруживает лишние сервисы, которые работают на вашей машине с проектом LR. Такие сервисы есть (например discard, daytime, time). Быстрый экскурс по ecurityFocus.com или Rootshell.com объяснит вам, как этим пользоваться.

Форум CERT не обсуждает проблемы защиты от собственных пользователей в собственной сети, такие, например, как безопасность файловых систем или перехват пакетов (sniffing). Утилиты файловой системы, такие как fdisk, mke2fs или fstab здесь обсуждаться не будут (хотя я надеюсь, что разработчики проекта LR включат команду chattr в будущие релизы LR, которые будут позволять не-root'овый вход в систему), а перехват пакетов вас не будет волновать, если вы будете регистрироваться с консоли. О-о-опс, а консоли-то нету... Значит, таки будет волновать.

Перехват пакетов вещь весьма опасная. Во многих случаях, возможен перехват пакетов из разных логических сетей, например в случае использования кабельных модемов. Вырусы, сканирование и каждый из тысяч "UNICODE багов" уже настолько распространены, что мы можем ожидать более широкого использования перехвата пакетов - вплоть до получения отдельной категории в отчетах CERT, если только оно уже не получило... Очень интересно, как недостаток IP адресов облегчает атаки...

Шифрование и аутентификация (ssh, ssl, smime, PGP) защитит вас от перехвата. Но учитывая, что любой шифр рано или поздно можно взломать, большее, на что мы можем надеяться, это то, что данные потеряют ценность к тому времени, когда их расшифруют. Важно защитить данные от самых больших из возможных дырок - таких как сессия telnet. Кого волнует, если кто-то расшифрует сессию год спустя? Очень многие маршрутизаторы, зависят от идентификации паролем, а это первая цель при грубых атаках. Проект LR тут в выигрыше - он поддерживает ssh.

III. Сетевая и внешнемаршрутизационная безопасность

Физическая безопасность и безопасность уровня ядра, несмотря на специфичность в отношении к проекту LR может и должна применяться в любой ситуации. Далее следует список основных правил безопасности, очень универсальных и на LRP-специфических. Я включил их здесь, для полноты изложения типов безопасности и не буду вдаваться в подробности.

Схема для типичного маршрутизатора бизнес-организации:

  • Блокировать возможность выхода пакетов локальной сети (192.168.0.0 и иже с ней) и нее
  • Блокировать несанкционированные переговоры протоколов маршрутизации
  • Блокировать доступ по протоколу NETBIOS по TCP/IP портам
  • Блокировать пакеты, маршрутизированные по источнику
  • Запретить спуфинг внутренней сети
  • Фильтровать или отталкивать все TCP пакеты, которые не являются попытками установить соединение
  • Разрешить ICMP пакеты к некоторым определенным IP адресам
  • Разрешить доступ от внутренних машин, ко внутренним сервисам (сервису имен и ssh, например)
  • Разрешить ssh доступ ко всем хостам, которые поддерживают это
  • Уничтожать и протоколировать все остальное

Короткий ответ: "Блокировать все." Разрешать доступ только к тем портам, где запущены сервисы, т.е. к порту 80 на вебсервере, к порту 22 для ssh. Прячьте и выполняйте chroot всюду, где это возможно (например, BIND). Ни в коем случае не запускайте X-сервер на машинах, к которым есть доступ из Internet.

Возвращаясь к маршрутизации. Это не легкая задача для новичка, потому есть HTML интерфейсы для маршрутизаторов Circuit City и других. И еще есть Windows(tm). Для других - есть LRP. Текстовое меню, дает доступ к привычно прокомментированным /etc/conf.files файлам, просто для пользователей Linux (Unix, Freenix), но устрашающе, как таинственная командная строка, для остальных. Другие маршрутизаторы имеют тот же недостаток, заключающийся в изучении всяких изгибов и команд. В то же время, проект LR сближает магическое слово "маршрутизация" и обыкновенного обывателя тем, что его команды привычны. В отличие от команды Cisco 'conf term', конфигурация и команды LRP не стареют если их не трогать даже год. Для неглупых людей выбор между тысячедолларовым маршрутизатором и LRP превращается в выбор между деньгами и временем.

Так что вы можете купить специализированный маршрутизатор, или же вы можете покопать ваш доисторический ПК, добавить необходимые функции, скомпилировать модули в ядро и настроить. LRP заменяет ПЗУ флоппиком, а встроенное аппаратное обеспечение - ядром: только помните о некоторых нюансах безопасности.

Mark Fevola

Марк Февола получил степень бакалавра искусств по составлению технической документации (профилирующая специализация) и информатике (вторая специальность) в Мэйнском университете, который он окончил с отличием. В 1994 он создал первого коммерческого провайдера Internet в Мэйне. Он произносит grey через 'e', никогда не носит часы, ненавидит грибы, читает книги и собирает минералы.

 


Copyright © 2001, Mark Fevola.
Copying license http://www.linuxgazette.com/copying.html
Published in Issue 67 of Linux Gazette, June 2001

Вернуться на главную страницу