автор Georges Tarbouriech Об авторе:
Georges давно использует Unix (коммерческие и бесплатные). Его очень интересуют
проблемы информационной безопасности и он благодарен сообществу свободно
распространяемого программного обеспечения за ту работу, которую оно ведет в
данном направлении.
Содержание: |
Резюме:
SSH - secure shell, очень хороший коммерческий
продукт. Тем не менее, подобные программы существуют и в бесплатном исполнении -
серверы и клиенты для Unix (коммерческие и бесплатные) и для других ОС.
Наиболее известный - OpenSSH (http://www.openssh.org).
На домашней странице доступны версии для Unix, Windos, Mac..., но для некоторых
ОС, таких как Windos - только бесплатные клиенты.
В заметке представлены несколько примеров использования ssh для передачи данных
между приложениями. VPN (Virtual Private Network) - основан на ssh, но это
немного не то, о чем будем говорить мы. Еще одно из возможных решений -
использование VTun.
Итак, наша цель - передача зашифрованных данных в сети, для предотвращения
возможности слежения за ними. Конечно это применимо как для локальных, так и внешних
сетей. Не забывайте, что ssh только шифрует данные, но не защищает сеть саму по
себе...
Вас предупредили !
SSH - замена telnet или rsh, rlogin, о чем мы говорили в предыдущей
заметке. Даже несмотря на
найденные недавно ошибки - ssh остается хорошим инструментом для шифрования данных.
Кстати, упомянутые выше проблемы касаются паролей - настоятельно рекомендуется
использовать passphrases и, конечно же, RSA keys ! Использование ssh не мешает
вам применять другие инструменты подобного назначения - например tcpwrapper.
Достаточно просто просматривать данные, циркулирующие в сети стандартными
утилитами, такими как tcpdump или snoop. Можно протестировать это - например
два компьютера в сети обмениваются данными используя telnet, в это время на
третьем компьютере с ОС Linux, например, запускаем tcpdump (с привилегией root
конечно) и наблюдаем за происходящим. Вы можете исследовать все данные!
Конечно все очень быстро мелькает на экране, но можно перенаправить весь поток
данных в файл и потом спокойно изучить за чашечкой кофе. Делаем вывод - если
это применимо к данным, то и к паролям тоже : дверь широко открыта перед
злоумышленниками. Вы им отдали ключ от своей квартиры.
Представьте, что циркулирующие данные конфиденциальны... И если вы являетесь
сисадмином - боюсь вас попросят поискать работу в другом месте.
Такие утилиты как rsh, rcp, rlogin тоже весьма опасны - они не шифруют данные.
ssh является заменой для rlogin или rsh, а входящая в состав утилита scp -
замена для rcp. Следовательно они вам больше не нужны, более того - не надо
их использовать.
Как установить ssh, как сгенерировать ключи... - это не темы данной заметки.
Всю необходимую информацию по данным вопросам вы найдете в загруженных архивах
или посетив the Linux Documentation Project,
напрмер.
Так как использование компьютера в настоящее время почти всегда сводится к
передаче данных - использование ssh обязательно... но окончательный выбор за
вами. Кроме того функций у ssh гораздо больше, чем просто замена telnet и т.д.
Можно использовать для разных приложений, для разных ОС. Кроме шифрования,
данные можно сжимать, использовать для таких протоколов как pop, ftp, http...
также как для шифрования, так и для сжатия. Очень полезно,
если вы сисадмин, пользоваться для связи из дома с работой и наоборот.
Так как это приложение является клиент/серверным - естественно один компьютер
должен выполнять роль сервера, а другой клиента.
Почему я заостряю внимание на этом - для некоторых ОС нет бесплатных серверов.
Например такими являются Mac OS и Windos. Рассмотрим несколько реальных примеров.
Если вы не слышали о VNC - вы пропустили одно из величайших приложений. Смотрите
подробнее здесь.
Посетив вебсайт VNC (
http://www.uk.research.att.com/vnc/docs.html) вы найдете множество
документации о предмете обсуждения. Например как использовать VNC в связке с ssh,
обращаясь к Unix ssh серверу клиентом ssh из-под Windos. Ну ладно, я не буду
переписывать работу Frank Stajano, тем более, что это получилось у него
хорошо.
Итак, посмотрим как это все работает.
Для начала берем бесплатного клиента для Windos. Для нашего примера возьмем
Teraterm Pro (Ttssh) на http://hp.vector.co.jp/authors/VA002416/teraterm.html.
Он называется Ttssf - для использования во Франции. (Времена меняются, но не
забывайте, что не все страны еще приняли шифрование. Посмотрите здесь -
http://www2.epic.org/reports/crypto2000/countries.html,
для оценки ситуации в вашей стране.)
Далее запускаем на Unix компьютере ssh сервер и vncserver и обращаемся с другого
компьютера (например NT) к серверу ssh, используя Ttssh, получая таким
образом зашифрованное соединение. Но это не значит, что вы можете использовать
зашифрованный vncviewer протокол с этого компьютера. Для этого надо сказать
ssh сменить(forward) порт.
Дадим Unix компьютеру, с работающим vncserver, использующим порт 5901,
имя "bandit" (1-номер дисплея, по умочанию Х дисплей на этом компьютере имеет
номер 0). Для обычного использования применяем команду "vncviewer bandit:1" -
это работает, но соединение не зашифровано. Вместо этого набираем команду
"/ssh-L5902:bandit:5901" (без пробелов) в NT "shell" (DOS интерфейс...).
Вы создали локальный порт 5902. Теперь команда "vncviewer localhost:2" -
создаст зашифрованное соединение. Также это можно сделать не используя
командную строку - у Ttssh есть графический интерфейс. Добавим, что этот
синтаксис относится только к Ttssh. Эта команда для использования с Unix
компьютера выглядит следующим образом - "ssh -L 5902:bandit:5901 bandit".
Это конечно же самый простой пример - вы можете использовать вещи и посложнее.
Читайте документацию на сайте VNC, особенно от Frank Stajano.
MySQL - наверное наиболее используемый
сервер баз данных, особенно в интернет. Повторю еще раз - тема безопасности
MySQL находится за пределами данной заметки. А вот рассказ о шифровании данных
между MySQL сервером и клиентом здесь будет иметь место. Работа SSH в этом
случае приблизительно схожа с работой в случае с VNC.
Предположим, что наша ситуация связана с интранет - MySQL сервер на компьютере
с ОС Linux, а клиенты на NT(Ttssh).
MySQL использует порт номер 3306 по умолчанию.
Команда для NT выглядит следующим образом - "/ssh-L3306:localhost:3306", для
Unix - "ssh -L 3306:localhost:3306". Использование "localhost" позволяет
посылать данные через loopback интерфейс вместо host интерфейса.
Удаленная команда будет выглядеть так: для NT - "/ssh-R3306:bandit:3306", а для
Unix - "ssh -R3306:bandit:3306".
Это касается только самого соединения. Для подключения к самому MySQL серверу
надо указать его хост и имя пользователя. Изучите подробнее ssh маны на предмет
опции "-l".
И конечно же вы должны установить MySQL клиента на NT.
Если у вас нет - используйте ODBC приложение(например Sybase). Используйте
драйвер ODBC для подключения к MySQL. Теперь можно использовать соединение с
localhost вместо MySQL server host для доступа к серверу. Теперь передаваемые
данные зашифрованы. Проверьте с помощью snoop или tcpdump.
Это пример для использования в локальной сети. Если хотите использовать в WAN -
будет немного сложнее, например в случае если вы находитесь за брандмауэром.
Но в любом случае это применимо для использования из дома, например, но не
используйте это решение для доступа к базам данных на вебсайте. Используйте
что-нибудь более продвинутое - VPN например, но это только идея.
В любом случае этого не достаточно для передачи таких данных как номера
кредитных карт. И, кстати, кто поверит чьим-то словам о наличии очень
безопасного сервера для передачи таких данных без всякого риска? Лично я -
нет!!!
Каким образом выглядит наша тема в случае эмуляции терминала?
Допустим вы используете старое приложение, написанное на Коболе, на Unix
сервре. Клиентами снова являются NT компьютеры. Для соединения необходимо
использовать более продвинутый эмулятор, чем vt100, vt220 или vt320 для
правильного отображения пользовательского интерфейса. Использование vt100 и vt220
в 8-ми битном режиме не дает нужного результата.
После долгих экспериментов - вы останавливаетесь на "ibm3151", который
выдает лучший результат. So far so good !
Но приложение то старое и как следствие полное отсутствие решений в вопросах
безопасности. Соединение идет через telnet ! Но на самом деле передаваемые
данные конфиденциальны и поэтому их надо защитить. Что же делать? Необходимо
найти способ их шифрования, и конечно же опять будем использовать ssh.
Повторю еще раз - Существует Более Одного Способа Сделать Это...
Или вы поменяете порт telnet на 22 (ssh) или порт эмулятора. Боюсь обычный
пользователь не сможет изменить telnet порт на сервере(по умолчанию - 23) -
необходимо иметь привилегию root для этого (по крайней мере я надеюсь !).
Что касается самого приложения - оно используется одновременно несколькими
пользователями, поэтому для каждого соединения должен быть отдельный порт
(10 пользователей = 10 портов).
Итак, во-первых на сервере приложения необходимо запустить ssh сервер на 22
порту.
С NT компьютера соединяемся с сервером приложений, используя Ttssh или
"командную строку". Таким образом снова устанавливаем зашифрованное соединение
между клиентом и сервером. В опциях Ttssh вы перенаправляете (forward)
локальный порт 50000 на 23 (telnet) на удаленном сервере. В командной строке
это будет выглядеть следующим образом - "ssh-L50000:servername:23". Теперь
сообщаем эмулятору, что необходимо работать по 50000 вместо 23. Данные теперь
будут зашифрованы. Проверьте с помощью snoop или tcpdump.
То же самое необходимо сделать для каждого клиента, использующего данное
приложение. Например можно использовать порты с номерами 50001, 50002 и т.д.
Вы вероятно хотите спросить почему такие большие номера?
Ответ будет - по многим причинам!
А если серьезно - смысл в том, что вы можете "манипулировать" портами с такими
большими номерами не имея привилегии root.
Еще одна причина - выбранный порт не должен быть занят обоими компьютерами.
Например : сервер под управлением Solaris может использовать порты с
большими номерами, в зависимости от используемых приложений. Поэтому порты
с номерами 50000 и выше должны работать. В любом случае - всегда проверяйте
занят порт или нет перед его использованием.
Что касается автоматизации данного процесса - выбор за вами. Вы конечно же не
будете требовать проделывать все эти манипуляции пользователями, не так ли?
Оставим это упражнение для читателей...
Рассмотренные примеры показывают множество применений ssh. Все зависит от ваших
потребностей. Но смысл всегда один и тот же - перенаправление (forwarding.)
портов.
Тем не менее будьте внимательны, используя сложные решения. Например - перенаправление
через третий компьютер оставит данные незашифрованными где-то в середине
соединения.
Еще один недостаток касается использования Windos клиентов Ttssh. Соединение
основано на использовании IP адресов, как в случае удаленных команд, что
позволяет проводить spoofing attacks. Следовательно - используйте
другие приложения наряду с ssh, напрмер - tcpwrappers.
Внимательно читайте документацию по ssh - она многому вас научит.
Вопросы безопасности касаются всех, не так ли! ssh является единственным
инструментом безопасности, который вы должны использовать каждый день, при
условии, что вы понимаете его назначение - инструмент для шифрования или сжатия.
Сам по себе данный инструмент достаточно бесполезен - так как не закрывает
множества "holes" компьютера или сети. Безопасность их - огромный труд и
инструменты не могут решить всех проблем, даже если они очень хороши.
Перечислим основы безопасности - убирайте все неиспользуемые сервисы, проверяйте
SUID root программы, запретите использование всех "подозрительных" программ...
Много необходимо сделать и все равно этого всегда будет недостаточно. Можно
установить всевозможные инструменты безопасности, но они окажутся бесполезными
если останется хотя бы одна лазейка. Конечно это предмет другого разговора,
но не забывайте об этом.
Возвращаясь к ssh - еще раз хотелось бы повторить - это приложение без
которого вы не можете работать при условии использования его по назначению.
Опять повторюсь - используйте его с passphrases, RSA keys, но не с паролями.
Проверьте права доступа файлов в каталоге .ssh и конечно самого каталога.
И не забывайте использовать wrappers !
Помните большинство существующих протоколов можно направить через ssh.
Это еще один небольшой шаг к повышению уровня безопасности.
Есть еще одно применение ssh, о котором мы не сказали - X session forwarding,
по причине использования X на разных ОС. Конечно и в данном применении ssh
улучшит безопасность.
Для более продвинутого использования - ssh не будет достаточным, как мы уже
говорили выше обратите внимание на такие инструменты как VPNs или VTun.
И наконец - изучите ситуацию с вопросами шифрования в вашей стране. Можно быть
привлеченным к ответственности по подозрению в шпионаже за использование
такого программного обеспечения как ssh.
В любом случае - мы живем в великие времена !
|
Webpages maintained by the LinuxFocus Editor team
© Georges Tarbouriech, FDL LinuxFocus.org Click here to report a fault or send a comment to LinuxFocus |
Translation information:
|
2001-04-28, generated by lfparser version 2.8