Movatterモバイル変換


[0]ホーム

URL:


Перейти до вмісту
Вікіпедія
Пошук

SSH

Очікує на перевірку
Матеріал з Вікіпедії — вільної енциклопедії.
(Перенаправлено зSsh)

Статус версії сторінки

На цій сторінці показано неперевірені зміни

SSH
Типінтернет-сервісd і мережевий протокол[d] Редагувати інформацію у Вікіданих
АвторТату Ілонен Редагувати інформацію у Вікіданих
ЛіцензіяGNU Lesser General Public License Редагувати інформацію у Вікіданих
МодельTCP/IP (RFC 1122)
Прикладний рівень
Транспортний рівень
Мережевий рівень
Канальний рівень
Протоколи безпеки
Інтернет
Керування ключами
Рівень застосувань
Система доменних імен
Рівень Інтернет

Secure Shell,SSH (англ.Secure Shell — «безпечна оболонка»[1]) —мережевий протокол прикладного рівня, що дозволяє проводитивіддалене управліннякомп'ютером і тунелюванняTCP-з'єднань (наприклад, для передачі файлів). Схожий за функціональністю з протоколомTelnet іrlogin, проте шифрує весь трафік, включаючи процес аутентифікацій та передачу паролів та секретів. SSH цеклієнт-серверний протокол. Програмне забезпечення яке реалізує як клієнтську, так і серверну частину реалізовано для всіх сучасних операційних систем. Для UNIX-like операційних систем протокол SSH вважається стандартом віддаленого адміністрування.

Протокол SSH окрім основного призначення — безпечного віддаленого доступу до комп'ютера та передачі файлів, володіє потужними можливостями тунелювання, через зашифрований канал SSH можна передавати інші дані, інкапсулюючи їх у TCP-з'єднання. Основні можливості цепроксування локальних та віддалених TCP-портів (Port Forwarding), тунелювання дисплею для графічних застосунків при використанніX Window System (X Tunnelling). Можливо навіть передавати звук через шифрований канал, втім SSH може використовуватися для тунелювання будь-якого іншогомережевого протоколу, який може бути представлений у вигляді TCP-з'єднання.

Стандарти та програмні реалізації

[ред. |ред. код]

Версія 1

[ред. |ред. код]

Широкий розвитоксніферів створив проблему утиліт rlogin, telnet і rsh у зв'язку з тим що протоколтелнет прозорий, що вимагало вирішення проблеми безпечного використання програмного забезпечення для віддаленого адміністрування.

Першу версію протоколу, SSH, розробив 1995 року дослідникТату Ілонен з Технологічного університетуГельсінкі,Фінляндія. SSH був написаний для забезпечення більшої конфіденційності ніж telnet. Для свого проєкту Ілонен запросив у IANA tcp-порт 22[2], тому що той знаходиться між 21 для ftp та 23 для telnet.

Перша версія вийшла в реліз в липні 1996 як безкоштовне програмне забезпечення, та швидко отримала популярність. У грудні 1995 Ілонен заснувавSSH Communication Security (SCS) для розробки SSH. Оригінальна перша версія використовувалавільне програмне забезпечення, наприклад GNU libgmp, проте SSH Communication Security замінив такі бібліотеки щоб розробляти власницьке програмне забезпечення.

Протокол набув ще більшої популярності, і до 2000 року у нього було близько двох мільйонів користувачів.

Версія 2

[ред. |ред. код]

1996 року SCS розробив версію протоколу SSH-2, яка містить нові алгоритми, та вирішувала деякі архітектурні проблеми першої версії SSH-1, проте SSH-2 була не сумісна з версією SSH-1. Ілонен описує та пропонує SSH-1 інженерній групі з питань інтернету (IETF), а в 1996 SCS пропонує SSH2. У відповідь IETF створює робочу групу SECSH.

У 1998 році SCS випускає програмний продукт SSH Secure Shell (SSH2) на базі протоколу SSH-2, проте перехід відбувається повільно тому що користувачі не розуміють чим він краще, а також деяким користувачам заважають проприєтарні умови ліцензування програмного продукту. Проте коли проектOpenBSD реалізує версію протоколу SSH2 — OpenSSH під вільною ліцензією, то він портується на іншіUNIX-подібні операційні системи та швидко завойовує популярність.[3]

