Конспект

Конспект

Основные требования к системам туннелирования

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

· Сквозная безопасность ограничивает угрозы со стороны промежуточных хостов и маршрутизаторов. Главное внимание при проектировании туннелей уделяется конфиденциальности (Куда уходит мой трафик?), трассируемости (Через какую сеть можно передавать данные?), удобству (Какие усилия могут потребоваться для инсталляции программ и их выполнения?), гибкости (Какие еще существуют варианты использования туннеля?) и качеству (Насколько безболезненно обслуживание системы?).

Проектирование сквозных систем туннелирования

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

· Сквозная безопасность ограничивает угрозы со стороны промежуточных хостов и маршрутизаторов.

· OpenSSH является одним из лучших современных пакетов, который может быть использован для создания сквозных туннелей.

Сезам, откройся: аутентификация

· Основной синтаксис ssh при подключении: ssh user@host.

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

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

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

· К числу команд аутентификации пакета OpenSSH с использованием общедоступного ключа входят следующие:

– генерация криптографической пары SSH1 или SSH2: ssh-keygen или ssh-keygen -t dsa;

– указание удаленному хосту на необходимость использовать криптографическую пару SSH1 вместо пароля cat ~/.ssh/identity.pub | ssh -1 effugas@10.0.1.10 «cd ~ && umask 077 && mkdir -p .ssh && cat >> ~/.ssh/authorized_keys»;

– указание удаленному хосту на необходимость использовать криптографическую пару SSH2 вместо пароля cat ~/.ssh/id_dsa.pub | ssh effugas@10.0.1.10 «cd ~ && umask 077 && mkdir -p .ssh && cat >> ~/.ssh/authorized_keys2»;

– добавление идентификационной фразы к ключу SSH1 или SSH2 ssh-keygen.exe -p или ssh-keygen.exe -d -p;

– запуск агента ключа SSH (позволяет избежать необходимости повторного ввода идентификационной фразы) ssh-agent bash;

– добавление ключа SSH1 или SSH2 к агенту ssh-add or ssh-add ~/.ssh/ id_dsa.

Переадресация команд: применение переадресации команд для непосредственного выполнения скриптов и каналов

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

· Переадресация команд, объединенных вместе с помощью простых каналов, позволяет реализовать множество полезных вещей, например предоставить широкие возможности настройки процедуры передачи файлов в соответствии с потребностями пользователя:

– удаленное выполнение команды ssh user@host command;

– создание канала между выводом удаленной команды и вводом локальной команды ssh user@host «remote_command» I «local_command»;

– получение файла ssh user@host «cat file» > file;

– запись файла cat file I ssh user@host «cat > file»;

– получение содержимого директории ssh user@host ls /path;

– получение нескольких файлов ssh user@host «tar cf – /path» | tar -xf -;

– запись нескольких файлов tar -cf – /path | ssh user@host;

– возобновление загрузки (по каналу связи) ssh user@host «tail -c remote_filesize -local_filesize file» >> file;

– возобновление загрузки в удаленный компьютер (по каналу связи) tail -c local_filesize-remote_filesize file >> file.

· Инструментарий su может быть сделан безопасным; благодаря ограниченности окружения SSH может быть использована для выполнения внутри нее команд:

– безопасное переключение пользователей ssh user@host -t «/bin/su -l user2».

Переадресация портов: доступ к ресурсам удаленных сетей

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

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

· Многие приложения Windows поддерживают протокол SOCKS, а большинство приложений Windows и UNIX могут быть настроены на его использование при помощи общедоступных упаковщиков.

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

· В число команд переадресации порта пакета OpenSSH входят следующие:

– переадресация локального порта на некоторый наугад выбранный порт 6667 хоста, который доступен через SSH-демон ssh user@host -L6667:remotely_visible_host:6667;

– динамическая переадресация локального порта 1080 на некоторый определенный приложением хост и порт, выполненная при помощи SSH-демона ssh user@host -D1080;

– переадресация удаленного порта 5900 на некоторый наугад выбранный порт 5900 хоста, доступного при помощи собственного SSH-клиента ssh user@host - R5900:locally_visible_host:5900.

Когда-то в Риме: пересекая непокорную сеть

· Опция ProxyCommands позволяет привлечь прикладные программы с командной строкой к обеспечению сетевого взаимодействия компьютеров между собой по протоколу SSH. Одним из таких приложений является программа connect.c, которая позволяет прокладывать туннель по протоколу SSH через разнообразные модули доступа прокси.

· Краткая сводка правил применения опций ProxyCommands пакета OpenSSH:

– основное использование ssh -o ProxyCommand="command" user@port;

– применение вместо внутреннего сокета протокола TCP программы netcat для подключения к удаленному хосту ssh -o Proxy Command= " nc %h %p" user@host;

– использование программы connect.c для маршрутизации трафика через демон SOCKS4 на proxy_host:20080 для подключения к удаленному хосту ssh -o ProxyCommand= " connect.exe -4 -S proxy_user@proxy:20080 %h %p " user@host;

– использование программы connect.c для маршрутизации трафика через демон SOCKS5 на proxy_host:20080 для подключения к удаленному хосту ssh -o ProxyCommand= " connect.exe -5 -S proxy_user@proxy:20080 %h %p " user@host;

