Домашняя » как » Изучите все преимущества OpenSSH на вашем ПК с Linux

    Изучите все преимущества OpenSSH на вашем ПК с Linux

    Мы неоднократно превозносили достоинства SSH как для обеспечения безопасности, так и для удаленного доступа. Давайте посмотрим на сам сервер, некоторые важные аспекты «обслуживания» и некоторые особенности, которые могут добавить турбулентность к в противном случае плавной поездке.

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

    Почему это безопасно

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

    Когда мы решаем установить соединение с другим компьютером, мы часто используем протоколы, с которыми легко работать. Telnet и FTP оба приходят на ум. Мы отправляем информацию на удаленный сервер, а затем получаем подтверждение о нашем соединении. Чтобы установить какой-либо тип безопасности, эти протоколы часто используют комбинации имени пользователя и пароля. Это значит, что они абсолютно безопасны, верно? Неправильно!

    Если мы рассматриваем наш процесс подключения как почту, то использование FTP и Telnet и т. П. Не похоже на использование стандартных почтовых конвертов. Это больше похоже на использование открыток. Если кто-то окажется в середине, он сможет увидеть всю информацию, включая адреса обоих корреспондентов, а также имя пользователя и пароль, отправленные. Затем они могут изменить сообщение, оставив информацию неизменной, и выдать себя за одного корреспондента или другого. Это известно как атака «человек посередине», и она не только ставит под угрозу вашу учетную запись, но и ставит под сомнение каждое отправленное сообщение и полученный файл. Вы не можете быть уверены, говорите ли вы с отправителем или нет, и даже если это так, вы не можете быть уверены, что никто не смотрит на все, что между.

    Теперь давайте рассмотрим шифрование SSL, которое делает HTTP более безопасным. Здесь у нас есть почтовое отделение, которое обрабатывает корреспонденцию, которая проверяет, является ли ваш получатель тем, кем он или она утверждает, и имеет законы, защищающие вашу почту от просмотра. В целом он более безопасен, и центральный орган - Verisign, например, для нашего примера HTTPS, - гарантирует, что человек, которому вы отправляете почту, извлечет деньги. Они делают это, не разрешая открытки (незашифрованные учетные данные); вместо этого они требуют реальных конвертов.

    Наконец, давайте посмотрим на SSH. Здесь настройки немного отличаются. У нас здесь нет центрального аутентификатора, но все еще в безопасности. Это потому, что вы отправляете письма кому-то, чей адрес вы уже знаете - скажем, общаясь с ним по телефону, - и вы используете какую-то действительно причудливую математику, чтобы подписать свой конверт. Вы передаете его своему брату, подруге, отцу или дочери, чтобы он взял его по адресу, и только в том случае, если математика соответствует получателю, вы предполагаете, что адрес такой, каким он должен быть. Затем вы получите письмо обратно, также защищенное от посторонних глаз этой удивительной математикой. Наконец, вы отправляете свои учетные данные в другом секретном заколдованном алгоритмическом конверте адресату. Если математика не совпадает, мы можем предположить, что первоначальный получатель переехал, и нам нужно подтвердить его адрес еще раз.

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

    Ключи хоста

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

    1. Поскольку центральный орган не существует, реальная безопасность заключается в ключе хоста, открытых ключах и закрытых ключах. (Эти последние два ключа настраиваются, когда вы получаете доступ к системе.)
    2. Обычно, когда вы подключаетесь к другому компьютеру через SSH, ключ хоста сохраняется. Это делает будущие действия быстрее (или менее подробными).
    3. Если ключ хоста изменится, вы, скорее всего, будете предупреждены, и вы должны быть осторожны!

    Поскольку ключ хоста используется перед аутентификацией для установления личности сервера SSH, вы должны обязательно проверить ключ перед подключением. Вы увидите диалог подтверждения, как показано ниже.

    Вы не должны волноваться, хотя! Часто, когда речь идет о безопасности, существует особое место, где можно подтвердить ключ хоста (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» (без кавычек).

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

    • StrictHostKeyChecking имеет значение no; OpenSSH автоматически подключится к любому SSH-серверу независимо от статуса ключа хоста. Это небезопасно и не рекомендуется, за исключением случаев, когда вы добавляете несколько хостов после переустановки ОС, после чего вы меняете ее обратно.
    • StrictHostKeyChecking установлен для запроса; OpenSSH покажет вам новые ключи хоста и запросит подтверждение перед их добавлением. Это предотвратит подключение соединений к измененным ключам хоста. Это по умолчанию.
    • StrictHostKeyChecking имеет значение yes; В противоположность «нет», это не позволит вам подключиться к любому хосту, которого еще нет в вашем файле known_hosts.

    Вы можете легко изменить эту переменную в командной строке, используя следующую парадигму:

    ssh -o 'StrictHostKeyChecking [опция]' user @ host

    Замените [option] на «no», «ask» или «yes». Имейте в виду, что есть одиночные прямые кавычки, окружающие эту переменную и ее настройку. Также замените user @ host именем пользователя и именем сервера, к которому вы подключаетесь. Например:

    ssh -o 'StrictHostKeyChecking ask' [email protected]

    Заблокированные хосты из-за смены ключей

    Если у вас есть сервер, к которому вы пытаетесь получить доступ, у которого уже был изменен ключ, конфигурация OpenSSH по умолчанию не позволит вам получить к нему доступ. Вы можете изменить значение StrictHostKeyChecking для этого хоста, но это не будет полностью, полностью, параноидально безопасным, не так ли? Вместо этого мы можем просто удалить ошибочное значение из нашего файла known_hosts.

    Это определенно ужасная вещь на вашем экране. К счастью, нашей причиной была переустановленная ОС. Итак, давайте увеличим нужную нам линию.

    Там мы идем. Посмотрите, как он цитирует файл, который нам нужно отредактировать? Это даже дает нам номер строки! Итак, давайте откроем этот файл в Nano:

    Вот наш оскорбительный ключ в строке 1. Все, что нам нужно сделать, это нажать Ctrl + K, чтобы вырезать всю строку.

    Это гораздо лучше! Итак, теперь мы нажимаем Ctrl + O, чтобы записать (сохранить) файл, затем Ctrl + X, чтобы выйти.

    Теперь вместо этого мы получаем приятное приглашение, на которое мы можем просто ответить «да».

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

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

    Сначала перейдите в соответствующий системный каталог:

    cd / etc / ssh /

    Это обычно, где глобальные ключи хоста, хотя некоторые дистрибутивы размещают их в другом месте. Если вы сомневаетесь, проверьте вашу документацию!

    Далее мы удалим все старые ключи.

    sudo rm / etc / ssh / ssh_host_ *

    В качестве альтернативы вы можете переместить их в надежный каталог резервного копирования. Просто мысль!

    Затем мы можем сказать серверу OpenSSH перенастроить себя:

    sudo dpkg-перенастроить openssh-сервер

    Вы увидите приглашение, пока ваш компьютер создаст новые ключи. Та-да!


    Теперь, когда вы знаете, как SSH работает немного лучше, вы сможете выбраться из трудных мест. Предупреждение / ошибка «Удаленная идентификация хоста» - это то, что сбивает с толку многих пользователей, даже тех, кто знаком с командной строкой.

    .