У 2006 році протокол SSH2 був затверджений робочою групоюIETF як Інтернет-стандарт[4]. Ця версія не сумісна з SSH-1, але має покращену безпеку та нові можливості. Дизайн протокол почав використовувати поліпшену багатошарову архітектуру, в якій протокол розділений на окремі рівні, подібно до протоколу ISO/OSI[5]. Підтримуються нові механізми обміну ключами запротоколом Діффі-Геллмана, покращенацілісність, завдякиMAC-підписам. Нові можливості SSH-2 передбачають можливість отримувати декілька віртуальних терміналів на одному SSH з'єднанні[6].

Версія 1.99

[ред. |ред. код]

У січні 2006 року, вже після затвердження та впровадження SSH-2 версії 2.1 був створенийRFC 4253. Його мета забезпеченнязворотної сумісності старим клієнтам для роботи з сервером, що підтримує протокол SSH-2, в такому випадку сервер себе позначає що версія протоколу 1.99.[7]

OpenSSH і OSSH

[ред. |ред. код]

У 1999 році розробники, бажали повернутися до старої 1.2.12 реалізовуючи оригінальну SSH програму, яка була останньою випущена підз відкритим вихідним кодом ліцензію. OSSH Björn Grönvall згодом почав розвиватися з цього коду.

Відомі вразливості

[ред. |ред. код]

У 1998 році було описано вразливість SSH 1.5. Вона дозволяла несанкціоновану вставку даних у зашифрованому потоці SSH через недостатній захист даних кодомCRC-32(інші мови), що використовується в даній версії протоколу.[8][9].

У січні 2001 року була виявлена ​​уразливість, яка дозволяє зловмисникові змінювати останній блокIDEA. Зашифровані сесії[10] У тому ж місяці, інша уразливість була виявлена, що дозволяло шкідлививому серверу пересилання автентифікації клієнта на інший сервер.[11]

Так як SSH-1 притаманні недоліки дизайну, які роблять його вразливим, в даний час він вважається застарілим і його слід уникати, відключивши повернення до SSH-1. Більшість сучасних серверів і клієнтів підтримують SSH-2.

У листопаді 2008 року теоретичну вразливість була виявлена ​​для всіх версій SSH, який дозволив відновлення до 32 біт даних з блоку, зашифрованого за допомогою тодішнього стандартного режиму шифрування за умовчанням[12].

Сервери

[ред. |ред. код]
BSD
OpenSSH
Linux
dropbear, lsh-server, openssh-server, ssh
Windows
freeSSHd, copssh, WinSSHD, KpyM Telnet / SSH Server, MobaSSH, OpenSSH через Cygwin, DenWer

Клієнти та оболонки

[ред. |ред. код]

Використання

[ред. |ред. код]
Цей розділпотребуєдоповнення.

Приклади

[ред. |ред. код]

Команда підключення до локального SSH-сервера з командного рядка GNU/Linux або FreeBSD для користувача user (сервер прослуховує нестандартний порт 30000):

$ ssh -p 30000 user@127.0.0.1

Генерація пари ключів (в UNIX-подібних ОС) здійснюється командою

$ssh-keygen

Генерація пари SSH-2 RSA-ключів довжиною 4096 біта програмою puttygen під UNIX-подібними ОС:

$ puttygen -t rsa -b 4096 -o sample

Деякі клієнти, наприклад, PuTTY, мають і графічний інтерфейс користувача.

Для використання SSH в Python існують такі модулі, як python-paramiko і python-twisted-conch.

Передача файлів з використанням SSH

[ред. |ред. код]

Є кілька механізмів передачі файлів за допомогою захищених протоколів Shell.

  • Secure Copy (SCP), реалізаціяRCP через проткол SSH
  • Rsync — прикладний протокол та програмне забезпечення для копіювання файлів, з гнучкою системою синхронізації файлів та каталогів. Може використовувати SSH в якості аутентифікації та транспортного протоколу.
  • SSH File Transfer Protocol (SFTP) — безпечна альтернативаFTP (не плутати зFTP через SSH)
  • fish — програма яка реалізує передачу файлів за допомогою оболонки через SSH (англ.Files transferred overshell protocol). Використовується вMidnight Commander та інших.

SSH-тунелювання

[ред. |ред. код]

SSH-тунель — це тунель, який створюється за допомогою SSH-з'єднання і використовується для шифрування тунельованих даних. Використовується для того, щоб убезпечити передачу даних в Інтернеті (аналогічне призначення маєIPsec). Особливість полягає в тому, що незашифрований трафік будь-якого протоколу шифрується на одному кінці SSH-з'єднання і розшифровується на іншому.

