LINUX.ORG.RU
ФорумTalks

Вот, попробовал написать статью по SSH


0

0

На основе публикаций в Интернет написал коротенькую статью по SSH. Покритикуйте - что упустил, что не так написал?

----
Как перезагрузить компьютер, находясь за пару тысяч километров от него или выполнить другие действия удаленно и безопасно? Ответ на эти вопросы – протокол SSH.

SSH (Secure Shell) – это сетевой протокол, используемый для удаленного управления компьютером и для передачи файлов. SSH похож по функциональности на протоколы telnet и rlogin, но, в отличие от них, шифрует весь трафик, включая и передаваемые пароли.

SSH позволяет передавать через безопасный канал любой другой сетевой протокол, таким образом, можно не только удаленно работать на компьютере, но и передавать по шифрованному каналу звуковой поток или видео (например, с веб-камеры). Также, SSH может использовать сжатие передаваемых данных для последующей их шифрации.

Большинство хостинг-провайдеров за определенную плату предоставляют клиентам доступ к их домашнему каталогу по SSH. Это очень удобно как для работы в командной строке, так и для удаленного запуска графических приложений. Через SSH можно работать и в локальной сети. Если вам лень ходить к серверам – администрируйте их удаленно, используя любой SSH-клиент.

SSH-клиенты и SSH-сервера написаны под большинство платформ: Windows, Linux, Mac OS X, Java, Solaris, Symbian OS, Windows Mobile и даже Palm OS.

Первая версия протокола, SSH-1, была разработана в 1995 году исследователем Tatu Ylönen из Технологического университета Хельсинки, Финляндия. SSH-1 был написан для обеспечения большей конфиденциальности, чем протоколы rlogin, telnet и rsh. В 1996 году была разработана более безопасная версия протокола, SSH-2, уже несовместимая с SSH-1. Протокол приобрел еще большую популярность и к 2000 году его использовало уже порядка двух миллионов пользователей. В 2006 году протокол был утвержден рабочей группой IETF в качестве Интернет-стандарта.

Однако, до сих пор в некоторых странах (Франция, Россия, Ирак и Пакистан) требуется специальное разрешение в соответствующих структурах для использования определенных методов шифрования, включая SSH. См. закон Российской Федерации "О федеральных органах правительственной связи и информации».

Распространены две реализации SSH: коммерческая (закрытая) и свободная (открытая). Свободная реализация называется OpenSSH. К 2006 году 80% компьютеров Интернет использовало именно OpenSSH. Коммерческая реализация разрабатывается организацией SSH Inc., http://ssh.com/ - закрытая реализация, бесплатная для некоммерческого использования. Свободная и коммерческая реализации SSH содержат практически одинаковый набор команд.

Существуют две версии протокола SSH: SSH-1 и SSH-2. В первой версии протокола есть существенные недостатки, поэтому в настоящее время SSH-1 практически нигде не применяется ... Наверное, вы помните знаменитый эпизод из фильма «Матрица-2: Перезагрузка», в котором Тринити использует эксплоит SSHNuke для взлома городской электростанции? Вначале она нашла уязвимый SSH-сервер, просканировав сеть программой Nmap. Затем, через «дыру» «SSH1 CRC2», она получила максимальные права доступа к этому серверу.

Многие взломщики сканируют сеть в поиске открытого порта SSH, особенно – адреса хостинг-провайдеров. Так, сразу после запуска своего выделенного сервера, в течение первых двух часов, я получил две попытки подбора пароля суперпользователя по ssh. Причем, для никому неизвестного сервера. Так что, в целях безопасности – запрещайте доступ по ssh для суперпользователя. Обычно злоумышленники подбирают именно пароль суперпользователя [6]. См. ниже рекомендации по безопасности использования SSH.

Протокол SSH-2 устойчив в атакам «man-in-middle», в отличие от протокола telnet. То есть, прослушивание трафика, «снифинг», ничего не дает злоумышленнику. Протокол SSH-2 также устойчив к атакам путем присоединения посредине (session hijacking) и обманом сервера имен (DNS spoffing).

Интересно заметить, что некоторые провайдеры до сих пор используют SSH-1. Например, российский хостигновый провайдер ValueHost, http://valuehost.ru/.

Далее по тексту, мы будем иметь ввиду под SSH вторую версию протокола, SSH-2.
----

★★★★★

Re: Вот, попробовал написать статью по SSH

SSH-сервера
Debian GNU/Linux: dropbear, lsh-server, openssh-server, ssh
MS Windows: freeSSHd, OpenSSH sshd, WinSSHD, ProSHHD, Dropbear SSH Server
SSH-клиенты и оболочки
Debian GNU/Linux: kdessh, lsh-client, openssh-client, putty, ssh
MS Windows: PuTTY, SecureCRT, ShellGuard, Axessh, ZOC, SSHWindows, ProSSHD
Mac OS: NiftyTelnet SSH
Symbian OS: PuTTY
Java: MindTerm, AppGate Security Server

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

