Невинные SSH'алости в сетях
Andrushock
Xakep, номер #057, стр. 057-078-1
(andrushock@real.xakep.ru)
Взлом, защита и фичи Secure Shell
Можно часами доводить до совершенства правила непроницаемого брандмауэра, ежедневно обновлять антивирусные базы, раньше всех залатывать ошибки в используемом программном обеспечении, до бесконечности повышать безопасность ядра и IP-стека, но все эти усилия будут напрасны, если по-прежнему использовать для регистрации на удаленных узлах старые добрые telnet и r-команды.
<Экскурс в историю>
Несмотря на такие серьезные недостатки, как отсутствие проверок на целостность сеансов связи и передача данных, в том числе имен и паролей пользователей, в явном виде, протокол Telnet в течение многих лет был стандартом де-факто для регистрации и выполнения команд на удаленных узлах. Благодаря своей гибкости, расширяемости и качественной реализации обработки подключений по протоколу Х11, небезопасный Telnet считался чрезвычайно мощным инструментом.
Но времена меняются, и отношение к этому протоколу также изменилось. В век абсолютной приватности и коммерческого использования интернета, часто возникает необходимость обеспечить конфиденциальность передаваемых данных по ненадежным каналам связи. Поэтому в качестве полной замены программам rcp, rlogin, rsh и telnet финским программистом Тату Илененом был предложен пакет SSH (Secure Shell) с альтернативными командами. Строгая криптографическая аутентификация и шифрование любых соединений между удаленными хостами - эти компоненты стали главными козырями нового защищенного командного интерпретатора.
Однако сразу после разработки протокола SSH2 бесплатно распространяемый пакет трансформировался в коммерческий программный продукт, использование которого без лицензии стало возможным только для персонального использования, либо в образовательных целях. Но и это еще полбеды. Так как пакет SSH содержит технологию шифрования, в которой используются ключи длиной более 40 бит, его экспортирование из США является уголовно наказуемым преступлением.
Естественно, такое положение дел многих не устраивало, в том числе и разработчиков свободно распространяемых операционных систем. В 2000 году команда OpenBSD взяла инициативу в свои руки и, произведя аудит исходного кода и внеся незначительные изменения в его структуру, выпустила свободную реализацию SSH под названием OpenSSH.
<Фичи OpenSSH>
Какими же возможностями обладает OpenSSH? Неужели его стоит использовать только из-за доступности сырцов? Способность производить аутентификацию пользователей с помощью протоколов RSA и DSA, имеющих в своей основе два криптографических ключа (секретный и публичный) для организации защищенных соединений без необходимости непосредственного ввода пароля; поддержка специальных алгоритмов шифрования (DES, 3DES, Blowfish для первой версии протокола и AES-128, AES-192, AES-256, Blowfish, CAST-128, ArcFour для второй); обеспечение контроля целостности сеанса связи с помощью CRC32 в протоколе SSH1 и HMAC-SHA1/HMAC-MD5/HMAC-RIPEMD в SSH2; защита от IP, DNS и routing спуфинга; возможность создания криптованных туннелей посредством перенаправления TCP-портов локального и удаленного узлов; автоматическая компрессия передаваемых данных, в том числе и сеансов по протоколу X11 (сжатие "на лету" происходит точно таким же алгоритмом, какой используется в архиваторе gzip); прекрасное взаимодействие с оконной системой X-Window, плюс прибавь к этому прозрачность работы, так как процедура аутентификации и шифрование сеанса выполняются незаметно для пользователя, и ты получишь реальную замену архаичным telnet и r-командам, а также действительно серьезного оппонента коммерческому варианту SSH.