Практична реалізація може виконуватися декількома способами:

  • Створенням Socks-проксі для програм, які не вміють працювати через SSH-тунель, але можуть працювати через Socks-проксі
  • Використанням додатків, які вміють працювати через SSH-тунель.
  • Створенням VPN-тунелю, підходить практично для будь-яких додатків.

Якщо програма працює з одним певним сервером, можна налаштувати SSH-клієнт таким чином, щоб він пропускав через SSH-тунель TCP-з'єднання, що приходять на певний TCP-порт машини, на якій запущений SSH-клієнт. Наприклад, клієнти Jabber підключаються по замовчуванню на порт 443. Тоді, щоб налаштувати підключення до сервера Jabber через SSH-тунель, SSH-клієнт налаштовується на перенаправлення підключень з будь-якого порту локальної машини (наприклад, з порту 4430) на віддалений сервер (наприклад, jabber.example.com і порт 443):

$ ssh -L 4430:jabber.example.com:443 somehost

У даному випадку Jabber-клієнт налаштовується на підключення до порту 4430 сервера localhost (якщо ssh-клієнт запущений на тій же машині що і Jabber-клієнт).

Для створення ssh-тунелю необхідна машина з запущеним ssh-сервером і доступом до jabber.example.com. Така конфігурація може використовуватися у випадку, якщо з локальної машини доступ до jabber.example.com закритий фаєрволом, але є доступ до деякого ssh-серверу, у якого обмеження доступу в Інтернет відсутні.

Безпека застосування

[ред. |ред. код]

Поради щодо безпеки використання SSH:

  • Заборона віддаленого root-доступу.
  • Заборона підключення з порожнім паролем або відключення входу по паролю.
  • Вибір нестандартного порту для SSH-сервера.
  • Використання довгих SSH2 RSA-ключів (2048 біт і більше). Системи шифрування на основі RSA вважаються надійними, якщо довжина ключа не менше 1024 біт.
  • Обмеження списку IP-адрес, з яких дозволений доступ (наприклад, настроюванням фаєрвола).
  • Заборона доступу з деяких потенційно небезпечних адрес.
  • Відмова від використання поширених або широко відомих системних логінів для доступу по SSH.
  • Регулярний перегляд повідомлень про помилки автентифікації.
  • Установка систем виявлення вторгнень (IDS — Intrusion Detection System).
  • Використання пасток, які підроблюють SSH-сервіс (honeypots).

Архітектура

[ред. |ред. код]
Diagram of the SSH-2 binary packet.

SSH-2 протокол має внутрішню архітектуру (визначено вRFC 4251) з чітко розділеними шарами. До них належать:

  • Транспортний шар (RFC 4253). Цей шар обробляє початковий обмін ключами,автентифікує сервер, встановлює шифрування, стиснення і перевірку цілісності даних. Він надає у вищий шар інтерфейс для відправлення та отримання текстових пакетів розміром до 32768 байт кожен (цей розмір може бути збільшений в певній реалізації). Транспортний рівень також організовує повторний обмін ключами. Як правило, це відбувається після передачі 1 Гб даних або коли пройшла 1 година, що швидше настане.
  • Шар автентифікації користувача (RFC 4252). Цей шар обробляє перевірку автентичності клієнта і надає ряд методів автентифікації. Автентифікація є клієнто-орієнтованою: коли користувач отримує запит на введення пароля, то це може бути запит SSH клієнта, а не сервера. Сервер просто відповідає на запити клієнта про автентифікацію. Широко вживані методи автентифікації користувачів включають наступне:
    • парольна автентифікація: Самий простий метод пароль автентифікації за допомогою перевірки пароля. Підтримується також механізм який дозволяє змінити пароль, але не всі клієнтські програми реалізовують цей механізм.
    • публічний ключ: використовуєкриптографію з відкритим ключем. В якості криптографічних алгоритмів раніше використовувалисьDSA.RSA має проблеми але все ще залишається популярним на 2024 рік, хоча витісняється ecdsa, ed25519, ed448. Також існують реалізації що підтримуютьX.509 сертифікати.
    • інтерактивний метод (RFC 4256): універсальний, схожий на парольний, метод, коли сервер запитує інформацію, а клієнт відповідає. В якості відповіді може бутиодноразовий пароль автентифікації. Цей метод використовується в зв'язці з PAM, для додаткової автентифікації після успішного вводу пароля. (Багатофакторна автентифікація).
    • GSS-API методи автентифікації: які забезпечують додаткові схеми для автентифікації з використанням зовнішніх механізмів, таких якKerberos 5 абоNTLM, забезпечуючи можливістьSingle Sign On на підприємстві.
  • Шар з'єднань (RFC 4254). Цей шар визначає поняття каналів, запитів для каналів та глобальних запитів. Одне з'єднання по SSH може включати декілька одночасних логічних каналів, в кожному з яких можна передавати дані в обох напрямках. Запити для каналів використовуються для передачі даних, специфічних для каналу, наприклад, зміни розміру буфера терміналу або коду завершення процесу на сервері. Кожен канал також керує потоком даних, використовуючи розмір буфера приймаючої сторони. Клієнт SSH може запросити перенаправлення порту на сервері через глобальний запит. Типи каналів:
    • shell використовується для віддалених терміналів, SFTP та запитів на виконання команд (у тому числі SCP передач)
    • direct-tcpip використовується для TCP-з'єднань що передаються з клієнта на сервер
    • forwarded-tcpip використовується для TCP-з'єднань що передаються з сервера на клієнт

