Научете ин и извън OpenSSH на вашия компютър с Linux

Съдържание:

Научете ин и извън OpenSSH на вашия компютър с Linux
Научете ин и извън OpenSSH на вашия компютър с Linux

Видео: Научете ин и извън OpenSSH на вашия компютър с Linux

Видео: Научете ин и извън OpenSSH на вашия компютър с Linux
Видео: CS50 2015 - Week 6 - YouTube 2024, Може
Anonim
Известявахме добродетелите на SSH многократно, както за сигурността, така и за отдалечения достъп. Нека да разгледаме самия сървър, някои важни аспекти на "поддръжката" и някои странности, които могат да добавят турбуленция към иначе плавно пътуване.
Известявахме добродетелите на SSH многократно, както за сигурността, така и за отдалечения достъп. Нека да разгледаме самия сървър, някои важни аспекти на "поддръжката" и някои странности, които могат да добавят турбуленция към иначе плавно пътуване.

Докато сме написали това ръководство с Linux, това може да се отнася и за OpenSSH в Mac OS X и Windows 7 чрез Cygwin.

Защо това е сигурно

Споменахме многократно как SSH е чудесен начин за сигурно свързване и тунелиране на данни от една точка до друга. Нека да разгледаме много внимателно как работи нещата, за да получите по-добра представа защо нещата понякога могат да станат странни.

Когато решаваме да започнем връзка с друг компютър, често използваме протоколи, с които лесно се работи. Telnet и FTP идват на ум. Изпращаме информацията до отдалечен сървър и след това получаваме потвърждение за връзката ни. За да се установи някакъв вид безопасност, тези протоколи често използват комбинации от потребителско име и парола. Това означава, че са напълно сигурни, нали? Грешка!
Когато решаваме да започнем връзка с друг компютър, често използваме протоколи, с които лесно се работи. Telnet и FTP идват на ум. Изпращаме информацията до отдалечен сървър и след това получаваме потвърждение за връзката ни. За да се установи някакъв вид безопасност, тези протоколи често използват комбинации от потребителско име и парола. Това означава, че са напълно сигурни, нали? Грешка!

Ако мислим за нашия процес на свързване като поща, тогава използването на FTP и Telnet и подобни не е като да използвате стандартни пощенски пликове. Това е по-скоро като използване на пощенски картички. Ако някой се случи да стъпи по средата, той може да види цялата информация, включително адресите на двамата кореспонденти и изпратеното потребителско име и парола. След това те могат да променят съобщението, като запазят информацията същата и да се представят за един или друг кореспондент. Това е известно като атака "човек в средата" и не само компрометира акаунта ви, но поставя под въпрос всяко изпратено съобщение и получен файл. Не можете да сте сигурни дали говорите с подателя или не, и дори и да сте, не можете да сте сигурни, че никой не гледа всичко отвсякъде.

Сега нека разгледаме SSL криптирането, което прави HTTP по-сигурен. Тук имаме пощенска служба, която се занимава с кореспонденцията, която проверява дали получателят ви е този, за когото се твърди, че е, и има закони, които защитават пощата ви от неспазване. Това е по-сигурно цялостно и централният орган - Verisign е един, за нашия HTTPS пример - гарантира, че човекът, на когото изпращате поща, ще се ожени. Те правят това, като не позволяват пощенски картички (некриптирани данни); вместо това те дават реални пликове.

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

С обяснението колкото е възможно, мислим, че ще го скъсаме там. Ако имате по-добра представа, не се колебайте да говорите в коментарите, разбира се. Засега обаче нека да разгледаме най-подходящата функция на SSH, удостоверяване на хост.

Ключове за хоста

Удостоверяването на хоста е по същество частта, в която някой, на когото имате доверие, взима плика (запечатан с магическа математика) и потвърждава адреса на получателя ви. Това е доста подробно описание на адреса и се основава на някаква сложна математика, която ще прескочим направо. Има няколко важни неща, които трябва да се вземат от това:

  1. Тъй като няма централен орган, истинската сигурност се крие в клавиша за хост, публичните ключове и частните ключове. (Последните два класа се конфигурират, когато получите достъп до системата.)
  2. Обикновено, когато се свързвате с друг компютър чрез SSH, ключът за хост се съхранява. Това прави бъдещите действия по-бързи (или по-малко подробни).
  3. Ако ключът на хоста се промени, най-вероятно ще бъдете предупредени и трябва да сте предпазливи!

