Коллектив авторов - Защита от хакеров корпоративных сетей
Различные проблемы вынудили вернуться к ясным решениям туннелирования. При их реализации поиск общих способов инкапсуляции обычно приводит к более эффективным решениям, хотя затраченные на их поиск усилия и отдача от них могут изменяться в очень широких пределах. Основными идеями, лежащими в основе проектирования туннелей, являются следующие:
• конфиденциальность: «Куда уходит мой трафик?»;
• трассируемость: «Через какую сеть можно передавать данные?»;
• удобство: «Какие усилия могут потребоваться для инсталляции программ и их выполнения?»;
• гибкость: «Какие еще существуют варианты использования туннеля?»;
• качество: «Насколько безболезненно обслуживание системы?».
Общим правилом создания сквозных безопасных туннелей должно стать использование криптографических методов. Независимо от того, какие способы необходимы для установления связи между точками A и B, для передачи данных между ними следует использовать всюду, где это возможно, криптографические методы. Учитывая конкретные условия, процесс построения туннеля предусматривает прокладку маршрута от клиента к серверу, независимое выполнение процедур аутентификации и шифрования передаваемых данных по проложенному пути, а также переадресацию (перенаправление) сервисов по полученному виртуальному каналу связи. Пакет OpenSSH является одним из лучших пакетов для создания сквозных туннелей, которые доступны в настоящее время.
В пакете OpenSSH аутентификация реализована следующим образом. Клиенты удостоверяют подлинность серверов, используя хранимые у них ключи хостов. Первое подключение используется для подтверждения подлинности всех последующих соединений. Ключи могут быть распределены заранее, но до сих пор неизвестны унифицированные и изящные решения их распределения. Сервера удостоверяют подлинность клиентов при помощи паролей или удаленно верифицированных личных ключей. Клиенты могут размещать пароли в своих ключах. Они могут использовать программы-агенты для предотвращения повторного ввода пароля при каждой попытке подключения. Сказанное заслуживает специального замечания: единственная учетная запись, даже учетная запись суперпользователя, может санкционировать доступ к различным программам с дефектами в области защиты обработки и хранения ключей.
Пакет OpenSSH позволяет переадресовывать команды. Простое добавление в конец обращения к ssh имени команды, которую пользователь собирается выполнить, приведет к удаленному ее выполнению так, как будто это локальная команда. Если удаленная команда ожидает предоставления ей возможности вывода на экран, то следует воспользоваться опцией -t. Переадресация команд, объединенных вместе с помощью простых каналов, позволяет значительно повысить эффект от их использования. Хорошим примером применения каналов является передача файлов, настроенная в соответствии с потребностями пользователя. Наконец, можно существенно повысить безопасность применения инструментария su благодаря замкнутости окружения ssh во время выполнения команд внутри нее.
Кроме того, пакет OpenSSH позволяет переадресовывать TCP-порты. При переадресации локального порта откуда-то издалека импортируется единственный порт, определяющий способность к сетевому соединению компьютеров между собой. Тем самым резко снижаются возможности применения механизма перенаправления локального порта в других протоколах. При переадресации динамического порта откуда-то издалека импортируется целый диапазон портов, определяющий способность к сетевому соединению компьютеров между собой. В этом случае от приложений требуется выдавать правильные запросы переадресации по протоколу SOCKS. Многие приложения Windows поддерживают протокол SOCKS, а большинство приложений Windows и UNIX могут быть настроены на его использование при помощи общедоступных упаковщиков. И наконец, при переадресации удаленного порта экспортируется единственный порт, позволяющий обеспечить сетевое взаимодействие с внешним миром.
У пакета OpenSSH есть специальные возможности для прокладки туннелей через непокорные, труднопреодолимые сети. Опция ProxyCommands позволяет привлечь прикладные программы с командной строкой к обеспечению сетевого взаимодействия компьютеров между собой по протоколу SSH. Одним из таких приложений является программа connect.c, которая позволяет прокладывать туннель по протоколу SSH через разнообразные модули доступа прокси. Это может оказаться избыточной возможностью, поскольку зачастую для прохода через большинство сетей достаточно простого использования протоколом SSH портов HTTP или HTTPS (80 или 443 соответственно). Когда это невозможно, то программа httptunnel позволяет SSH проходить через любые сети, которые поддерживают стандартный Web-трафик.
Кроме того, пакет OpenSSH может подтвердить свою собственную подлинность хосту-бастиону, расположенному между клиентом и сервером, проложить через него маршрут передачи данных и независимым образом подтвердить подлинность серверу, с которым пользователь собирался установить соединение с самого начала. Сервер может также установить SSH-соединение к клиенту, экспортируя доступ к своему собственному SSH-демону. В результате сервер становится удаленно администрируемым сервером. Два описанных способа могут быть объединены. Таким образом, доступ может как экспортироваться, так и импортироваться, позволяя двум взаимно защищенным межсетевыми экранами хостам встретиться где-то посередине на специальном хосте-бастионе и установить через него соединение.
Существуют некоторые интересные и полезные способы, которыми можно воспользоваться. Читатель может легко скопировать файлы при помощи программы scp, которая в свою очередь может быть переадресована с использованием ранее описанных способов. При помощи программы rsync можно инкрементным способом (и эффективно) обновить внутреннее содержимое дерева директорий даже через туннель HTTP. Можно по сети записать данные на компакт-диски, локально запустив программу mkisofs и направляя по каналу ее вывод удаленному приложению cdrecord. Можно, используя программы SHOUTcast, inetd или mpgl23, непосредственно передавать зашифрованный или незашифрованный поток аудиоданных аудиосистеме через сеть.Конспект
Основные требования к системам туннелирования
· В общем случае наиболее эффективными оказываются подходы инкапсуляции, которые предусматривают перехват трафика, не требуя взамен знания его содержимого.
· Сквозная безопасность ограничивает угрозы со стороны промежуточных хостов и маршрутизаторов. Главное внимание при проектировании туннелей уделяется конфиденциальности (Куда уходит мой трафик?), трассируемости (Через какую сеть можно передавать данные?), удобству (Какие усилия могут потребоваться для инсталляции программ и их выполнения?), гибкости (Какие еще существуют варианты использования туннеля?) и качеству (Насколько безболезненно обслуживание системы?).
Проектирование сквозных систем туннелирования
· Сквозные туннели, а'ля криптографические шлюзы, прокладывают надежный маршрут передачи данных от клиента к серверу, независимым образом подтверждают подлинность участвующих в обмене данными сторон, зашифровывают передаваемые по этому маршруту данные и перенаправляют сервисы по созданному каналу связи.
· Сквозная безопасность ограничивает угрозы со стороны промежуточных хостов и маршрутизаторов.
· OpenSSH является одним из лучших современных пакетов, который может быть использован для создания сквозных туннелей.
Сезам, откройся: аутентификация
· Основной синтаксис ssh при подключении: ssh [email protected]
· Клиенты удостоверяют подлинность серверов при помощи запомненных ключей хостов. Первое подключение используется для подтверждения подлинности всех последующих соединений. Ключи могут быть заранее распределены, но до сих пор неизвестно изящного решения этой проблемы.
· Серверы подтверждают подлинность клиентов при помощи паролей или удаленно верифицированных личных ключей. Клиенты могут разместить пароли в своих ключах и использовать программы-агенты для предотвращения повторного ввода пароля при каждой попытке подключения.
· Единственная учетная запись, даже учетная запись суперпользователя, может санкционировать доступ к различным программам с дефектами в области защиты обработки и хранения ключей.
· К числу команд аутентификации пакета OpenSSH с использованием общедоступного ключа входят следующие:
– генерация криптографической пары SSH1 или SSH2: ssh-keygen или ssh-keygen -t dsa;
– указание удаленному хосту на необходимость использовать криптографическую пару SSH1 вместо пароля cat ~/.ssh/identity.pub | ssh -1 [email protected] «cd ~ && umask 077 && mkdir -p .ssh && cat >> ~/.ssh/authorized_keys»;