Коллектив авторов - Защита от хакеров корпоративных сетей
– указание удаленному хосту на необходимость использовать криптографическую пару SSH2 вместо пароля cat ~/.ssh/id_dsa.pub | ssh [email protected] «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 [email protected] command;
– создание канала между выводом удаленной команды и вводом локальной команды ssh [email protected] «remote_command» I «local_command»;
– получение файла ssh [email protected] «cat file» > file;
– запись файла cat file I ssh [email protected] «cat > file»;
– получение содержимого директории ssh [email protected] ls /path;
– получение нескольких файлов ssh [email protected] «tar cf – /path» | tar -xf -;
– запись нескольких файлов tar -cf – /path | ssh [email protected];
– возобновление загрузки (по каналу связи) ssh [email protected] «tail -c remote_filesize -local_filesize file» >> file;
– возобновление загрузки в удаленный компьютер (по каналу связи) tail -c local_filesize-remote_filesize file >> file.
· Инструментарий su может быть сделан безопасным; благодаря ограниченности окружения SSH может быть использована для выполнения внутри нее команд:
– безопасное переключение пользователей ssh [email protected] -t «/bin/su -l user2».
Переадресация портов: доступ к ресурсам удаленных сетей
· При переадресации локального порта издалека импортируется единственный порт, при помощи которого обеспечивается возможность соединения компьютеров между собой, что резко снижает возможность ее применения в других протоколах.
· При переадресации динамического порта откуда-то издалека импортируется целый диапазон портов, определяющий способность к сетевому соединению компьютеров между собой. Для переадресации динамического порта необходимо, чтобы приложения могли выдавать правильные запросы переадресации по протоколу SOCKS.
· Многие приложения Windows поддерживают протокол SOCKS, а большинство приложений Windows и UNIX могут быть настроены на его использование при помощи общедоступных упаковщиков.
· При переадресации удаленного порта экспортируется единственный порт, позволяющий обеспечить сетевое взаимодействие с внешним миром.
· В число команд переадресации порта пакета OpenSSH входят следующие:
– переадресация локального порта на некоторый наугад выбранный порт 6667 хоста, который доступен через SSH-демон ssh [email protected] -L6667:remotely_visible_host:6667;
– динамическая переадресация локального порта 1080 на некоторый определенный приложением хост и порт, выполненная при помощи SSH-демона ssh [email protected] -D1080;
– переадресация удаленного порта 5900 на некоторый наугад выбранный порт 5900 хоста, доступного при помощи собственного SSH-клиента ssh [email protected] - R5900:locally_visible_host:5900.
Когда-то в Риме: пересекая непокорную сеть
· Опция ProxyCommands позволяет привлечь прикладные программы с командной строкой к обеспечению сетевого взаимодействия компьютеров между собой по протоколу SSH. Одним из таких приложений является программа connect.c, которая позволяет прокладывать туннель по протоколу SSH через разнообразные модули доступа прокси.
· Краткая сводка правил применения опций ProxyCommands пакета OpenSSH:
– основное использование ssh -o ProxyCommand="command" [email protected];
– применение вместо внутреннего сокета протокола TCP программы netcat для подключения к удаленному хосту ssh -o Proxy Command= " nc %h %p" [email protected];
– использование программы connect.c для маршрутизации трафика через демон SOCKS4 на proxy_host:20080 для подключения к удаленному хосту ssh -o ProxyCommand= " connect.exe -4 -S [email protected]:20080 %h %p " [email protected];
– использование программы connect.c для маршрутизации трафика через демон SOCKS5 на proxy_host:20080 для подключения к удаленному хосту ssh -o ProxyCommand= " connect.exe -5 -S [email protected]:20080 %h %p " [email protected];
– использование программы connect.c для маршрутизации трафика через демон HTTP на proxy_host:20080 для подключения к удаленному хосту ssh -o ProxyCommand="connect.exe -H [email protected] proxy:20080 %h %p " [email protected]
· Часто для прохождения через большинство сетей достаточно просто применить протокол 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 [email protected]
· Протокол SSH может подтвердить свою собственную подлинность хосту-бастиону, расположенному между клиентом и сервером, проложить через него маршрут передачи данных и независимым образом подтвердить подлинность серверу, с которым пользователь собирался установить соединение с самого начала.
· Сервер может также установить SSH-соединение к клиенту, экспортируя доступ к своему собственному SSH-демону, и, таким образом, стать удаленно администрируемым сервером.
· Доступ может как экспортироваться, так и импортироваться, позволяя двум взаимно защищенным межсетевыми экранами хостам встретиться где-то посередине на специальном хосте-бастионе и установить через него соединение.
· Ниже перечислены команды импортирования доступа от хоста-бастиона к SSH-демону:
– настройка механизма локальной переадресации к SSH-демону, к которому можно получить доступ через хост-бастион ssh -L2022:backend_host:22 [email protected];
– самостоятельное подключение к SSH-демону, который стал доступным в результате выполнения предыдущей команды ssh -o HostKeyAlias=backend_host -p 2022 [email protected];
– настройка механизма динамической переадресации для получения доступа к сети, видимой позади некоторого хоста-бастиона ssh -D1080 [email protected];
– подключение к некоторому SSH-демону, который виден с хоста-бастиона, подключенного в результате выполнения предыдущей команды ssh -o ProxyCommand="connect -4 -S 127.0.0.1:1080 %h %p " [email protected]_host;
– настройка обычного механизма продвижения данных к месту использования; непосредственная выдача хосту-бастиону команды установить связь с внутренним хостом ssh -o Proxy Command= "ssh [email protected] nc %h %p " [email protected]_host.
· В число команд экспортирования системой с установленным SSH-демоном хосту-бастиону (или клиенту) возможности соединения компьютеров между собой по протоколу SSH входят следующие:
– экспорт доступа нашему SSH-демону по локальному порту 2022 клиента ssh -R2022:127.0.0.1:22 [email protected];
– обратное подключение посредством механизма переадресации экспортированного порта во время верификации идентификационных данных сервера ssh -О HostKeyAlias=backend_host [email protected]
· Возможен как импорт, так и экспорт, позволяющий создавать «плавающий хост-бастион», в котором встречаются оба хоста. Такая возможность особенно полезна при предоставлении возможности двум хостам, взаимно защищенным друг от друга межсетевыми экранами, надежно и без риска встретиться на любом сайте и безопасно связаться друг с другом.
На полпути: что теперь?
· Файлы могут быть легко скопированы при помощи программы scp, которая поддерживает переадресацию?
– копирование файла на удаленный хост scp file [email protected]:/patk,
– копирование файла при помощи переадресации локального порта scp -о "HostKeyAlias backend_hosf -о «Port 2022» file [email protected] backend_host:/tmp.