Тъй като ключът хост се използва преди удостоверяване, за да се установи самоличността на SSH сървъра, трябва да сте сигурни, че сте проверили ключа, преди да се свържете. Ще видите диалогов прозорец за потвърждение, както е показано по-долу.

Не трябва да се притеснявате, обаче! Често когато сигурността предизвиква загриженост, ще има специално място, което може да бъде потвърдено от ключовия хост (отпечатъка ECDSA по-горе). В изцяло онлайн начинания, често той ще бъде на сигурен сайт само за влизане. Може да се наложи (или да изберете!) Да се обадите на вашия ИТ отдел, за да потвърдите този ключ по телефона. Дори съм чувал за някои места, където ключът е на вашето работно знаме или на специалния списък "Спешни номера". И ако имате физически достъп до целевата машина, можете също да проверите сами!
Не трябва да се притеснявате, обаче! Често когато сигурността предизвиква загриженост, ще има специално място, което може да бъде потвърдено от ключовия хост (отпечатъка ECDSA по-горе). В изцяло онлайн начинания, често той ще бъде на сигурен сайт само за влизане. Може да се наложи (или да изберете!) Да се обадите на вашия ИТ отдел, за да потвърдите този ключ по телефона. Дори съм чувал за някои места, където ключът е на вашето работно знаме или на специалния списък "Спешни номера". И ако имате физически достъп до целевата машина, можете също да проверите сами!

Проверка на ключа за хост на вашата система

Има 4 вида видове алгоритми за кодиране, използвани за изработване на ключове, но по подразбиране за OpenSSH от началото на тази година е ECDSA (с някои добри причини). Сега ще се съсредоточим върху това.Ето командата, която можете да изпълните на SSH сървъра, до който имате достъп:

ssh-keygen -f /etc/ssh/ssh_host_ecdsa_key.pub -l

Резултатът ви трябва да върне нещо подобно:

256 ca:62:ea:7c:e4:9e:2e:a6:94:20:11:db:9c:78:c3:4c /etc/ssh/ssh_host_ecdsa_key.pub

Първото число е дължината на битовете на ключа, после е самият ключ и накрая имате файла, в който е съхранен. Сравнете средната част с това, което виждате, когато получите подкана да влезете отдалечено. Трябва да съвпадне и вие сте готови. Ако не е така, тогава може да се случи нещо друго.

Можете да видите всички хостове, до които сте свързали, чрез SSH, като разгледате файла known_hosts. Обикновено се намира на адрес:

~/.ssh/known_hosts

Можете да го отворите във всеки текстов редактор. Ако погледнете, опитайте се да обърнете внимание как се съхраняват ключовете. Те се съхраняват с името на хост компютъра (или уеб адрес) и неговия IP адрес.

Промяна на клавишите за хост и проблемите

Има няколко причини, поради които ключовете на хоста се променят или не съвпадат с това, което е вписано във вашия файл known_hosts.

  • Системата бе преинсталирана / преконфигурирана.
  • Бутоните на хоста бяха променени ръчно поради протоколите за сигурност.
  • Сървърът OpenSSH се актуализира и използва различни стандарти поради проблеми със сигурността.
  • Наемите на IP или DNS са променени. Това често означава, че се опитвате да получите достъп до друг компютър.
  • Системата беше компрометирана по някакъв начин, така че ключът на хоста се промени.

Най-вероятно проблемът е един от първите три и можете да пренебрегнете промяната. Ако лизингът на IP / DNS се промени, може да има проблем със сървъра и може да бъде пренасочен към друга машина. Ако не сте сигурни какво е причината за промяната, вероятно би трябвало да приемете, че това е последното в списъка.

Как OpenSSH дръжки неизвестни хостове

OpenSSH има настройка за начина, по който работи с непознати хостове, отразени в променливата "StrictHostKeyChecking" (без кавички).
OpenSSH има настройка за начина, по който работи с непознати хостове, отразени в променливата "StrictHostKeyChecking" (без кавички).