Клиент используется для входа на удаленную машину и выполнения команд.

Предположим, что сервер у нас настроен и работает. Для подключения клиента требуется сгенерировать пару из открытого и закрытого ключей [3]. Если Вы используете PuTTY под Windows – это делается утилитой p
uttygen.exe. Под Linux обычно используется команда puttygen (для PuTTY) или ssh-keygen (для OpenSSH). Далее указываем клиенту – где находится закрытый ключ, и соединяемся с вводом пароля. Возможно также беспароль
ное соединение, а чем упомянуто ниже.

Рекомендации по безопасности использования SSH:
1.Запрещение удаленного root-доступа.
2.Запрещение подключения с пустым паролем или отключение входа по паролю.
3.Выбор нестандартного порта для SSH-сервера.
4.Использование длинных SSH2 RSA-ключей (2048 бит и более). По состоянию на 2006 год система шифрования на основе RSA считалась надёжной, если длина ключа не менее 1024 бит. *) (см. КОММЕНТАРИЙ В КОНЦЕ ТЕКСТА)
5.Ограничение списка IP-адресов, с которых разрешен доступ. Например, настройкой файрвола.
6.Запрещение доступа с некоторых, потенциально опасных адресов.
7.Отказ от использования распространенных или широко известных системных логинов для доступа по SSH.
8.Регулярный просмотр сообщений об ошибках аутентификации.
9.Установка детекторов атак (IDS, Intrusion Detection System).
10.Использование ловушек, подделывающих SSH-сервис (honeypots) [6].

Как подключиться к удаленному серверу из Linux или FreeBSD? Команда подключения к локальному SSH-серверу из командной строки для пользователя pacify (сервер слушает нестандартный порт 30000):

$ ssh -p30000 pacify@127.0.0.1

Под Windows можно воспользоваться программой PuTTY. Она имеет простой графический интерфейс, через который удобно настраивать подключения. Скриншот окна подключения PuTTY: ...

Как видно на рисунке, здесь мы задаем адрес 127.0.0.1 и порт 23000 для подключения по SSH. На вкладке SSH\Auth надо выбрать закрытый ключ, который будет использоваться PuTTY.

К удаленному компьютеру можно подключиться по SSH, не вводя пароль, а используя открытый ключ. Разумеется, открытый ключ лучше передавать на сервер по защищенному каналу. Более подробно беспарольная аутен
тификация с использованием открытого ключа описана в статье [3].

Генерация пары SSH-2 RSA-ключей длиной 4096 бита программой puttygen под Linux/UNIX надо выполнить команду:
$ puttygen -t rsa -b 4096 -o sample

Под Windows у этой программы (puttygen.exe) есть пользовательский интерфейс.

Если Вам нужно реализовать действия, не выполняемые стандартными SSH-клиентами – Вы можете написать свой SSH-сервер или SSH-клиента. Для их быстрого написания я рекомендую использовать язык Python и модул
и python-paramiko, либо python-twisted-conch. Простейший SSH-сервер получается размером в сотню строчек.

Ссылки
1. Сравнение SSH-клиентов: http://en.wikipedia.org/wiki/Comparison_of_SSH_clients
2. PuTTY под Windows: http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html
3. Статья «Работаем с PuTTY из Windows»: http://baybox.narod.ru/linux/putty.html
4. Статья «Теория и практика использования SSH»: http://www.opennet.ru/base/sec/ssh_intro.txt.html
5. Статья «SSH в Windows»: http://www.infocity.kiev.ua/hack/content/hack164.phtml
6. Статья «Analyzing Malicious SSH Login Attempts»: http://www.securityfocus.com/infocus/1876
(перевод статьи – на hackzona.ru)

Техническая информация о протоколе
SSH – это протокол прикладного уровня (или уровня приложений). SSH-сервер обычно слушает соединения на TCP-порту номер 22.
Спецификация протокола SSH-2 содержится в RFC 4251.
Для аутентификации сервера SSH использует алгоритм Diffie-Hellman'а. Для аутентификации клиента – шифрование с открытым ключом (оно сравнительно медленное). Для шифрования передаваемых данных – симметричн
ое шифрование (оно более быстрое). Среди алгоритмов шифрования с открытым ключом чаще всего используются RSA и DSA. Из симметричных алгоритмов – AES, Blowfish и 3DES. Целостность переданных данных проверяется с п
омощью CRC32 в SSH1 или HMAC-SHA1/HMAC-MD5 в SSH2.
Для сжатия шифруемых данных используется алгоритм LempelZiv (LZ77), обеспечивает такую же компрессию, что и архиватор zip.

* Безопасность алгоритма RSA (криптосистемы Ривеста-Шамира-Адельмана) основана на трудности задачи разложения больших чисел на множители. Это означает, что с появлением мощных компьютеров, основанных на к
вантовых вычислениях, не составит большого труда взломать RSA. Используя законы квантовой механики, можно легко решать задачу факторизации чисел.

pacify ★★★★★ ()

Re: Вот, попробовал написать статью по SSH

Напоминает восторженный стиль рекламных агентов, расхваливающих свои убер пылесосы-хренорезки кувалды.

anonymous ()

Re: Вот, попробовал написать статью по SSH

А ты правда писал эту статью по ssh? Помоему писать статью в текстовом редакторе локально гораздо удобнее

Orlangoor ★★★★★ ()

Re: Вот, попробовал написать статью по SSH

Хорошая статья!

anonymous ()
Ответ на: Re: Вот, попробовал написать статью по SSH от Orlangoor

Re: Вот, попробовал написать статью по SSH

>А ты правда писал эту статью по ssh? Помоему писать статью в текстовом редакторе локально гораздо удобнее

Почему? В некоторых случаех наоборот. Если, конечно, канал не дохлый.

madcore ★★★★★ ()

Re: Вот, попробовал написать статью по SSH

Почему бы в раздел "Документация" такое не постить?

gnomino ()
Ответ на: Re: Вот, попробовал написать статью по SSH от gnomino

Re: Вот, попробовал написать статью по SSH

статья вроде нормальная, автору спасибо, пускай выкладывает куда-то, может етм кому нужна инфа по ssh нагуглят.

, только первое предложение так и хочется прочитать как:

Как полностью выключить production сервер, находясь за пару тысяч километров от него (причём поздно ночью)? Ответ на эти вопросы – протокол SSH и команда shutdown -h. ^)

Den0k ()

Re: Вот, попробовал написать статью по SSH

http://www.opennet.ru/announce_art.shtml

(Когда постишь в WWW большие тексты, делай им строки по 70-80 символов (в настройках сообщения на ЛОРе нужно также выбрать «User Line Breaks»)).

Sphinx ★★☆☆ ()

Re: Вот, попробовал написать статью по SSH

Изначально статья писалась для компьютерного журнала за 500 руб. Но в редакцию решил не сдавать, так как зам.редактора упомянул что-то про корректуру статьи Большим Братом. Короче, мне проще выложить ее в инете, бесплатно, а не гемороиться с редакцией. Да и журнал тот читают в основном подростки-геймеры.

pacify ★★★★★ ()
Ответ на: Re: Вот, попробовал написать статью по SSH от INFOMAN

Re: Вот, попробовал написать статью по SSH

>Это когда лень вим на оффтопик ставить?

И это тоже. Или когда сидишь на бездисковой машине или просто слишком слабой.

madcore ★★★★★ ()

Re: Вот, попробовал написать статью по SSH

> делай им строки по 70-80 символов

Много на ЛОР заходят из текстовых браузеров, запущенных в консоли без фреймбуфера?

INFOMAN ★★★★★ ()
Ответ на: Re: Вот, попробовал написать статью по SSH от INFOMAN

Re: Вот, попробовал написать статью по SSH

Причём здесь текстовые браузеры?

Такие длинные строки — просто неуважение к глазам читателя. Не существует книг и иной порядочной литературы, где строки такой длины, потому что это — плохой дизайн.

Sphinx ★★☆☆ ()

Re: Вот, попробовал написать статью по SSH

>>статья писалась для компьютерного журнала за 500 руб. Но в редакцию решил не сдавать

Правильно сделал. Оригинальный текст меньше чем за 10$ за 1000 знаков отдавать нельзя. В статье 9000 знаков - итого как минимум 2000 руб.
Редактор - тупая и жадная сволочь. Разбираться с Большим Братом - его задача.

anonymous ()

Re: Вот, попробовал написать статью по SSH

> Короче, мне проще выложить ее в инете, бесплатно, а не гемороиться с редакцией.

Почему не opennet? Там такие статьи смотрятся органичнее, чем на ЛОРе, что-ли...

eugine_kosenko ★★★ ()

Re: Вот, попробовал написать статью по SSH

А как будут выглядеть такие искусственные переносы на экране, например, КПК, где длина строки явно меньше 80 символов?

INFOMAN ★★★★★ ()

Re: Вот, попробовал написать статью по SSH

Найди статью "ПереSSHептывание", если чего не так, поправь, дополни. Задаром велосипед изобретать не надо.

ansky ★★★★★ ()

Re: Вот, попробовал написать статью по SSH

>>Найди статью

Легко сказать! Все ссылки в google ведут на linux-way.org, который показывает дефолтную страницу Plesk-а.

Проще заново написать, чем в этом окаменевшем гуано рыться.

anonymous ()
Ответ на: Re: Вот, попробовал написать статью по SSH от eugine_kosenko

Re: Вот, попробовал написать статью по SSH

Если подтвердят на opennet - будет и там.
Просто мне казалось, что моя статья невысокого уровня - вот и не публиковал.

pacify ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.