Коллектив авторов - Защита от хакеров корпоративных сетей
Одними из наиболее больших проблем существующих версий X-Windows являются отсутствие в них средств шифрования и, что еще хуже, сложность использования предлагаемых ими средств аутентификации, которые не обеспечивают нужной безопасности (в конце концов, они сводятся к простой проверке способности ответить). Тату Ялонен (Tatu Ylonen) в своем пакете, развивающем возможности прекрасного пакета Secure Shell (SSH), для повышения гибкости безопасной организации сети включил в него очень элегантное решение продвижения данных X-приложений (приложений, работающих по протоколу X-Windows) к месту использования (X-Forwarding). Туннелирование X-трафика по виртуальному отображению туннеля через протокол SSH – сложная и в конечном счете бесполезная процедура управления переменными DISPLAY. Аргументы xhost/xauth были заменены простым вводом ssh [email protected] и запуском X-приложения при помощи командного процессора. Защита – это прекрасно, но давайте скажем откровенно: «Вопреки ожиданиям только это и сработало!»
Решение было и продолжает оставаться блестящим. Оно расценивается как один из лучших примеров наиболее очевидного, но зачастую невозможного следования закону усовершенствования проекта: «Не сделайте хуже». Даже лучшие решения систем безопасности или туннелирования могут оказаться не вполне удобными для использования. Как минимум, они потребуют дополнительных действий, возможно, немного везения при обработке данных и вызовут легкое замешательство пользователя или снижение производительности сети (в терминах времени ожидания или пропускной способности). Это неизбежное следствие обмена свободы на безопасность, хотя при туннелировании свобода несильно отличается от компьютерной безопасности. Даже простое закрытие двери квартиры на ключ обязывает хозяина квартиры помнить место хранения ключа, замедляя его доступ в собственную квартиру. Если хозяин квартиры забудет ключ от входной двери или место его хранения, то придется столкнуться с дополнительными издержками (как, например, в случае хранения ключа у друга или администратора для восстановления доступа к своей собственности потребуется срочно позвонить ему по телефону). В конце концов, для сдерживания решительно настроенного грабителя недостаточно просто запереть дверь! Таким образом, затруднение в использовании и недостаточная эффективность являются предметом уже состоявшегося разговора.
Тем не менее это поучительная проблема. X-Windows является протоколом, который соединяет выполняющиеся в одном месте программы для отображения их результатов в другом. Для этого нужно создать канал отображения образов на экран дисплея и в ответ получить координаты траектории движения мышки или коды нажатых клавиш.
Что произойдет, если сервер был скомпрометирован?
Неожиданно способность отслеживать нажатие клавиш может быть сведена к достижению совершенно другой цели – контролю активности удаленного клиента. Он вводит пароль? Перехвачено. Выводит символ? Запомнено. Помните, что по туннелю, если рассматривать его как элегантно зашифрованное и удостоверенное соединение, может быть передана важная информация. И вот еще. Безопасность туннеля не может быть выше безопасности его начальной и конечной точек.
Возможное решение состояло в отключении возможности продвижения данных X-приложений по умолчанию. В настоящее время в OpenSSH реализована команда ssh – X use[email protected], которая делает это при условии реализации точно такой же возможности на сервере. (Нет, это еще не законченное решение. В случае возникновения у клиента необходимости отправки X-трафика скомпрометированный сервер все еще может попытаться эксплуатировать клиента с нарушением установленных режимов работы. Но на некотором этапе проблема превращается в проблему собственно X-трафика, и в большинстве сессий протокол SSH ничего не может с этим поделать. Большинство сессий может быть сделано безопасными простым отключением опции по умолчанию. Гораздо более безопасным решением является пересылка X-трафика при помощи программного обеспечения VNC (Virtual Network Computing – виртуальная сетевая обработка данных), что во многих сравнительно медленных сетевых топологических схемах устанавливается быстрее, проще, а работает гораздо стабильнее. Подробнее об этом можно узнать по адресу www.tightvnc.org.).
Подводя итог, можно сказать, что проиллюстрированная проблема очень проста. Иногда гибкость может обернуться боком и больно ударить по интересам пользователя. Чем меньше пользователь доверяет начальной и конечной точке туннеля, тем более защищенным должно быть решение туннелирования.
Качество: «Насколько безболезненно обслуживание системы?»
Среди главных вопросов, на которые нужно ответить при исследовании качества системы, являются следующие:
• можно ли реализовать задуманное;
• будет ли устойчив полученный результат;
• будет ли реализация достаточно быстра?
Есть несколько простых вещей, про которые читатель может подумать, что они очевидны. Некоторые базовые концепции выглядят настолько естественными, что никто даже и подумал бы предположить что-либо другое. Можно полагать, что к ним принадлежит идея удобства и простоты использования системы. Если система непригодна, то никому и в голову не придет использовать ее. Читатель может подумать, что словосочетание «непригодно для использования» означает систему, которая охотно поделится конфиденциальной информацией с первым встречным, но на самом деле это не так. В последнее время появилось слишком много систем, которые таковыми в буквальном смысле не являются, но из-за их чрезмерной сложности их нельзя модернизировать, подделать, использовать в своих целях, адаптировать к нуждам конкретного сайта или сделать с ними еще что-нибудь, поэтому все силы уходят на то, чтобы они вообще заработали. Такие системы не приветствуются даже в области обеспечения безопасности. Те, кто боится сломать их, избегают вносить в них исправления. (На многие, очень многие сервера не устанавливаются патчи, латающие дыры в системе безопасности сервера, только потому, что получила распространение очень простая логика, согласно которой исправленный сервер злоумышленник может и не атаковать, а обновляющий сервер патч наверняка содержит ошибки.) Поэтому на самом деле основные вопросы к любой системе туннелирования состоят в следующем: «Можно ли, приложив разумные усилия, сначала установить систему, а затем поддерживать ее силами обслуживающего персонала? Насколько надежна настройка системы? Каков риск простоя системы во время ее использования после проведенной модернизации?»
В некоторых случаях менее важным фактором является проблема быстродействия. Хотя иногда фактор быстродействия является определяющим, особенно на стороне сервера, который соединяет воедино многочисленные криптографические туннели. Все системы имеют собственные требования к своей производительности. Не существует решений, которые одинаково хорошо удовлетворяют всем требованиям. При проектировании систем туннелирования необходимо убедиться, что они способны успешно справиться с проектируемой загрузкой.
Проектирование сквозных систем туннелирования
Можно реализовать различные варианты туннелей. Изучение способов шифрования межсетевого интерфейса свидетельствует о стремлении сосредоточиться на методологии туннелирования, подлежащей реализации. Простое правило утверждает: «Когда это возможно, туннели должны удовлетворять требованию сквозной безопасности». Нужно создать такие условия, чтобы только клиент и сервер были в состоянии получить доступ к передающемуся по туннелю трафику и расшифровать его. Хотя межсетевые экраны, маршрутизаторы и даже другие серверы могут быть включены в процесс передачи зашифрованного потока данных, только начальная и конечная точки туннеля должны обладать возможностью стать полноправными участниками обмена данными по туннелю. Конечно, всегда есть возможность обратиться к конечным точкам туннеля с запросом предоставления доступа к части доступной им сети. Это предпочтительнее выполнения на них сервисов, хотя и выходит за рамки компетенции туннеля. Проехав по туннелю под Ла-Маншем из Англии во Францию, далее можно свободно путешествовать по Испании или Германии. В чем проблема? Ведь уже можно гарантировать, что после пересечения Ла-Манша путешественник в море не утонет!
Сквозное туннелирование безукоризненно выполняет следующие три функции:
• устанавливает правильный маршрут от клиента к серверу;
• самостоятельно выполняет процедуру аутентификации и шифрует передаваемые по новому маршруту данные;
• переадресует (перенаправляет) сервисы (forward services) по установленному таким образом соединению.
Перечисленные функции могут быть сведены к единственному шагу, как, например, получение доступа к зашифрованному протоколом SSL Web-сайту путем прохода через проницаемую сеть. Названные три функции могут быть расширены, дополнены и повторно объединены самым различным образом, например для подтверждения подлинности промежуточных хостов (а также подтверждение им своей подлинности) перед разрешением каких-либо попыток аутентификации по пути к конечному адресату. Но эти названные три функции всегда должны быть реализованы, и именно об этом пойдет речь дальше.