Безопасность - мифы и реальность

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

С тех пор ситуация изменилась кардинально. Локальные сети сегодня исполняют роль базы информационной структуры организации. Оказание услуг и предоставление информации через Интернет в том или ином виде стало обычным делом. Использование WEB, E-MAIL и других ресурсов Интернета привело к значительному снижению защищенности локальных сетей. Концепция интранета, слияние технологий локальных и глобальных сетей вызывает значительное усложнение администрирования и вынуждает менять программное обеспечение. Применявшиеся ранее одноранговые сети во многом утратили свои позиции. Кроме значительных качественных изменений, произошли не менее (если не более) значительные количественные изменения. Локальная сеть на 10-20 компьютеров - сейчас вполне обычное дело. Достаточно часто встречаются локальные сети и на большее число рабочих мест с соответствующим усложнением их структуры. С распространением Интернета целенаправленные атаки из области мифов перешли в самую что ни на есть жизненную реальность.

Проблема

Сегодня даже технические специалисты не всегда в состоянии следить за изменением ситуации и строить свои системы адекватно задачам, которые должны решаться этими системами. Еще хуже состояние дел у руководителей среднего и высшего звена. Невозможность вовремя вникать даже в важные вопросы организации системы приводит к ряду крайне неприятных последствий.

Целью этой статьи является обзор компонентов, необходимых для построения надежно функционирующей системы.

Словарь

Для начала стоит определить несколько базовых понятий.

Основа

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

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

Выбрав основную задачу, стоит определить пограничные параметры, в которые должны укладываться характеристики системы.

Набор характеристик может варьироваться, но некоторые из них должны быть определены обязательно. В качестве первого приближения можно выбрать такой список:

Надежность

Для любой системы, независимо от ее назначения, базовыми являются требования, относящиеся к надежности. Никому не нужна система, которая виснет через каждые 10-15 минут.

Меры по повышению надежности системы давно и всем известны. Необходимо выбирать достаточно высококачественное "железо", применять источники бесперебойного питания (ИБП), внимательно относиться к каждому сбою. В системах, для которых выдвигается требование повышенной надежности, необходимо использовать компьютеры с возможностью контроля состояния (температура процессора и т. п.). Такие системы предлагают многие производители BRAND-NAME систем. В то же время для значительного большинства нынешних систем использование дорогостоящей и с трудом поддающейся UPGRADE техники является, очевидно, ненужным. Практически всегда оправдано применение ИБП. Правильнее сказать, что ни один сервер не может считаться надежным без ИБП.

Живучесть

Следующее требование - это живучесть. В любой системе бывают аварии. Даже самая надежная система может быть повреждена. Поэтому необходимо определить, как быстро система должна быть восстановлена, и заранее принять соответствующие меры.

Повышение живучести системы едва ли не более избитая тема, чем повышение надежности. Вряд ли здесь можно сказать что-либо новое. Архивы, архивы и еще раз архивы. Если система должна работать бесперебойно, необходимо иметь либо "горячий резерв" (то есть полную копию рабочей системы), либо набор запчастей для ключевых элементов. Так как зачастую это невозможно по финансовым причинам, в этих случаях просто необходимо выбирать поставщика, который официально гарантирует быстрое (24- 48 часов) обслуживание.

Безопасность

В отличие от проблем надежности и живучести, которые подробно обсуждаются уже многие годы, проблема безопасности реально встала совсем недавно. Сейчас эта проблема является одной из самых модных, но реальный опыт в этой области еще невелик, кроме того, быстрая смена аппаратных и программных средств затрудняет накопление и систематизацию опыта. Такое состояние дел приводит ко многим неприятным последствиям.

Наиболее актуальна проблема безопасности для систем, которые предоставляют платный сервис пользователям. Такие системы наиболее уязвимы:

За последнее время уже сформировался "джентльменский набор" средств безопасности:

При правильном применении этих мер в подавляющем большинстве случаев можно считать, что задача построения безопасной системы решена. Однако некоторый практический опыт позволяет сказать, что не все так просто.

Чего бояться?

Для создания безопасной системы необходимо прежде всего проанализировать возможные цели атакующих. Можно выделить следующие варианты.

Для получения доступа к защищенной системе могут быть использованы разнообразные средства от перехвата информации путем ее съема с кабельной сети и до методов социальной инженерии.

Таким образом, меры, принимаемые для обеспечения безопасности системы, должны быть комплексными: от обеспечения физической недоступности сервера и до тщательной регламентации работы пользователей системы.

Кого бояться?

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

  • посторонние люди;
  • операторы/пользователи системы;
  • администраторы системы;
  • разработчики системы.

    При организации защиты необходимо учитывать разные права и возможности, которые имеет каждая из обозначенных групп. Если с защитой от посторонних людей и пользователей системы все достаточно просто, то C защитой от злоупотреблений администраторов и разработчиков дела обстоят значительно сложнее. Из известных средств можно порекомендовать разделение функций (например, разделить функции администратора системы и специалиста по безопасности системы) и ведение протоколов работы на устройства с однократной записью (WORM). В общем случае, если есть необходимость строить систему, защищенную от администраторов и разработчиков, необходимо обратиться к специалистам по компьютерной безопасности. Правда, в значительном большинстве случаев бывает достаточно защиты от посторонних и пользователей.

    Что делать?

    Существует очень много вариантов укрепления безопасности системы. В качестве первого шага стоит оценить максимальные потери от успешной атаки и определить, какие затраты на укрепление безопасности будут приемлемы и достаточны. Исходя из этого стоит подбирать аппаратные, программные и административные средства укрепления безопасности.

    Ограничение и разграничение доступа

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

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

    В простейшем варианте для подтверждения полномочий клиента служит парольная защита. Однако сама по себе она не является панацеей. Пароль можно перехватить при передаче по сети, подобрать, подсмотреть при наборе и т. д. Эта проблема решается использованием дополнительных средств: чиповых карточек или TOUCH MEMORY http://www.confident.ru/. При построении систем с высокой степенью защиты могут применяться устройства идентификации по биологическим параметрам: по сетчатке глаза, по отпечатку пальца или по форме руки. Но все эти методы подразумевают возможность физического контакта с детектором. Если это невозможно, то применяются следующие принципы: перед тем, как передать свой пароль, необходимо установить соединение, защищенное шифрованием трафика. Это делается следующим образом: при подключении сервер передает клиенту свой открытый ключ, клиент генерирует секретный (симметричный) ключ, шифрует его открытым ключом и передает на сервер. Далее весь трафик, включая имя и пароль пользователя, передается по сети в зашифрованном виде. В этой цепи остается еще одно слабое звено - пользователь тоже должен убедиться, что имеет дело с тем сервером, с которым он хотел иметь дело. В противном случае возможна ситуация, когда злоумышленники подсовывают вам свой "фальшивый" сервер. Вы подключаетесь к нему, вводите свой пароль, после чего фальшивый сервер имитирует сбой в сети, запомнив вашу комбинацию имени и пароля. В дальнейшем она может быть использована для получения доступа к настоящему серверу. Для разрешения данной проблемы служат серверы аутентификации. При установлении защищенного соединения используется третья сторона, которая подтверждает подлинность и клиента и сервера. В Интернете существуют фирмы, оказывающие подобные услуги за деньги. В этой связи следует упомянуть следующие продукты: secure shell фирмы, позволяющий работать в командном интерпретаторе с шифрацией трафика, протокол ssl (secure socket layer) фирмы netscape communications corporation, использующий систему сертификатов аутентификации и шифрование по алгоритму rsa (rsa data security, inc.) при работе через web-броузер, а также систему аутентификации kerberos и другие.

    Дезинформация

    Дезинформация - это первый барьер на пути атакующего. Для осуществления успешной атаки необходимо много знать об атакуемой системе. Даже безобидная на первый взгляд информация (например, о версии вашей операционной системы или WEB- сервера) может быть важной при атаке. Поэтому первый шаг при построении системы защиты - это скрытие или искажение максимума информации.

    Для начала следует заменить все стандартные приглашения и заголовки. Затем надо завести два DNS-сервера - один для внешнего мира, а другой для внутреннего использования. На DNS-сервере, предназначенном для внешнего мира, следует исключить записи обо всех машинах за исключением абсолютно необходимого минимума. Тут, правда, может возникнуть проблема. Некоторые WEB- и FTP-серверы требуют наличия зарегистрированного имени при подключении к нему. В таком случае вполне оправдано применение PROXY-сервера. Ну и, наконец, не надо выдавать полную информацию о системе, когда вам звонит торговый агент и под предлогом продажи нового сервера или маршрутизатора пытается вызнать у вас детали настройки вашей сети. Это же касается и всевозможных регистрационных форм на WEB-серверах и прочих местах. Стоит также предупредить всех сотрудников о том, что любая информация о локальной сети организации - это закрытая информация.

    Шифрование трафика

    При организации интранета трафик, ранее не выходивший за пределы локальной сети, пропускается через многие километры сетей общего пользования. При этом очень многие люди могут его просмотреть. Особенно это касается передачи трафика через Интернет, но угроза сохраняется и при передаче его через выделенный цифровой канал. Для предотвращения перехвата информации на этом этапе применяют шифрование. В настоящее время разработано много хороших алгоритмов шифрования. Все их можно разделить на две принципиально разные группы - с симметричным (секретным) ключом и с несимметричным (открытым). Разница между ними заключается в следующем: при использовании симметричного ключа и отправитель и получатель сообщения должны иметь один и тот же секретный ключ, с помощью которого и шифруется и расшифровывается сообщение. Главная проблема при этом методе - передача секретного ключа. Секретный ключ должен передаваться по секретному каналу. Если же два абонента не располагают секретным каналом между собой и не в состоянии встретиться лично, то данная схема неприемлема. При шифровании с открытым ключом создается пара ключей - открытый и секретный. Сообщение, зашифрованное с помощью открытого ключа, не может быть расшифровано без знания секретного ключа и наоборот. Это свойство дает возможность обойтись без секретного канала. Если я хочу, чтобы мне кто- то послал зашифрованное сообщение, я генерирую пару ключей и публикую открытый ключ самым широким образом. Любой, кто сможет получить мой открытый ключ, сможет послать мне зашифрованное сообщение, которое смогу расшифровать только я парным секретным ключом. На этом преимущества данного метода кончаются и начинаются недостатки: шифрование с несимметричными ключами требует больше вычислительных ресурсов, для обеспечения аналогичной криптостойкости должен использоваться более длинный ключ. И вообще данный метод базируется на недоказанной теореме о невозможности аналитическим способом разложить произвольное число на простые множители. По этим причинам данный метод шифрования обычно применяют в комбинации с традиционным шифрованием с симметричным ключом.

    Хочется предостеречь от использования непроверенных и самодельных систем шифрования. Бытует мнение, если система известная, то известно и как ее ломать - лучше я напишу свой собственный алгоритм, хоть и простенький, но никому не известный. Это в корне неверный подход. Криптография гораздо сложнее и обширнее, чем это кажется на первый взгляд, а криптоаналитика гораздо мощнее.

    Ведение "личных журналов"

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

    В подобных случаях может помочь ведение протоколов работы отдельных пользователей. Это позволяет при необходимости проследить действия пользователя, точно определить, что имело место - ошибка или атака, когда и какие действия были произведены. Часто такие протоколы помогают восстановить целостность системы. Недостатки ведения таких протоколов, увы, очевидны: большой объем протоколов приводит к тому, что их никто не анализирует, кроме того, они просто занимают много места на дисках или других накопителях.

    Брандмауэры

    За последние годы брандмауэры (FIREWALLS) или "межсетевые экраны" (это их официальное название) приобрели статус абсолютно необходимого средства при подключении к Интернету. Даже если вы подключаетесь со своего домашнего компьютера, есть смысл подумать о брандмауэре, а если вы подключаете локальную сеть к Интернету, то брандмауэр становится просто необходим.

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

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

    Следующий уровень - TCP-соединение. Здесь фильтрация возможна, кроме адресов, еще и по номерам портов TCP и флагам, содержащимся в пакетах. (Например, запрос на установление соединения.) Так же на данном уровне фильтруются протоколы UDP и ICMP.

    Дальше следует анализ прикладных протоколов, таких как FTP, HTTP, SMTP и прочих. На данном уровне может быть осуществлен контроль за содержимым потоков данных. В частности, можно запретить пользователям вашей локальной сети получать из Интернета исполняемые модули или другие типы файлов.

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

    На настоящий момент сформировался обширный рынок в этой области. На нем представлены средства в самом широком диапазоне цен. Свободно распространяемые UNIX-системы, такие как FREEBSD (http://www.freebsd.org/) и linux, включают в себя инструменты для фильтрации на уровнях ip, tcp, udp и icmp. Из платных систем стоит упомянуть firewall-1 (check point software), firewall plus, border manager (novell http://www.novell.com/), black hole. Также средства безопасности присутствуют в операционных системах аппаратных маршрутизаторов, например ios v.11.x фирмы cisco systems (http://www.cisco.com/).

    При установке брандмауэра можно придерживаться различных концепций. В наиболее защищенном варианте запрещаются все соединения как из Интернета на машины локальной сети, так и с локальных машин наружу. Для работы с FTP- и WEB-серверами устанавливается PROXY-сервер, который может заодно и анализировать пользовательский трафик. В облегченном варианте закрываются все протоколы, работа через FTP и HTTP разрешается. Это доставляет меньше неудобств, но приводит к тому, что приходится открывать широкий диапазон портов TCP для входящих соединений, так как этого требует протокол FTP. Ну и, наконец, возможен такой вариант работы, когда открыто все, только отдельные места прикрыты, например, TELNET на UNIX-сервер или 139-й порт, через который работает разделение ресурсов в WINDOWS.

    Рутина

    Рутинная работа ничуть не менее важна, чем грамотно построенная система. Не каждая атака проявляется сразу. Вполне может встретиться такая атака, последствия которой проявятся через несколько недель или месяцев. В связи с этим просто необходимо заранее планировать затраты времени на анализ протоколов, контроль выполнения регламента и тому подобные действия.

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

    Для предотвращения порчи информации необходим анализ целостности информации: тестирование целостности архивированных файлов, подсчет и сверка контрольных сумм для файлов.

    Только тщательное исполнение рутинных процедур может дать некоторые основания для того, чтобы считать систему безопасной.

    Трудности

    Многие вполне очевидные меры могут дать совершенно парадоксальный эффект, если не учитывать то, что предписанные меры выполняют живые люди.

    Например, на каналах IRC можно встретить жалобы на то, что "админ собирается закрыть доступ к IRC" и в связи с этим "нельзя ли этот запрет как-то обойти". По ходу "беседы" такой пользователь готов рассказать о своей сети все, что знает, и воспользоваться практически любым советом, который ему дадут, вплоть до запуска какой-нибудь тут же переданной программы, которая вполне может оказаться "троянской".

    Психологию пользователей необходимо учитывать практически постоянно. Так, хрестоматийное правило не пользоваться "стандартными" паролями приходит в противоречие с правилом "никогда не записывать пароли". Редкий пользователь способен сразу запомнить даже произносимый восьмисимвольный пароль. Поэтому нередкой картиной является либо применение паролей типа "QQQQQ", "PRIVET" и т. п. В случае, когда подобные пароли отсеиваются автоматически, около рабочих мест легко встретить бумажку, на которой записан сгенерированный по всем правилам, "совершенно секретный" пароль.

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

    Описанные в литературе взломы систем с использованием так называемой "социальной инженерии", то есть с использованием психологических, нетехнических методов, показывают необычайную эффективность таких путей, как временный наем на работу, использование личных контактов с работниками предприятия и т. д. Задача предотвращения использования таких методов скорее относится к ведению службы безопасности, но тем не менее некоторые меры должны приниматься системным администратором.

    Во-первых, не стоит разглашать, а тем более детально разъяснять устройство системы, способы ее защиты от несанкционированного доступа.

    Во-вторых, надо стараться совмещать жесткую регламентацию работы персонала (использование паролей, соблюдение секретности и разграничения полномочий) с возможно более широким сотрудничеством. То есть не стоит "из принципа" блокировать интересные для людей сервисы. В общем случае стоит скорее сделать использование некоторого инструмента безопасным, путем применения PROXY или анализа трафика, нежели совсем запретить использование сервиса. Обилие запретов приводит к тому, что люди ищут (и часто находят!) обходные пути, все же позволяющие делать то, что хочется, но уже в обход системного администратора. Особенно неприятно то, что в процессе поиска таких путей привлекаются разнообразные "знакомые", которые получают конфиденциальную информацию о системе.

    Следующая проблема - это соблюдение установленного регламента руководством и самим администратором системы. Зачастую после введения достаточных (по мнению администратора) мер безопасности наступает некоторая эйфория. Следствием этого является то, что установленный регламент исполняется не полностью или не исполняется вовсе, протоколы не анализируются, не производится достаточного тестирования.

    Резюме

    Вряд ли эта статья может вызвать революционные изменения в умах читателей. В конце концов, по проблемам безопасности написано огромное число статей, заметок (например, на сервере http://www.hackzone.ru/) и т. п. Есть более или менее подробные и информативные книги и руководства. Так что информации, в общем, вполне достаточно. В качестве резюме можно привести лишь несколько благих пожеланий:


  • Hosted by uCoz