[LinuxFocus-icon]
Домой  |  Карта  |  Индекс  |  Поиск

Новости | Архивы | Ссылки | Про LF
Эта заметка доступна на: English  Castellano  ChineseGB  Deutsch  Francais  Italiano  Nederlands  Portugues  Russian  Turkce  

Georges Tarbouriech
автор Georges Tarbouriech
<georges.t(at)linuxfocus.org>

Об авторе:

Джордж - опытный пользователь Unix. Он благодарен сообществу Free Software, подарившему нам большое количество прекрасных инструментов для обеспечения безопасности



Перевод на Русский:
Eugene S. Saenko <caspar(at)pisem.net>

Содержание:

 

Обеспечение безопасности гетерогенных сетей с помощью программных инструментов

Защитите его

Резюме:

Эта статья была опубликована в специальном выпуске Linux Magazine France, посвященном безопасности. Редактор, авторы, переводчики любезно позволили LinuxFocus опубликовать все статьи из этого специального выпуска. LinuxFocus, соответственно, представит их Вам, как только они будут переведены на английский. Благодарим всех, кто занят этой работой. Этот abstract будет включен в каждую статью из этого выпуска.


_________________ _________________ _________________

 

Предисловие

Безопасность в компьютерных сетях, вероятно, является самым большим технологическим вызовом двадцать первому веку.
Тем не менее, как и во многих волнующих областях, все об этом говорят, но те, кого это касается больше всех, кажется, не замечают масштабов потенциальной угрозы. "Касается больше всех", конечно, это главных разработчиков программного обеспечения или систем. Наилучший пример снова приходит из Редмонда, где, кажется, безопасность гораздо меньше "под контролем", чем, например, маркетинг.
К счастью, в течение двух последних десятилетий 20-го века родилось сообщество Free Software и вытекающая отсюда философия. Если Вы "желаете" улучшить безопасность Ваших машин, систем, сетей..., искать Вам здесь. Сообщество Free Software сделало для безопасности гораздо больше, чем все большие софтверные компании вместе взятые.
Как говорится, инструменты этого сделать не могут, обеспечение безопасности сети, например, это почти постоянная работа: все время происходят новые изменения!
Это значит, что Вы никогда не сможете сказать, что Ваша сеть безопасна на 100%. Вы только можете уменьшить риски. После прочтения этого специального выпуска (Примечание автора: помните, эта статья была частью специального выпуска Linux Magazine France, посвященного безопасности), Вы узнаете о безопасности немного больше, но, ни в коем случае, Вы не сможете сказать, что Ваша сеть в безопасности. Вы предупреждены.
И последнее по порядку, но не по значению: такая статья не может быть исчерпывающей. Имеется множество литературы на эту тему, но и она далека от исчерпания проблемы. Так, что не ожидайте, что в этой статье будет упомянуто все, особенно, если принять во внимание операционные системы, инструменты, конфигурации, применения...
И, в конце этого предисловия, добавим, что некоторые части этой статьи позаимствованы из LinuxFocus, но не беспокойтесь о согласовании с автором: оказывается, он одно и то же лицо!

 

Презентация

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

 

Пример гетерогенной сети

Протокол TCP/IP "рассматривается" в качестве основного варианта в любой ОС. С его помощью очень разные системы способны связываться друг с другом. Соответственно, в сети, которую мы будем использовать в качестве примера, протокол TCP/IP всегда будет присутствовать. Другими словами, мы не будем рассматривать ни проприетарных, ни малораспространенных, ни устаревших протоколов. Мы, также, не будем говорить о физической структуре, то есть типе соединения, категории и т.п.
Итак, поместим в этой сети всего понемногу. Конечно, мы найдем здесь Unix, проприетарный или свободный: например, немного Solaris 2.6, или если Вам больше нравится, SunOS 5.6, немного Irix 6.5, Linux (RH 6.2), MacOS X. Стоило бы добавить немного QNX или NeXTSTEP, или NetBSD или OpenBSD. С "традиционной" стороны включим только Not Terminated 4.0 (нет-нет, никаких других, они хуже). Мы, также, можем добавить OS2, которая менее плоха. И наконец, добавим немного "нетрадиционных", скажем, BeOS и AmigaOS (да, она действительно существует... ну, не совсем по-настоящему!)
Конечно, некоторые из Вас уже воскликнули: что, ни AIX ни HP-UX? Нет! Если мы захотим упомянуть каждый Unix, это будет статья в десяти томах. Тем не менее, основные правила безопасности применимы ко всем системам.

