Правильная настройка SSH на Ubuntu Server

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

Хостинг-провайдер

Самый важный момент установки и настройки VPS — выбор провайдера. Есть множество различных вариантов, которые отличаются по конфигурации: процессору, оперативной памяти, дисковому пространству. Прежде чем выбрать хостинг-провайдера, определите, какое ПО будет стоять на сервере. Например, для WordPress или GIT хватит и 512 МБ ОЗУ. Для большого проекта понадобится больше ресурсов.

После оплаты выбранного варианта провайдер пришлет электронное письмо с базовой информацией о сервере. В письме будет IPv4 и IPv6-адрес VPS, имя пользователя и пароль SSH.

Мы используем Secure Shell (SSH) для установки и настройки VPS — это безопасно и быстро.

Для завершения установки (после получения письма от провайдера) нужно ввести:

ssh [email protected]

Где поменять на IPv4-адрес.

Теперь введите пароль, после чего появится экран приветствия. Готово: сервер VPS установлен, теперь его надо настроить.

Подключение по SSH с помощью OpenSSH

Раньше для подключения к Linux серверу по SSH из Windows компьютера требовалась установка программы PuTTy или какого-то другого SSH-клиента. Но, в операционной системе Windows 10 (начиная с версии 1809) доступен клиент OpenSSH, с помощью которого можно подключаться к Linux серверам по SSH. Это позволяет работать с терминалом Linux прямо из командной строки Windows 10, при этом не требуется установка никаких сторонних программ.

Перед тем как использовать данный способ подключения необходимо проверить версию Windows 10. Для этого нажмите комбинацию клавиш Win-R и выполните команду «winver». Если на вашем компьютере установлена Windows 10 с версией 1809 или выше, то все нормально, в противном случае сначала нужно выполнить обновление.

Также нужно открыть меню «Параметры» и зайти в раздел «Приложения – Дополнительные возможности».

Здесь нужно пролистать список установленных дополнительных компонентов и найти в нем «Клиент OpenSSH». Если такой компонент присутствует, значит все нормально и можно переходить к следующему шагу. Если нет, то его нужно сначала установить с помощью меню «Добавить компонент».

Обратите внимание, не нужно путать «Клиент OpenSSH» и «Сервер OpenSSH». Для подключения по SSH вам нужен именно клиент.

Также клиент OpenSSH можно установить с помощью PowerShell. Для этого запустите консоль PowerShell с правами администратора и выполните следующую команду:

Add-WindowsCapability -Online -Name ~~~~0.0.1.0

Более подробно об установке и удалении клиента OpenSSH можно почитать в официальной документации Майкрософт.

Если версия Windows 10 подходящая и клиент OpenSSH установлен, то можно начинать подключение по SSH. Для этого запустите обычную командную строку Windows и введите команду «ssh». В ответ вы должны получить информацию о работе с данной командой.

В общем случае синтаксис команды «ssh» выглядит следующем образом:

ssh [email protected]

Где «user» — это имя пользователя на удаленном сервере, а «server» — это имя компьютера или его ip адрес.

Например, если наш сервер доступен по ip адресу «», а имя пользователя это «aleks», то команда для подключения будет выглядеть так:

ssh [email protected]

После ввода данной команды появится запрос пароля и после этого мы получим доступ к удаленному серверу. Также при первом подключении с помощью ssh будет появляться запрос на добавление сервера в список известных.

Читайте также:  Чек лист: Как настроить виртуальный сервер VPS/VDS

По умолчанию для SSH используется порт 22. Для того чтобы это изменить нужно использовать параметр «-p». Например, для подключения по порту 2222 нужно выполнить вот такую команду.

ssh [email protected] -p 2222

Если подключение предполагает использование ключей, то они должны находиться в папке «C:\Users\user\.ssh». А при подключении путь к приватному ключу нужно указать с помощью параметра «-i». Например, чтобы использовать ключ «C:\Users\stepu\.ssh\id_rsa» нужно выполнить:

ssh [email protected] -i C:\Users\stepu\.ssh\id_rsa