В зависимост от вашата конфигурация, SSH връзките с неизвестни хостове (чиито ключове все още не са във вашия файл known_hosts) могат да изминат три начина.

  • StrictHostKeyChecking е настроено на не; OpenSSH автоматично ще се свърже с всеки SSH сървър, независимо от състоянието на клавиша за хост. Това е несигурно и не се препоръчва, освен ако добавяте множество хостове след преинсталиране на операционната система, след което ще я промените обратно.
  • StrictHostKeyChecking е настроен да попита; OpenSSH ще ви покаже нови ключове за хост и ще поиска потвърждение, преди да ги добавите. Това ще попречи на връзките да преминат към променени ключове на хост. Това е по подразбиране.
  • StrictHostKeyChecking е настроен да; Обратното на "не", това ще ви попречи да се свържете с който и да е хост, който още не е наличен във вашия файл known_hosts.

Можете лесно да промените тази променлива в командния ред, като използвате следната парадигма:

ssh -o 'StrictHostKeyChecking [option]' user@host

Заменете [опция] с "не", "питайте" или "да". Имайте предвид, че има единични кавички около тази променлива и нейната настройка. Също така заменете потребителско име @ host с потребителското име и името на хоста на сървъра, до който се свързвате. Например:

ssh -o 'StrictHostKeyChecking ask' [email protected]

Блокирани хостове, дължащи се на променени ключове

Ако имате сървър, до който се опитвате да осъществите достъп, който вече е променен, конфигурацията OpenSSH по подразбиране ще ви попречи да го осъществите. Бихте могли да промените стойността на StrictHostKeyChecking за този хост, но това не би било напълно, напълно, параноично сигурно, нали? Вместо това, можем просто да премахнем обидата от нашия файл known_hosts.

Това определено е грозно нещо, което имате на екрана си. За щастие нашата причина за това беше инсталирана операционна система. Така че, нека да увеличим линията, от която се нуждаем.
Това определено е грозно нещо, което имате на екрана си. За щастие нашата причина за това беше инсталирана операционна система. Така че, нека да увеличим линията, от която се нуждаем.
Ето. Вижте как цитира файла, който трябва да редактираме? Той дори ни дава номера на линията! Така че, нека да отворим файла в Нано:
Ето. Вижте как цитира файла, който трябва да редактираме? Той дори ни дава номера на линията! Така че, нека да отворим файла в Нано:
Image
Image
Тук е нашият критичен ключ, в ред 1. Всичко, което трябва да направите, е да натиснете Ctrl + K, за да изрежете цялата линия.
Тук е нашият критичен ключ, в ред 1. Всичко, което трябва да направите, е да натиснете Ctrl + K, за да изрежете цялата линия.
Това е много по-добре! Така че, сега натискаме Ctrl + O, за да запишете (запишете) файла, след което Ctrl + X, за да излезете.
Това е много по-добре! Така че, сега натискаме Ctrl + O, за да запишете (запишете) файла, след което Ctrl + X, за да излезете.

Сега вместо това получаваме хубав подсказка, на който можем просто да отговорим с "да".

Image
Image

Създаване на нови ключове за хост

Всъщност, няма причина да промените изцяло вашия ключ на хост, но ако някога сте намерили нуждата, можете лесно да го направите.

Първо, променете съответната системна директория:

cd /etc/ssh/

Това обикновено е мястото, където се намират основните ключове на хост, въпреки че някои дистрибуции ги поставят на друго място. При съмнение проверете документацията си!

След това ще изтрием всички стари ключове.

sudo rm /etc/ssh/ssh_host_*

Друга възможност е да ги преместите в безопасна директория за архивиране. Просто мисъл!

След това можем да кажем на OpenSSH сървъра да се преконфигурира:

sudo dpkg-reconfigure openssh-server

Ще видите подкана, докато компютърът ви създаде новите си ключове. Та-га!

Image
Image

Сега, когато знаете как SSH работи малко по-добре, трябва да можете да се измъкнете от трудни места. Промяната на "идентификацията на отдалеченото гостоприемство е променена" е нещо, което изхвърля много потребители, дори тези, които са запознати с командния ред.

За бонус точки можете да проверите как да дистанционно копирате файлове над SSH без да въвеждате паролата си. Там ще научите малко повече за другите видове алгоритми за шифроване и как да използвате ключови файлове за допълнителна сигурност.

Препоръчано: