Защита от хакеров корпоративных сетей
Шрифт:
Удобство: «Какие усилия могут потребоваться для инсталляции программ и их выполнения?»
Основополагающим для определения возможности инсталляции программ и их выполнения является ответ на следующие два вопроса:
• что нужно установить на стороне клиента, который хотел бы принять участие в передаче данных по туннелю?
• что нужно установить на стороне сервера, который хотел бы принять участие в передаче данных по туннелю?
Инсталляция программы всегда опасна. Да, это так. Источником инсталляционного кода могут оказаться что угодно и кто угодно, поэтому всегда есть риск подмены устанавливаемого кода на Троянского коня. Установленный код должен выполняться на компьютере, который, возможно, прекрасно перед этим работал, а инсталляция, например, может вывести из строя хорошо зарекомендовавшую себя систему, чрезвычайно важную для повседневной деятельности компании. Всегда вопрос
Обновление клиента может оказаться более удобным и выгодным, потому что в этом случае исправления локализуются в нужном месте: тот, кто наиболее нуждается в дополнительных возможностях, зачастую больше заинтересован в обновлении своих программ. Напротив, обновление сервера отделено от пользователя и вынуждает его делать работу, которая принесет пользу другим. (Нельзя также проигнорировать и тот факт, что в общем случае обновление устойчиво работающих серверов не является хорошим способом исправления чего-то, что не может привести к отказу работы большого числа пользователей.)
Другие системы туннелирования извлекают преимущества из уже размещенных на стороне клиентов программ, обеспечивая для них поддержку сервера. Обычно этот поход позволяет предоставить новые возможности туннелирования гораздо большему числу клиентов, попутно позволяя администратору существенно повысить безопасность всей системы при помощи простых настроек. Например, автоматически перенаправить весь трафик HTTP через шлюз протокола HTTPS или вынудить использующих радиоканал клиентов обращаться к туннелю через протокол PPTP (Point-to-Point Tunneling Protocol – протокол двухточечного туннеля. Новая сетевая технология, которая поддерживает многопротокольные виртуальные частные сети (VPN), позволяя удаленным пользователям безопасно обращаться к корпоративным сетям с помощью коммутируемого соединения, предоставляемого провайдером Интернет или с помощью прямого подключения к Интернету), который является стандартом в операционных системах клиентов.
А наиболее мощные и наименее удобные решения туннелирования требуют инсталляции специального программного обеспечения на сервере и клиенте одновременно. Следует подчеркнуть, что используемое здесь слово специальное подразумевает изящное решение для достижения невозможного. Иногда невозможно достигнуть определенных результатов без одновременного распространения «цены» решения туннелирования на клиента и сервер.
Очевидным выводом является то, что для большинства удобных, но наименее эффективных систем не требуется инсталляции программ ни на стороне клиента, ни на стороне сервера. Наиболее часто это происходит, когда после инсталляции систем по умолчанию на каждой из сторон туннеля внезапно обнаруживается, что они могут использоваться и для решения других, ранее не предусмотренных задач. Взламывая укоренившиеся взгляды на использование устоявшихся функций неизменных приложений, можно получить невероятные результаты, вызывающие удивление.
Гибкость: «Какие еще существуют варианты использования туннеля?»
Основополагающими вопросами, на которые следует ответить при рассмотрении этого требования, являются следующие:
• что может передаваться по анализируемому туннелю;
• следует ли ожидать неприятностей от чрезмерно большой пропускной способности туннеля?
Иногда туннель является прозрачной системой защиты, а иногда системой с ошибками. Поэтому в одном случае получается туннель под Ла-Маншем, а в другом – хрупкий веревочный мостик. Не все решения туннелирования передают действительно необходимый и правильный трафик.
Многие системы просто инкапсулируют битовый поток данных в криптоуровень независимо от того, сделаны они с помощью подручных средств наспех или это профессионально выполненная работа. Протокол TCP, являющийся системой надежного обмена данными между хостами, обращается к необходимому ему программному обеспечению через интерфейс сокетов. Создается ощущение, что протокол защищенных сокетов SSL с самого начала предназначался как более удобная замена стандартных сокетов, но всякого рода несовместимости помешали осуществлению этой затеи. (Также создается впечатление, что в конечном счете SSL собирается стать «функциональным решателем
При проектировании систем туннелирования может быть использован протокол SSH. Наибольшую производительность систем туннелирования можно достичь при переадресации (forwarding) TCP-сессий. Реализация протокола SSH предусматривает поддержку очень широкого диапазона передаваемых данных, начиная от трафика протокола TCP и заканчивая командами командного процессора для X-приложений, которые могут быть выданы чрезвычайно гибким способом, настраиваемого по мере необходимости. Подобная гибкость делает протокол SSH весьма привлекательным для многих решений туннелирования, хотя и не бесплатно.
Остроумное замечание. Отличающиеся высокой гибкостью решения туннелирования могут страдать от излишней пропускной способности. Сказанное известно как проблема «излишней пропускной способности». Другими словами, если установка туннеля преследовала какую-то цель, то не может ли одна из сторон туннеля воспользоваться соединением для получения больших прав доступа, чем ей доверяют на самом деле?
Несмотря на то что протокол X-Windows на платформе UNIX несколько неуклюж, он является разумной архитектурой графических приложений, используемой для многооконного отображения графики и текста. Одним из его самых больших достоинств является сетевая прозрачность. Окно приложения не обязательно должно быть отображено на компьютере, на котором оно было запущено. Идея заключается в том, что медленные и недорогие аппаратные средства для работы пользователей могут быть развернуты в сети где угодно. Для пользователя это не важно. Но каждое из выполняющихся на них приложений будет «казаться» быстрым, потому что на самом деле приложения выполняются на очень быстром и дорогом сервере, расположенном вдали от любопытных глаз. (Подобные решения годятся для автоматизации задач бизнеса, потому что намного проще получить высокую прибыль на большом сервере, чем на небольших настольных компьютерах. Совсем недавно это своеобразное «вращение карусели» с различным успехом было повторено в Web-сетях, сетевых компьютерах Java и, конечно, в архитектуре. NET.)
Одними из наиболее больших проблем существующих версий X-Windows являются отсутствие в них средств шифрования и, что еще хуже, сложность использования предлагаемых ими средств аутентификации, которые не обеспечивают нужной безопасности (в конце концов, они сводятся к простой проверке способности ответить). Тату Ялонен (Tatu Ylonen) в своем пакете, развивающем возможности прекрасного пакета Secure Shell (SSH), для повышения гибкости безопасной организации сети включил в него очень элегантное решение продвижения данных X-приложений (приложений, работающих по протоколу X-Windows) к месту использования (X-Forwarding). Туннелирование X-трафика по виртуальному отображению туннеля через протокол SSH – сложная и в конечном счете бесполезная процедура управления переменными DISPLAY. Аргументы xhost/xauth были заменены простым вводом ssh user@host и запуском X-приложения при помощи командного процессора. Защита – это прекрасно, но давайте скажем откровенно: «Вопреки ожиданиям только это и сработало!»
Решение было и продолжает оставаться блестящим. Оно расценивается как один из лучших примеров наиболее очевидного, но зачастую невозможного следования закону усовершенствования проекта: «Не сделайте хуже». Даже лучшие решения систем безопасности или туннелирования могут оказаться не вполне удобными для использования. Как минимум, они потребуют дополнительных действий, возможно, немного везения при обработке данных и вызовут легкое замешательство пользователя или снижение производительности сети (в терминах времени ожидания или пропускной способности). Это неизбежное следствие обмена свободы на безопасность, хотя при туннелировании свобода несильно отличается от компьютерной безопасности. Даже простое закрытие двери квартиры на ключ обязывает хозяина квартиры помнить место хранения ключа, замедляя его доступ в собственную квартиру. Если хозяин квартиры забудет ключ от входной двери или место его хранения, то придется столкнуться с дополнительными издержками (как, например, в случае хранения ключа у друга или администратора для восстановления доступа к своей собственности потребуется срочно позвонить ему по телефону). В конце концов, для сдерживания решительно настроенного грабителя недостаточно просто запереть дверь! Таким образом, затруднение в использовании и недостаточная эффективность являются предметом уже состоявшегося разговора.