– использование программы connect.c для маршрутизации трафика через демон HTTP на proxy_host:20080 для подключения к удаленному хосту ssh -o ProxyCommand="connect.exe -H proxy_user@ proxy:20080 %h %p " user@host.

· Часто для прохождения через большинство сетей достаточно просто применить протокол SSH, использующий порты HTTP или HTTPS (80 или 443).

· При работе по протоколу SSH программа HTTPTunnel позволяет перемещаться по любым сетям, которые поддерживают обычный Web-трафик:

– перенаправление трафика протокола HTTP от локального порта 10080 к SSH-демону на локальном хосте localhost hts 10080 -F 127.0.0.1:22;

– прослушивание SSH-трафика по порту 10022, преобразование его в дружественные протоколу HTTP-пакеты, отправка их через модуль доступа прокси на proxy_host:8888 и доставка их серверной части программы httptunnel на хосте 10080 htc -F10022 – P proxy_host:8888 host:10080;

– отправка трафика на порт 10022 локального хоста localhost при условии проверки возможности переадресации на конечный хост ssh -o HostKeyAlias=host -o Port=10022 user@127.0.0.1.

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

· Сервер может также установить SSH-соединение к клиенту, экспортируя доступ к своему собственному SSH-демону, и, таким образом, стать удаленно администрируемым сервером.

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

· Ниже перечислены команды импортирования доступа от хоста-бастиона к SSH-демону:

– настройка механизма локальной переадресации к SSH-демону, к которому можно получить доступ через хост-бастион ssh -L2022:backend_host:22 user@bastion;

– самостоятельное подключение к SSH-демону, который стал доступным в результате выполнения предыдущей команды ssh -o HostKeyAlias=backend_host -p 2022 root@127.0.0.1;

– настройка механизма динамической переадресации для получения доступа к сети, видимой позади некоторого хоста-бастиона ssh -D1080 user@bastion;

– подключение к некоторому SSH-демону, который виден с хоста-бастиона, подключенного в результате выполнения предыдущей команды ssh -o ProxyCommand="connect -4 -S 127.0.0.1:1080 %h %p " user@backend_host;

– настройка обычного механизма продвижения данных к месту использования; непосредственная выдача хосту-бастиону команды установить связь с внутренним хостом ssh -o Proxy Command= "ssh user@bastion nc %h %p " user@backend_host.

· В число команд экспортирования системой с установленным SSH-демоном хосту-бастиону (или клиенту) возможности соединения компьютеров между собой по протоколу SSH входят следующие:

– экспорт доступа нашему SSH-демону по локальному порту 2022 клиента ssh -R2022:127.0.0.1:22 user@client;

– обратное подключение посредством механизма переадресации экспортированного порта во время верификации идентификационных данных сервера ssh -О HostKeyAlias=backend_host user@127.0.0.1.

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

На полпути: что теперь?

· Файлы могут быть легко скопированы при помощи программы scp, которая поддерживает переадресацию?

– копирование файла на удаленный хост scp file user@host:/patk,

– копирование файла при помощи переадресации локального порта scp -о "HostKeyAlias backend_hosf -о «Port 2022» file user@ backend_host:/tmp.

· При помощи программы rsync можно инкрементным способом (и эффективно) обновить внутреннее содержимое дерева директорий даже через туннель HTTP:

– синхронизация файла с файлом удаленого хоста (обновление только того, что необходимо) rsync -е ssh file user@host:/path/file;

– определение SSH1 для программы rsync rsync -е «ssh -1» file user@host:/path/file;

– работа с программой rsync через туннель HTTP:

– запуск серверной части программы HTTPTunnel hts 10080 -F 127.0.0.1:22;

– запуск клиентской части программы HTTPTunnel htc -F 10022 -Р proxy_host:8888 host:10080;

– работа программы rsync с внутренним содержимым директории при помощи файла rsync -v -r -e “ssh -o HostKeyAl ias=host path user@127.0.0.1:/path.

· Можно по сети записать данные на компакт-диски, локально запустив программу mkisofs и направляя по каналу ее вывод удаленному приложению cdrecord?

– непосредственная запись данных на CD с использованием протокола SSH mkisofs -JR path/ | ssh user@burning_host “cdrecord dev=scsi_id speed=# -”;

– запись данных на CD с использованием протокола SSH после кэширования данных на удаленном хосте mkisofs -JR path/ | ssh user@host “cat > /tmp/burn.iso && cdrecord dev=scsi_id speed=# /tmp/burn.iso && rm /tmp/burn.iso”.

Можно, используя программы SHOUTcast, inetd или mpg123, непосредственно передавать музыку в формате зашифрованного или незашифрованного потока аудиоданных аудиосистеме через сеть:

Переадресация всех данных в формате MP3, посланных MP3 декодеру удаленного сервера на localhost:18001 ssh -L18001:127.0.0.1:18001 effugas@10.0.1.11 “nc -l -p 18001 -e ./plaympg.sh” (plaympg.sh contents: #!/bin/sh -c “echo OK; exec mpg123 -).

Данный текст является ознакомительным фрагментом.