Более подробную информацию о команде «ssh» и ее параметрам можно получить на сайте или на (перевод).

Настройка sshd_config

Открываем в терминале конфигурационный файл SSH

sudo nano /etc/ssh/sshd_config

Первое что нужно сделать, так это сменить порт ssh с 22 на любой другой. Ищем строку Port 22 и заменяем её например на Port 2222

Port 2222

Порты 21, 22, 80, 139, 443, 1194, 3306, 8080 — советую не использовать.

Второе — ограничим тип адресов для подключения (IPv6 либо IPv4). Если у вас на сервере не используется IPv6, то дописываем в файл:

AddressFamily inet

Третье — запретим root авторизацию

PermitRootLogin no

Четвертое — разрешаем подключение только под определенным логином:

AllowUsers user

где список пользователей пишется через пробел.

Пятое — запрещаем попытку входа с пустым паролем:

PermitEmptyPasswords no

Шестое — настраиваем вход по ключу.

PubkeyAuthentication yes

Далее на машине с который будете подключаться к серверу набираем следующие команды:

ssh-keygen

Будет предложено указать место размещения пары ключей, парольная фраза на них и их название. Можете оставить все как есть просто нажимая Enter.

Далее копируем наш публичный ключ на сервер:

ssh-copy-id ваш[email protected]_

Проверьте, что можете зайти на сервер по ключу, без ввода пароля!!!

ssh ваш[email protected]_

Седьмое — запрещаем вход по паролю

PasswordAuthentication no

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

Восьмое — сохраняем правки и перезапускаем ssh демон:

sudo /etc/init.d/ssh restart

Linux Terminal Emulators

Все дистрибутивы Linux предоставляют клиентский интерфейс ssh как часть стандартной установки.

  1. Откройте эмулятор терминала и напишите ssh [email protected] (“ssh» — это команда, root это пользователь OpenWrt, к которому вы подключаетесь, а это светодиод по умолчанию OpenWrt)
  2. появится сообщение о принятии нового ключа от устройства OpenWrt, напишите “yes” и нажмите клавишу “Ввод”.
    1. Если по какой-то причине вы переустановили OpenWrt, у устройства будет другой ключ, и вы получите сообщение о несоответствии ключей. В этой ошибке будет указано, что является командной строкой для копирования-вставки в вашем терминале, чтобы удалить старый ключ и продолжить.
  3. если вы хотите закрыть сеанс, напишите “exit”

Обычно у Linux также есть клиенты SCP (для открытия/редактирования/загрузки/выгрузки файлов в OpenWrt), которые могут быть установлены или не установлены по умолчанию. Вам нужно найти документацию вашего дистрибутива или выполнить поиск с помощью интерфейса управления пакетами для “SCP”, чтобы найти, где он находится, и его текущий статус установки. Прочтите его встроенное руководство (“man scp”, например, для клиента командной строки SCP) или google некоторые учебные пособия, чтобы узнать, как его использовать.

Настройка параметров подключения к SSH

Необходимо понимать, что использование такого блага как ssh-соединение влечет за собой и риск подвергнуться хакерской атаке. Злоумышленники могут попытаться проникнуть на ваш удаленный сервер, используя логин и пароль. Чтобы свести вероятность успешной атаки к минимуму, воспользуемся доступными нам средствами, а именно — изменением настроек подключения.

Есть несколько основных параметров, настройка которых поможет сделать ваше подключение более безопасным.

На всякий случай создаем резервную копию конфигурационного файла с настройками:

cp /etc/ssh/sshd_config{,.bak}

Приставка {,.bak} позволяет скопировать файл с указанным именем и расширением bak, которое присваивается резервным копиям.

Теперь через текстовый редактор, например, vim, emacs, nano, открываем файл /etc/ssh/sshd_config и вносим в него основные правки. В целях повышения безопасности SSH соединения нас интересуют следующие параметры:

  1. PermitRootLogin
  2. AllowUsers, AllowGroups
  3. DenyUsers, DenyGroups
  4. Port
  5. ListenAddress
  6. Login GraceTime
  7. ClientAliveInterval
  8. HostbasedAuthentication.
Читайте также:  Как устанавливать программы для Linux

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

PermitRootLogin Этот параметр устанавливает разрешение на вход в систему как root пользователь. Для повышения безопасности соединения рекомендуется отключить такую возможность, т.е. изменить установленное в файле значение “Yes” на “No”:

PermitRootLogin no

При таких условиях выполнять команды с правами суперпользователя после входа на сервер можно будет с помощью функций su либо sudo.

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

AllowUsers user1 user2 user3 AllowGroups group1 group2 group3

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

DenyUsers, DenyGroups Когда пользователей в системе много и нужно предоставить удаленный доступ большинству из них, при этом запретив его отдельным лицам и группам, в sshd_config файле вносят правки в параметры DenyUsers, DenyGroups. Напротив этих параметров, аналогично примеру с AllowUsers, AllowGroups, перечисляем имена пользователей и групп, которым будет отказано в доступе на сервер по SSH.

DenyUsers user1 user2 DenyGroups group1 group2

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

Port Чтобы усложнить задачу хакерам, стоит позаботиться о хорошей маскировки своего ssh-порта.

По умолчанию ssh-соединение осуществляться через 22-й порт. Чтобы порт для подключения не был так очевиден, смените порт SSH на любой другой, желательно наименее стандартный, например:

Port 22540

ListenAddress Кроме того, что ssh-соединения настроено на определенном порте, подключение осуществляется на различных сетевых интерфейсах. Иными словами сервер слушает множество IP-адресов. Есть возможность указать в конфигурационном файле конкретные адреса интерфейсов для входа на сервер с помощью параметра ListenAddress. Например:

ListenAddress

Login GraceTime По умолчанию, при подключении к серверу по ssh у пользователя есть 2 минуты для ввода логина и пароля. Такого промежутка более чем достаточно, причем не только для авторизованного пользователя, но и для хакера. Поэтому время ожидания ввода этих данных стоит ограничить до 30-60 секунд, в зависимости от ваших предпочтений.

Login GraceTime 30

ClientAliveInterval Этот параметр призван определить время бездействия пользователя, по истечении которого соединение автоматически разрывается. Период ожидания необходимо указать в секундах, например:

ClientAliveInterval 300

HostbasedAuthentication Также стоит отключить авторизацию пользователя на основе хоста с помощью директивы:

HostbasedAuthentication no

Лучше воспользоваться аутентификацией на основе ключей.

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

Настройки SSH-сервера

Настройки SSH-сервера хранятся в файле /etc/ssh/sshd_config.

Для приведенного выше примера он может быть следующим:

Настройки SSH-сервера

Наиболее важные опции с точки зрения безопасности:

  • Port 22 – Порт по умолчанию.
  • Protocol 2,1 – Какая реализация протокола SSH будет использоваться. Рекомендую оставить только 2.
  • ListenAddress – По умолчанию SSH сервер прослушивает все доступные интерфейсы, что абсолютно не нужно в большинстве ситуаций. Необходимо прописать сетевой интерфейс, с которого будет осуществляться управление сервером.
  • PermitRootLogin yes – По умолчанию разрешает входить по SSH суперпользователю root. Необходимо указать no.
  • AllowUsers adminsys – Данный параметр разрешает входить по SSH только перечисленным пользователям.
  • AllowGroups wheel – Группа пользователей которой можно входить по SSH, опцию можно не использовать если указана опция AllowUsers.
  • DenyUsers baduser – Данная опция запрещает вход по SSH перечисленным пользователям.
  • DenyGroups badgroup – Данная опция запрещает вход по SSH перечисленным группам пользователей.
  • MaxAuthTries 3 – Сколько раз переспрашивать пароль при неверном вводе. В данном случае SSH-сервер после 3 неверных попыток разорвет соединение с клиентом.
  • LoginGraceTime 60 – Через сколько секунд разрывать соединение при отсутствии аутентификации со стороны клиента.
  • PermitEmptyPasswords no – Разрешать использовать пустые пароли. По вполне понятным причинам значение этого параметра no.
  • PrintLastLog yes – при входе пользователя в систему по SSH ему будет показано когда и откуда последний раз был произведен вход под данным пользователем.
  • LogLevel INFO – В качестве параметра этой опции необходимо указать уровень журналирования. Возможные значения QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG1, DEBUG2, DEBUG3. Чем выше уровень журналирования, тем больше информации появится в файле регистрации событий.
  • SyslogFacility AUTHPRIV – Куда будут попадать логи. Возможные значения: DAEMON, USER, AUTH, LOCAL0, LOCAL1, LOCAL2, LOCAL3, LOCAL4, LOCAL5, LOCAL6, LOCAL7.

Вход на сервер через PUTTY PORTABLE

Настройки SSH-сервера

Для начало нам нужно узнать Ip-адрес сервера:

# ifconfig

После чего вводим Ip-адрес в PUTTY указав 22 порт (стоит по умолчанию).

Указываем SSH соединение и заходим на сервер.

Настройки SSH-сервера

При входе на сервер он попросит вас зайти под своей учетной записью.

Как ограничить доступ по SSH

Все изменения вносятся в /etc/ssh/sshd_config Чтобы изменения вступили в силу, необходимо перезагрузить SSH

Читайте также:  Видеодрайвер Intel для «бобра» − Ubuntu 18.04

Сменить порт

Port 9724

Теперь при авторизации вам нужно вместо стандартного 22 порта указывать 9724. Способ очень простой и действенный против большинства простых ботов хакеров, которые стучатся в стандартные порты. Тут главное не создать конфликт с другими службами и подобрать заведомо неиспользуемое число.

Запретить связь по старому протоколу

Здесь мы определяем, что связь возможна только по протоколу v2

Protocol 2

Запретить авторизацию под root

PermitRootLogin no

По умолчанию no. Если yes, можно авторизовываться под рутом. Под root работать небезопасно, лучше создать своего пользователя и работать под ним.

Если вы авторизованы не под root, перед всеми консольными командами нужно добавлять sudo — расшифровывается как Substitute User and DO — подмени юзера и делай (под ним). Например, позволяет исполнять команды от имени суперпользователя root.

Уменьшить число попыток авторизации

MaxAuthTries 2

Количество попыток ввода пароля. По умолчанию 6. При неудачном переборе сеанс связи обрывается.

Уменьшить время ожидания авторизации

LoginGraceTime 30s

По умолчанию, 120 секунд может длиться сеанс авторизации. По истечению этого времени он обрывается. 2 минуты на авторизацию — это перебор, всё это время сервер держит связь открытой, что очень нерационально. Полминуты за глаза хватит.

Закрыть доступ по IP

Прежде чем настраивать ограничения по IP, убедитесь, что в случае ошибки в настройке и последующего бана собственного IP у вас останется альтернативный способ вернуть доступ к серверу

Если доступ нужен только вам, самым простым и надёжным будет закрыть доступ отовсюду, кроме вашего IP или, если он динамический, то диапазона IP.

  1. Открываем /etc/ и добавляем туда

    SSHD:

    где — ваш IP. Если у вас динамический IP, определите IP с маской подсети и запишите Вашу подсеть вместо IP, например:

    SSHD:

  2. Открываем /etc/ и добавляем туда:

    SSHD: ALL

Теперь никто, кроме вас, не сможет авторизоваться на сервере по SSH.

Ещё один способ ограничения доступа по IP

Можно воспользоваться следующей директивой:

AllowUsers = *@1.2.3.4

Здесь мы разрешаем доступ только для IP 1.2.3.4

Выводы

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

Выводы

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

Выводы

Для получения дополнительной информации о том, как настроить SSH-сервер, прочтите руководство по SSH / OpenSSH / настройке Ubuntu и официальную страницу руководства по SSH .

Выводы

Если у вас есть вопросы, оставьте комментарий ниже.

Выводы

Оставьте комментарий Отменить ответ

Ваш адрес email не будет опубликован.

Имя

E-mail