Відбитки публічного ключа

[ред. |ред. код]

Окрім захисту сервера від неавторизованого користувача різноманітними методами аутентифікації, клієнт також має систему, яка запам'ятовує «відбитки публічних ключів» (ssh fingerprint) в файлі known_hosts, який містить адресу сервера, алгоритми ключа та SHA-1 хеш від публічного ключа.

Існує SSHFP DNS-запис (RFC 4255) пропонує перевіряти відбитки публічних ключів, також описує формат запису для зберігання в DNS.

Поліпшення

[ред. |ред. код]

Вони призначені для підвищення продуктивності продуктів SSH:

  • SSH-over-SCTP: підтримка SCTP, а не TCP, як зв'язок орієнтований протокол транспортного рівня[13]
  • ECDSA: підтримка еліптичної кривої DSA, а не DSA або RSA для підписання[14]
  • ECDH: підтримка для еліптичних кривих Діффі-Хеллмана, а не просто Діффі-Хеллмана для шифрування обміну ключами.[14]
  • UMAC(інші мови): підтримка UMAC, а не HMAC для MAC / цілісності[15]

Див. також

[ред. |ред. код]

Примітки

[ред. |ред. код]
  1. Amies A, Wu C F, Wang G C, Criveti M (2012).Networking on the cloud[Архівовано 14 червня 2013 уWayback Machine.]IBM developerWorks, June 21.
  2. The story of the SSH port is 22.www.ssh.com(англ.). Процитовано 8 квітня 2024.
  3. History of SSH - SSH, The Secure Shell: The Definitive Guide, 2nd Edition [Book].www.oreilly.com(англ.). Процитовано 8 квітня 2024.
  4. Secure Shell (secsh).datatracker.ietf.org(англ.). Процитовано 8 квітня 2024.
  5. O'Reily: Secure Shell, The Definitive Guide
  6. SSH Frequently Asked Questions. Архіворигіналу за 1 жовтня 2017. Процитовано 4 березня 2013.
  7. RFC 4253, section 5. Compatibility With Old SSH VersionsАрхівована копія. Архів оригіналу за 1 березня 2018. Процитовано 13 травня 2022.{{cite web}}: Обслуговування CS1: bot: Сторінки з посиланнями на джерела, де статус оригінального URL невідомий (посилання) Обслуговування CS1: Сторінки з текстом «archived copy» як значення параметру title (посилання), IETF
  8. SSH Insertion Attack. Архіворигіналу за 8 липня 2011. Процитовано 4.3.2013.
  9. Weak CRC allows packet injection into SSH sessions encrypted with block ciphers[Архівовано 5 березня 2018 уWayback Machine.], US-CERT
  10. Weak CRC allows last block of IDEA-encrypted SSH packet to be changed without notice[Архівовано 5 березня 2018 уWayback Machine.], US-CERT
  11. SSH-1 allows client authentication to be forwarded by a malicious server to another server[Архівовано 31 грудня 2017 уWayback Machine.], US-CERT
  12. SSH CBC vulnerability[Архівовано 6 вересня 2017 уWayback Machine.], US-CERT
  13. Seggelmann, R.; Tuxen, M.; Rathgeb, E.P. (18–20 July 2012). SSH over SCTP — Optimizing a multi-channel protocol by adapting it to SCTP.Communication Systems, Networks & Digital Signal Processing (CSNDSP), 2012 8th International Symposium on: 1—6.doi:10.1109/CSNDSP.2012.6292659.
  14. абStebila, D.; Green J. (December 2009).RFC5656 - Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer. Архіворигіналу за 19 липня 2012. Процитовано 12 листопада 2012.
  15. Miller, D.; Valchev, P. (3 вересня 2007).The use of UMAC in the SSH Transport Layer Protocol / draft-miller-secsh-umac-00.txt. Архіворигіналу за 19 серпня 2014. Процитовано 12 листопада 2012.