Далее, что мы от них потребуем?
Solaris, например, пусть будет сервером приложений. Irix пусть занимается резервным копированием. NT будет еще одним сервером приложений. Linux будет шлюзом. Еще один Linux-box будет http-сервером или сервером баз данных. Все остальные машины будут клиентами. Будем считать, что в сети около 30 компьютеров, использующих аутентификацию с файлом паролей. Мы могли бы выбрать более изощренный метод аутентификации: NIS (Yellow Pages) или LDAP или Kerberos... Давайте сделаем проще! Мы, также, не будем использовать NFS. Даже если это может быть полезным, если очень важна безопасность, несмотря на некоторые преимущества, ее лучше забыть. Во Франции старые люди говорят: "Не кладите все яйца в одну корзинку". Таким образом, "сомнительные", но необходимые службы или протоколы будут присутствовать только в одном месте, на машинах, которые не заняты ничем иным. Например, только один ftp-сервер, один http-сервер, предпочтительно на Unix-машинах. Некоторые Unix-машины будут SSH-серверами, а другие - SSH-клиентами. Мы вернемся к этому позже. Мы будем использовать статические IP адреса, никакого DHCP. Другими словами, мы останемся на элементарном уровне! Это, конечно же, можно применить и к сети с 50 компьютерами: при гораздо бОльшем количестве компьютеров это может превратиться в кошмар.

 

Инструменты и как их использовать

Как обычно, существует более одного способа сделать это (TIMTOWDI - There is more than one way to do it). Идеальным случаем было бы начать с нуля, с установки систем на машины и с развертывания сети. Но так бывает только в кино! Соответственно, давайте примем, что сеть растет во времени, машины время от времени перемещаются с одного места на другое, появляются новые машины, и т.д. Благодаря мегагерцовым "гонкам", например, Intel'евские машины долго не живут. Примерно через 3 года становится трудно найти запасные части. Поэтому Вы или используете такие машины для вспомогательных работ, или избавляетесь от них: грустно, но это так! К счастью, некоторые другие живут гораздо дольше без необходимости апгрейда. Не думайте, что это к делу не относится: администратор должен работать, имея в виду высокую надежность.

Основы