Посилання

[ред. |ред. код]

Стандарти

[ред. |ред. код]
  • RFC 4250(англ.) — The Secure Shell (SSH) Protocol Assigned Numbers
  • RFC 4251(англ.) — The Secure Shell (SSH) Protocol Architecture
  • RFC 4252(англ.) — The Secure Shell (SSH) Authentication Protocol
  • RFC 4253(англ.) — The Secure Shell (SSH) Transport Layer Protocol
  • RFC 4254(англ.) — The Secure Shell (SSH) Connection Protocol
  • RFC 4255(англ.) — Using DNS to Securely Publish Secure Shell (SSH) Key Fingerprints
  • RFC 4256(англ.) — Generic Message Exchange Authentication for the Secure Shell Protocol (SSH)
  • RFC 4335(англ.) — The Secure Shell (SSH) Session Channel Break Extension
  • RFC 4344(англ.) — The Secure Shell (SSH) Transport Layer Encryption Modes
  • RFC 4345(англ.) — Improved Arcfour Modes for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4419(англ.) — Diffie-Hellman Group Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4432(англ.) — RSA Key Exchange for the Secure Shell (SSH) Transport Layer Protocol
  • RFC 4462(англ.) — Generic Security Service Application Program Interface (GSS-API) Authentication and Key Exchange for the Secure Shell (SSH) Protocol
  • RFC 4716(англ.) — The Secure Shell (SSH) Public Key File Format
  • RFC 5656(англ.) — Elliptic Curve Algorithm Integration in the Secure Shell Transport Layer
Перегляд цього шаблону
  Тематичні сайти
Нормативний контроль
UNIX-команди, що запускаються в режимі командного рядка
Файлові системи:
Файли ікаталоги:
Процеси:
Користувачі:
Мережа:
Тексти:
Командний рядок:
Друк:
Пошук:
Різне:
СхемиURI
Офіційні
aaa: • aaas: • acap[en]: • cap: • cid: • crid[en]: • data[en]: • dav: • dict: • dns: • fax: • file[en]: • ftp: • go: • gopher: • h323: • http: • https: • im: • imap: • ldap: • mailto: • mid: • news: • nfs: • nntp: • pop: • pres: • rtsp: • sip: • sips: • snmp: • tel: • telnet: • urn: • wais: • xmpp:
Неофіційні
about:[en] • aim: • bolo: • btc: • bzr: • callto: • chrome: • cvs: • daap: • ed2k: • ed2kftp: • feed[en]: • fish: • git: • gizmoproject: • iax2: • irc: • ircs: • itms: • lastfm: • ldaps: • magnet: • mms: • msnim: • psyc: • rsync: • secondlife: • skype: • ssh: • svn: • sftp: • smb: • sms: • soldat: • steam: • unreal: • ut2004: • view-source[en]: • webcal: • xfire: • ymsgr:
Програмне забезпеченнявіддаленого адміністрування
Загальні поняття
Реалізації
Суперечливі реалізації
Програмне забезпеченняЦе незавершена стаття пропрограмне забезпечення.
Ви можетедопомогти проєкту,виправивши або дописавши її.
{{{alt}}}Це незавершена стаття прокомп'ютерні мережі.
Ви можетедопомогти проєкту,виправивши або дописавши її.
Ця статтямає кілька недоліків. Будь ласка, допоможітьудосконалити її або обговоріть ці проблеми насторінці обговорення.
Цю статтюпотрібно повністю переписати відповідно достандартів якості Вікіпедії. Ви можете допомогти,переробивши її. Можливо,сторінка обговорення містить зауваження щодо потрібних змін.(липень 2017)
Ця статтямістить текст, що не відповідаєенциклопедичному стилю. Будь ласка, допоможітьудосконалити цю статтю, погодивши стиль викладу зістилістичними правилами Вікіпедії. Можливо,сторінка обговорення містить зауваження щодо потрібних змін.(вересень 2012)
Ця статтяє сиримперекладом з іншої мови. Можливо, вона створена за допомогою машинного перекладу або перекладачем, який недостатньо володіє обома мовами. Будь ласка, допоможітьполіпшити переклад.(листопад 2013)
Отримано зhttps://uk.wikipedia.org/w/index.php?title=SSH&oldid=44229223
Категорії:
Приховані категорії:

[8]ページ先頭

©2009-2025 Movatter.jp