"Общие соображения" можно назвать первым шагом работы. Они состоят в удалении всего бесполезного с каждой машины: не "легкая" задача! В каждой ОС, включая и Unix, устанавливается невероятное количество служб и протоколов, которые Вы никогда не будете использовать. Совет специалиста: удалите их! В Unix есть простой... и грубый способ сделать это - закомментировать все в /etc/inetd.conf. Это отключает некоторые службы. Конечно, это несколько чересчур, но прекрасно подходит для многих машин. Все зависит от Ваших нужд. В Linux и некоторых других ОС Вы, также, можете воспользоваться командой chkconfig для деактивации некоторых служб.
Проверьте, также, файлы с SUID/SGID и не сомневайтесь, удаляя "ошибочный" бит или деактивируя программу. Команда вроде: find / -user root -a \( -perm -4000 -o -perm -2000 \) -print даст Вам список таких файлов. Чтобы удалить бит "s", введите chmod a-s programname (примечание: конечно, Вы теряете часть функциональности, удаляя бит "s". Но, в конце концов, в этом и состоит цель).
Удалите "опасные" или так называемые "рискованные" программы: команды удаленного управления, такие, как rsh, rlogin, rcp..., например. SSH их полностью заменит.
Проверьте права на такие каталоги, как /etc, /var... Чем более они ограничены, тем лучше. Так, дать команду chmod -R 700 для каталога, содержащего стартовые файлы ( в большинстве Unix'ов это /etc/rc.d/init.d) - неплохая идея. Таких же правил следует придерживаться для всех систем включенных в сеть: удалите все, что Вы не используете, или, по крайней мере, отключите. В NT смело отключите с помощью панели управления большинство служб. Есть много элементарных "вещей", которые можно сделать и много литературы по этому вопросу.

Инструменты

Давайте начнем с Unix, поскольку только в нем проблемы безопасности действительно принимаются во внимание. Далее, имеется огромное количество бесплатных программных инструментов, и большинство из них работает на (почти) любом клоне Unix.

Теперь займемся отдельными машинами, прежде всего обезопасим их сетевые средства. Установка этих средств достаточно проста, так, что мы не будем тратить время на ее обсуждение. Их параметры, также, зависят от системы и потребностей... Так, что оставим это на Ваше усмотрение. Первый необходимый инструмент называется shadow utils. Это - инструмент для шифрования паролей. К счастью, он включен во многие дистрибутивы Unix. С его помощью из файла /etc/passwd создается файл /etc/shadow.

Еще лучше PAM (Pluggable Authentication Modules), который позволяет ограничить доступ пользователей к каждой службе. Все управление сосредоточено в каталоге, содержащем конфигурационные файлы для каждой управляемой службы, обычно это каталог /etc/pam.d. Многие службы, такие, как ftp, login, xdm, и т.п. могут "управляться" с помощью PAM, позволяя администратору решать, кто какой службой может пользоваться.

Следующий инструмент просто обязателен: TCPWrapper . Он, также, работает на каждом клоне Unix, или почти на каждом. Вкратце, он позволяет ограничить доступ к службам некоторым хостам. Разрешение или запрет доступа к службам управляется двумя файлами: /etc/hosts.allow и /etc/hosts.deny. TCPWrapper можно сконфигурировать двумя путями: или управляя демонами, или меняя файл /etc/inetd.conf. Позже мы увидим, что TCPWrapper прекрасно взаимодействует с другими инструментами. TCPWrapper можно найти по адресу ftp://ftp.porcupine.org/pub/security

Другой интересный инструмент - xinetd. Опять же, коротко, xinetd - это замена inetd с гораздо бОльшими возможностями. Для него справедливо все, что мы сказали выше об inetd. Если Вам интересно, Вы найдете его по адресу http://www.xinetd.org.

Под Linux есть один инструмент, без которого Вы не сможете обойтись: он называется Bastille-Linux. Его можно найти по адресу http://www.bastille-linux.org. Этот инструмент, написанный на Perl, не только поучителен, но и очень эффективен. После запуска скрипта Вы отвечаете на множество вопросов и Bastille-Linux действует соответствующим образом. Каждый вопрос снабжен объяснением и ответом по умолчанию. Вы можете отменить действия, начать новую конфигурацию, проверить, что сделано... Здесь есть все! Он даже предлагает конфигурацию межсетевого экрана: мы вернемся к этому позже. К моменту написания статьи имеется Bastille-Linux версии 1.1.1, но уже доступен релиз-кандидат версии 1.2.0. Он значительно улучшен и снабжен графическим интерфейсом, основанном на Tk и собственном Perl модуле. (Примечание автора: эта статья написана много месяцев назад. Фактически уже имеется версия Bastille-Linux 1.3.0).

Также важны средства обнаружения вторжения. Два "наиболее солидных" из них называются snort и portsentry. Первое из них можно загрузить с http://www.snort.org а второе - с сайта Abacus, http://www.psionic.com. Эти инструменты не стоит сравнивать между собой: первый из них - это NIDS (Network Intrusion Detection System - система обнаружения вторжений в сеть), который только информирует Вас, а второй - хост-ориентирован и более активен. Программа snort имеет массу опций для наблюдения за трафиком сети. Вы можете контролировать все, что пожелаете: вход, выход, за межсетевым экраном, перед экраном. Конечно, он может создавать огромные логи, но Вы должны знать, чего хотите! Имеется версия для Win32 и это важно, принимая во внимание количество инструментов, доступных для этих "систем".

У portsentry есть очень интересная возможность: он может блокировать сканируемые порты по Вашему выбору. Вы можете, также, перенаправить атакующего на несуществующий адрес или на межсетевой экран. Конечно, нужно выбирать, кого блокировать, а кого нет. Теперь мы можем вернуться к TCPWrapper: portsentry может писать в файл /etc/hosts.deny , если Вы пожелаете. Это делает portsentry очень эффективным. Мы не будем пускаться в дискуссию о философии portsentry по использованию привязки портов. Оставим это на Ваше усмотрение: Вы сделаете свой выбор после более глубокого погружения в предмет. Кроме того, имейте в виду, что portsentry может сделать компьютер "невидимым", что может быть неплохо! И, наконец, portsentry может работать в различных режимах, наиболее продвинутый из которых "зарезервирован" за Linux (по крайней мере в настоящее время).

Невозможно говорить о безопасности и не упомянуть о шифровании. Тем не менее, законы, касающиеся этой области, меняются от страны к стране, а иногда использование криптографии вообще запрещено.
Примечание автора: следующий раздел удален из английской версии статьи, поскольку он касается только французских законов.
Вывод: если в Вашей стране разрешена криптография, установите на Ваших Unix компьютерах клиенты и серверы ssh (конечно, в случае необходимости!).

Чтобы закончить с инструментами Unix, упомянем инструменты, принадлежащие проприетарным Unix'ам. Под Solaris'ом в Вашем распоряжении ndd, aset; под Irix Вы можете использовать ipfilterd. В MacOS X имеются несколько бесплатных инструментов: ssh, ipfwadm...
К этому мы еще вернемся.

Теперь, давайте, поговорим об одной единственной (к счастью) Not Terminated 4.0. Здесь нельзя говорить о свободных инструментах... тем не менее, господа из Редмонда дают нам "свободные" продукты для улучшения качества системы (никоим образом не исправления ошибок, ведь там нет ошибок!). С точки зрения безопасности NT 4.0 является моделью... абсурда. Она похожа на решето! Не обращайте внимания. Вам только нужно скачать последний сервис-пак (шестой на момент написания статьи) и заплатки, повышающие безопасность. Кроме того... Вы можете получить несколько свободных инструментов (в том смысле, что за них не надо платить, но без исходного кода).
И это все.

Для других систем инструменты придется поискать. Развитие AmigaOS, кажется, вдохновляет немногих и уровень TCP/IP в ней несколько устарел. Тем не менее, Public Domain здесь ждет Вашего участия. С BeOS ситуация не лучше: эта великая ОС, кажется, имеет очень сомнительное будущее и ее сетевой слой, называемый Bone, все еще находится в стадии разработки.
(Примечание автора: к сожалению, сейчас BeOS мертва. Несколько человек пытаются поддержать ее жизнь, как свободного программного продукта... и они делают очень хорошее дело.)
Но и здесь тоже Вы найдете инструменты из мира Unix, которые помогут улучшить положение вещей.

Повышение безопасности узлов

Теперь Вам надо все это сконфигурировать!
Итак, договоримся, что каждый Unix-компьютер "снабжен" утилитами shadow, PAM, TCPWrapper, что все бесполезные сервисы остановлены или удалены, что ужестчены права на "чувствительные" каталоги, и т.п.

На Linux-компьютерах пора запустить Bastille-Linux. (Этот инструмент может работать на большинстве дистрибутивов Linux, но первоначально он был разработан для RedHat и Mandrake). Смело отвечайте на все вопросы максимально ограничительным образом.
Linux-компьютер, используемый в качестве шлюза, должен быть "минималистом". Вы можете удалить большинство серверов: http, ftp, и т.д. Удалите X11: он Вам не нужен! Удалите ненужные программы... это почти все. Выгрузите ненужные демоны. У Вас должна получиться система, в которой команда ps ax не может даже заполнить экран консоли. Если Вы используете IP маскарад, команда lsof -i должна показать одну строку: относящуюся к слушающему серверу (мы предполагаем, что постоянного подключения нет).
Конечно, мы установим portsentry на компьютерах с Linux, будем запускать его при загрузке системы и использовать режим "advanced" (зарезервированный для Linux, то есть с опциями -atcp и -audp). Предполагается, что TCPWrapper и межсетевой экран уже установлены. Мы вернемся к этому позже.

Под Solaris мы будем использовать команды aset и ndd. Подробнее об этом поговорим позже. Установим, также, portsentry. Можно, также добавить IP Filter и заменить стандартную версию RPCbind версией 2.1, которую можно найти на porcupine.org. Под Irix выберем ipfilterd для фильтрации пакетов, на что намекает его имя. Он входит в дистрибутив Irix, но по умолчанию не устанавливается.

С NT несколько сложнее... "Фашистское" решение состоит в блокировании портов 137 и 139, это знаменитый NetBIOS (а еще лучше - удалить NetBIOS)... но тогда не останется сети (то есть сети Windows) но это небольшая проблема, если компьютер используется в качестве сервера приложений! Вы, также, можете установить snort, но от этого Ваша машина не перестанет быть решетом. Вы, соответственно, должны очень строго подойти к правам на разделы, каталоги, если Вы работаете с разделами NTFS, конечно. Имеется свободно распространяемая программа, позволяющая избавиться от гостевой учетной записи, но без исходного кода. Затем, установите все заплатки безопасности, которые Вам удастся найти! И последнее по порядку, но не по значению: засучите рукава и попытайтесь сделать систему менее уязвимой. Это немного похоже на круговую оборону, но без этого не обойтись.

Для "экзотических" операционных систем инструменты придется поискать. Как всегда и прежде всего следует применить основное правило: чем меньше активных сервисов, тем лучше.

 

Защита сети

Если узлы правильно "подготовлены", половина дела сделана. Но Вам придется пойти дальше. Раз уж мы говорим о свободном программном обеспечении, выберем для нашего шлюза свободный межсетевой экран: Ведь это компьютер, через который Вы получаете доступ в "дикий" мир. Конечно мы используем (опять!) компьютер с Linux: поэтому можем использовать экран Bastille-Linux. В зависимости от версии ядра он работает с ipchains или ipfwadm. Если Вы используете ядро 2.4, он будет работать с iptables.

Небольшое отступление: не очень хорошая идея пытаться решить все проблемы сразу, когда на первом месте стоит безопасность. "Погоня" за последней версией ядра может привести к очень неприятной ситуации. Это не значит, что над ядром не надо работать, но попытка "поженить" его с существующими инструментами, не рассчитанными на работу с таким ядром может оказаться большой ошибкой. Совет: будьте терпеливы! Новые средства для межсетевых экранов, входящие в состав ядра 2.4 очень многообещающи, но, вероятно, слишком "молоды". Как говорится, на Ваше усмотрение...

Итак, экран Bastille-Linux и прост и эффективен. Тем не менее, есть гораздо более развитое средство, больше похожее на газоперерабатывающий завод, называемое T.REX. Его можно найти на http://www.opensourcefirewall.com. Если Вы ищете очень изощренный свободный инструмент, то это для Вас.

Существуют и другие решения, например прокси, но они не всегда лучше. Еще одно отступление: прокси иногда называют "экранами". Тем не менее, это совершенно разные вещи. Межсетевые экраны осуществляют фильтрацию пакетов и не предоставляют метода аутентификации. Существуют два типа прокси-серверов: программы (applications) и программные интерфейсы (socks). Если быть кратким, прокси-программа выполняет за Вас всю работу по управлению связью и позволяет производить аутентификацию пользователей. Поэтому она требует гораздо больше ресурсов, чем межсетевой экран. Но, повторяем снова и снова, инструменты такого типа могут защитить только на короткое время. Межсетевой экран можно "сломать" минут за 15. Это всем известно, не так ли? Отсюда вытекает необходимость надежной защиты узлов Вашей сети: решение обезопасить сеть, полагаясь исключительно на межсетевой экран или прокси - это ересь!

Еще одним методом уменьшения рисков в сети является шифрование. Использовать telnet, например, все равно, что расстелить перед взломщиками ковровую дорожку. И дать им ключи от квартиры, где деньги лежат. Они не только могут видеть весь обмен данными, но гораздо лучше, они получают пароль открытым текстом: прекрасно, не правда ли? Поэтому смело используйте ssh с "ненадежными" протоколами (или вместо них). Если Вы ВЫНУЖДЕНЫ (?) использовать telnet, посылайте данные через безопасное соединение. Другими словами, перенаправьте порт telnet на безопасный порт. Подробнее об этом можно прочесть в статье "Through the tunnel (Сквозь туннель)" ( LinuxFocus, May2001, article 202). (Бесплатная реклама!)

OK, мы попытались улучшить защищенность, теперь надо проверить нашу работу. Для этого давайте станем чем-то вроде "кракеров": воспользуемся их инструментами. Ужасно, не так ли? И в этой области, тоже, имеется множество программ, так что, опять произвольно, выберем две из них: nmap и nessus. Это не перебор, поскольку, например, для второй программы необходима первая. Эти инструменты - сканеры портов, хотя nessus представляет собой нечто гораздо большее. Nessus информирует Вас об уязвимости системы, сравнивая результаты сканирования со своей базой данных уязвимостей. Использование этих инструментов в сети позволит Вам выявить слабости каждого узла, на котором есть операционная система. Результаты очень наглядны, что делает эти инструменты просто необходимыми. Вы можете найти nmap по адресу http://www.insecure.org , а nessus на http://www.nessus.org.

С самого начала этой статьи мы говорим об обеспечении безопасности локальной сети, в которой некоторые компьютеры открыты во внешний мир. Случай ISP (Интернет-провайдера), конечно, будет сильно отличаться, но во многие детали мы не будем вдаваться. Надо сказать, что все изложенное выше будет справедливым и здесь, но Вам придется использовать гораздо более изощренные методы, такие как VPN (Virtual Private Network), LDAP (например) для аутентификации и т.п. Это - совсем другой случай, поскольку связи здесь гораздо более многочисленны. Мы не будем говорить о сайтах электронной коммерции, где риски повышены. И они еще говорят о защищенных сайтах! Не смешите меня... Вы посылаете номера своих кредитных карточек через Интернет? Если да, Вы очень храбрый человек. Предложение: если Вы читаете по-французски, посмотрите на сайт http://www.kitetoa.com, это того стоит.

 

Особенности систем

Как уже говорилось, перед лицом врага системы ведут себя не одинаково. Одни обладают прекрасными качествами, другие представляют собой решето. Парадоксально (ну, я не всерьез!), но свободные ОС находятся среди лучших. Различные BSD ( OpenBSD, NetBSD, FreeBSD...), различные Linux'ы далеко впереди, если речь идет о безопасности. Конечно, это - результат большой работы сообщества свободного программного обеспечения. Другие, даже с маркой Unix, не так совершенны. Если же это не Unix, то все гораздо хуже!

Все инструменты, упоминавшиеся в этой статье были разработаны для свободных ОС. Большинство проприетарных систем Unix могут их использовать. Тем не менее, эти проприетарные операционные системы часто имеют и собственные инструменты. Так, рассматривая Solaris мы упоминали ndd и aset. Вопреки широко распространенному мнению системы Sun не являются образцом безопасности. Такой инструмент, как aset позволяет улучшить положение в области прав доступа. Эта команда предлагает три уровня безопасности: низкой, средний и высокий. Вы можете запустить ее из оболочки или как задание cron. В работающей сети ситуация меняется и то, что было верным в 17:00 может стать неверным в 17:30. Поэтому представляет интерес периодический запуск команд для поддержания однородности. Именно поэтому команда aset может управляться с помощью cron. Таким образом, каждые 30 минут, или каждый час, или как Вы пожелаете она будет проверять права на каталоги, файлы...
Команда ndd позволяет изменить параметры IP-стека. Например, ее можно использовать, чтобы скрыть тип системы. Идентифицированная система более уязвима, поскольку взломщики знают, куда "нанести удар". С помощью ndd Вы можете изменить максимальный размер сегмента TCP (MSS - Maximum Segment Size). По умолчанию в Solaris 2.6 этот размер равен 536. Команда ndd -set /dev/tcp tcp_mss_def 546 изменяет его на 546. Чем больше MSS, тем лучше (но не слишком!). Nmap, к примеру, может нащупать эту слабину. С помощью ndd Вы выбиваете почву у нее из под ног. Если у Вас есть машины с ОС Solaris, спокойно используйте ndd. У нее есть много опций: смотрите страницы руководства.
Вы, также, можете использовать IP Filter, инструмент фильтрации пакетов. Его можно найти на ftp://coombs.anu.edu/pub/net/ip-filter.

Что касается Irix, там ситуация снова отличается. SGI (бывшая Silicon Graphics), как указывает ее имя, разрабатывала свои системы для графики. Безопасность не была главной целью. Необходимость, не знающая преград, принудила найти пути снижения рисков. Поэтому в дистрибутивы Irix включен ipfilterd, но он не устанавливается по умолчанию: Вам придется его поискать! Конечно же, ipfilterd используется для фильтрации пакетов, позволяя, таким образом, ограничивать доступ кому Вы пожелаете. Его работа управляется конфигурационным файлом ipfilterd.conf и здесь начинаются трюки. Синтакс этого файла довольно своеобразен и не терпит лишних пробелов и пустых строк. Так, чтобы разрешить компьютеру под именем "mars" общаться с компьютером "jupiter" (рабочая станция SGI) надо ввести такую строку:
accept -i ec0 between jupiter mars
Компьютеры, не упомянутые в этом файле не смогут получить доступ к компьютеру jupiter. Более того: если Вы не измените значение параметра ipfilterd_inactive_behavior с помощью команды systune, никто не сможет получить доступ к этому компьютеру! Эффективно, не правда ли? Этот параметр по умолчанию имеет значение 1, его необходимо зоменить на 0 с помощью команды systune -i ipfilterd_inactive_behavior 0
Другой хорошо известный факт, достойный упоминания, огромная "дыра" в безопасности Irix, носящая имя fam (File Alternation Monitor). Эта программа обеспечивает очень привлекательную возможность, связь между различными демонами. Например, только с ее помощью можно получить красивые иконки в файл-менеджере. Увы, но имеется только один выход: деактивировать ее! Жаль, но что поделаешь!

И, чтобы покончить с системами Unix, упомянем, что QNX - очень уязвима, но ей, конечно, могут помочь свободные инструменты. В Mac OS X некоторые из таких инструментов уже есть.

Нам надо немного поговорить об абсолютной связи между системами: исключительно NT 4.0. Обеспечение безопасности в такой ситуации - это утопия, что бы ни утверждал Король Редмонда (и многие другие). Имитация атаки, например, с помощью nessus - это кошмар. Поскольку NetBIOS активен, nessus предоставит Вам имена каждой машины домена вместе с именами всех ее пользователей, включая администраторов. Ответ готов: долой NetBIOS! Это верно, но, как уже говорилось, нет NetBIOS - нет сети... Вы должны сделать свой выбор.
Nessus любезно сообщит Вам, что можно залогироваться в качестве гостя с NULL-сессией (то есть имя пользователя NULL и пароль NULL). Так удалить его! Да, но как? И так все!
Тогда ограничим доступ к разделам (NTFS) и каталогам. Для разделов FAT... решения нет. Тем не менее, для программного обеспечения, которое Вы используете, Вам могут потребоваться разделы FAT: некоторые программы не будут работать на NTFS. Чтобы избежать этого надо исключить великий IIS, особенно в качестве ftp сервера. Фактически просто не устанавливать его. Поскольку сегодня многие ISP настолько безумны, что его используют, мы можем только посоветовать использовать вместо него Apache, но... Но не будем посвящать слишком много времени IIS. На эту тему есть много литературы.
Фактически есть способ превратить решето в фильтр (отверстия поменьше!). Проблема в том, что это - очень долгий путь и может не хватить целого журнала. Упомянем самое важное. Очевидно, задача состоит не в том, чтобы обеспечить безопасность с помощью свободного программного обеспечения: ведь мы говорим о мире Microsoft! Первое предложение - использовать MSCE (Microsoft Security Configuration Editor), имеющийся в ServicePack 4 и MMC (Microsoft Management Console). Тем не менее, будьте очень внимательны! Если Вы сделаете ошибку, Вас победят. Конечно, эти средства есть только в английской версии. Если Вы используете другую (не английскую) версию системы, будьте готовы к тому, что смешение языков никогда не давало в мире Редмонд хороших результатов. Учтите, Вы предупреждены! Следующая необходимая мера - Вы должны "обезопасить" учетную запись администратора, или отключить ее. Познакомьтесь с программой passprop, имеющейся в SP 3. Вы, также, можете ужестчить требования к паролям с помощью dll passfilt, сделав запись в реестре (я всегда считал, что люди, делающие подобные вещи, находятся под влиянием ЛСД...). Отключите знаменитую учетную запись guest. Это не принесет много пользы (см. выше), но ситуация будет чуть менее плоха. Вы, по крайней мере, с помощью реестра, можете ограничить его доступ к log-файлам. В "HKEY_LOCAL_MACHINE" создайте ключи Security и System (два последних должны заменить Application) Их имя "RestrictGuestAccess", тип REG_SZ, а значение 1. Вы можете зашифровать пароли с помощью syskey. Будьте осторожны, обратного пути нет! И, наконец, приятная новость: Вы можете запретить учетную запись guest. Давайте еще поиграем среестром и опять в "HKEY_LOCAL_MACHINE". На этот раз ключ называется System\CurrentControlSet\Control\Lsa. Имя "RestrictAnonymous", тип "REG_DWORD", значение 1. Но чуден мир Microsoft: приготовьтесь к тому, что после этого изменения некоторые сетевые службы начнут работать по-другому... Еще одна важная возможность: Вы можете ограничить доступ к некоторым портам с помощью апплета Network на панели конфигурации. В свойствах TCP/IP выберите "Advanced" и отметьте флажок "Activate security" (я думаю, это так называется, но у меня дома таких вещей не водится, так что у меня нет возможности это проверить). В окошке "Security" выберите "Allow only" и выберите порты, которые хотите активизировать. Здесь тоже будьте осторожны. Вы должны знать, что Вы делаете, иначе некоторые службы не смогут работать.
Многое можно сделать еще, но это главное. Чтобы узнать больше, посетите sans.org: там есть тонны документов.

 

Легковесность необычайная

Ну, Вы все это сделали. Вы запускаете nessus для сканирования всей сети и снова обнаруживаете дыры в безопасности. Мы не будем говорить, откуда они берутся... мы уже знаем! Попытайтесь обойти эти слабости системы. Невозможно исключить дыры, "предоставляемые" NetBIOS'ом, но можно ограничить разрушения. Создавайте поддомены, не входите в систему как администратор. Применяйте заплатки. В конце концов, попытайтесь спрятать все это за Unix машинами, используемыми в качестве шлюзов. К сожалению, относительность безопасности создается не только продуктами, изготовленными в Редмонде. Сеть живой организм: в ней всегда что-то происходит. Хороший администратор "параноик" - он часто проводит "инспекцию закрытости". Пишет скрипты для автоматизации проверок. Например, проверки на регулярной основе программ SUID/SGID, критических файлов, лог-файлов... Чтобы у Вас было больше друзей, отключите у пользователей флоппи-дисководы и CD-ROM'ы. Не допускайте, чтобы пользователи загружали программное обеспечение без Вашего согласия, особенно, если это программное обеспечение - исполняемые файлы, как это всегда бывает в мире Microsoft. Не позволяйте Вашим пользователям открывать вложенные документы, такие как документы Word и Excel, пользуйтесь системой почтовых фильтров. Да, я знаю, это похоже на фашизм, но что Вы можете противопоставить макровирусам? Не пользуйтесь продуктами вроде Outlook. Повторю еще раз, Вы должны знать, чего хотите! Я знаю, что все мои слова бесполезны, но о какой безопасности можно говорить с такими продуктами? Знаменитый "I love you" никого ничему не научил.
Что касается Unix, здесь тоже надо контролировать загружаемые файлы. Контрольные суммы предоставляются не случайно.

Возьмите за правило контролировать Вашу сеть на регулярной основе с помощью логов, скриптов, сканирования... Вы заметите: все меняется очень быстро и не всегда в лучшую сторону.
И, наконец, мы не сказали об этом ни слова, но не забывайте делать резервные копии. Стратегия хорошо известна: ежедневные, еженедельные, ежемесячные. На Unix машинах тоже бывают проблемы, хотя и редко. А иногда и пользователи делают ошибки... но не очень часто. Хорошо известно, что источником проблем являются машины или отделы, ответственные за них :-(

 

Наконец это позади

Если Вы добрались до этого раздела - Вы отважный человек. Проблема в том, что мы лишь слегка коснулись предмета! Безопасность не имеет границ и касается не только сетей. Ненадежное приложение может скомпроментировать сеть. Плохо сконфигурированный межсетевой экран более опасен, чем полное отсутствие экрана. На Unix машине может быть тысячи файлов. Кто может поручиться, что ни один из них не окажется ненадежным? Кто думает, что взломщик будет пытаться сломать 128-битный ключ? Не обманывайте себя: он попытается найти черный ход. Еще и еще раз, Вы можете установить все доступные средства безопасности, но если Вы оставите очень маленькую дырочку, через нее-то и войдет "беда".

Безопасность - это еще и образ действий: проявляйте предусмотрительность. Например, регулярно посещайте сайты, посвященные безопасности, а также сайты, посвященные Вашим операционным системам, редакторам... Так, Sun публикует рекомендуемые заплатки ежемесячно. SGI выпускает новую версию Irix каждые три месяца. Microsoft часто выпускает ServicePack или HotFix. Дистрибьюторы Linux публикуют errata для каждой обнаруженной уязвимости. То же самое и для различных BSD. Если Вы не используете продукты, для которых имеются заплатки, удалите их со своего жесткого диска. И так далее: список того, что нужно сделать очень и очень длинен. Короче, эта работа не знает отпусков.

И, наконец, давайте скажем это еще раз, все эти меры помогут сделать Вашу сеть чуточку безопаснее. Не ожидайте, что Вы получите 100% безопасную сеть, даже на время (ну, может быть на время, пока все машины в Вашей сети выключены). Так сказать, не надо быть параноиком, выполняя эту работу... но это помогает! Но не стоит переносить это на обычную жизнь, так людям, окружающим Вас будет гораздо лучше...

 

Ссылки

Жизнь грустна: давайте улыбнемся!

Another way to do the job ;-)  

Страница отзывов

У каждой заметки есть страница отзывов. На этой странице вы можете оставить свой комментарий или просмотреть комментарии других читателей :
 talkback page 

Webpages maintained by the LinuxFocus Editor team
© Georges Tarbouriech , FDL
LinuxFocus.org

Click here to report a fault or send a comment to LinuxFocus
Translation information:
fr --> -- : Georges Tarbouriech <georges.t(at)linuxfocus.org>
fr --> en: Georges Tarbouriech <georges.t(at)linuxfocus.org>
en --> ru: Eugene S. Saenko <caspar(at)pisem.net>

2002-09-16, generated by lfparser version 2.30