как сделать ssh сервер на linux

Установка и настройка сервера SSH в Linux

Secure Shell, т. е. SSH – протокол, обеспечивающий защищённые соединения и передачу данных между двумя удалёнными компьютерами. Изначально создавался на замену таким системам как rlogin и rcp. Как понятно из полного названия протокола, система SSH позволяет соединяться и управлять удалённым узлом (компьютером, маршрутизатором и т. д.), при этом защищая весь передаваемый трафик с помощью высоконадёжного шифрования.
SSH широко применяется администраторами серверов для их настройки и управления, да и обычные продвинутые пользователи — владельцы, например, сайтов или виртуальных серверов активно используют SSH для подключения к своей учётной записи на хостинге и использования командной оболочки сервера.
Сразу после окончания разработки система SSH стала активно трансформироваться в закрытый коммерческий продукт в виде версии SSH2. Но благодаря сообществу GNU версии протокола SSH1 и SSH2 были реализованы в виде открытого и свободно распространяемого ПО openSSH. В Linux-системах используется именно этот метапакет.
Метапакет SSH базово включает в себя сервер SSH (sshd) в качестве програмы-демона, а также несколько утилит: ssh – удаленная регистрация и выполнение команд, scp – передача файлов и ssh-keygen – для генерации пар SSH-ключей.

Установка пакетов SSH

Как уже говорилось система ssh в Linux-системах распространяется в виде составного метапакета, поэтому для установки всех требуемых утилит ssh нужно выполнить всего одну команду:
В Ubuntu

После чего начнется процесс установки

Как видно, менеджер пакетов сам распознает все зависимые и связанные пакеты и установит их. Также, по завершению установки, автоматически будет запущен SSH-сервер в режиме демона. Это можно проверить командой:
$ systemctl status sshd
или:
$ service sshd status даст тот же вывод. Теперь сервер работает с базовыми настройками по-умолчанию.

Настройка SSH

Режим работы SSH-сервера с настройками по-умолчанию хоть и является вполне работоспособным для небольших частных сетей, всё же нуждается в задании некоторых важных параметров для использования на высоконадёжных публичных серверах. Настройки демона хранятся в файле /etc/ssh/sshd_config. Посмотреть его можно командой

В первую очередь следует обратить внимание на следующие параметры: Port, AddressFamily, ListenAddress. Первый глобально задаёт номер порта, через который будет работать соединение и если оставить его стандартным, т. е. 22, то велика вероятность, что он будет слишком часто сканироваться роботами.
Примечание: для задания активации параметра необходимо раскомментировать соответствующую строку — убрать символ «#» в её начале.
Второй параметр задаёт семейство используемых IP-адресов — IPv4 и IPv6. Если, к примеру, используются только адреса IPv4, то очень рекомендуется установить для параметра

Для адресов семейства IPv6 используется значение inet6.
Параметр ListenAddress позволяет задавать порты для отдельных сетевых интерфейсов:

Поскольку реализация openSSH позволяет работать с протоколами SSH1 и SSH2, то разумно отключить использование SSH1, т. к. эта версия является устаревшей. Работа по SSH1 крайне не рекомендуется: Protocol 2
Очень полезным является параметр, позволяющий проводить авторизацию и шифрование трафика с помощью специальных SSH-ключей:

Или же, в случае, если всё-таки необходимо использовать доступ по паролю, то обязательно нужно отключать авторизацию по пустому паролю:

Для указания разрешённых или запрещённых пользователей и групп служат директивы DenyUsers, AllowUsers, DenyGroups, и AllowGroups. Значениями для них являются списки имён, разделяемых пробелами, например:

Следует также отключать root-доступ:

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

Настройки для алиасов хранятся либо глобально в /etc/ssh/ssh_config, либо раздельно для пользователей в

/.ssh/config. Здесь нужно не спутать с ssh_config! Пример:

Для применения сделанных настроек необходим перезапуск SSH-сервера:

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

где user_name – имя пользователя в системе, host_name – имя узла, к которому производится подключение, например:

Утилита предложит выбрать расположение ключей (лучше всё оставить по-умолчанию), обычно это каталог

/.ssh/, ввести парольную фразу для закрытого ключа. После чего будут сгенерированы открытый ключ id_rsa.pub и закрытый — id_rsa. Теперь нужно скопировать открытый ключ, т. е. «слепок» закрытого на сервер. Проще всего этого можно добиться командой:

Теперь можно выполнить подключение командой ssh и запустить защищённый сеанс удалённого управления.
Важно заметить, что использование сгенерированных openSSH-ключей несовместимо с PPK-форматом, используемым по-умолчанию в таких комплексах как PuTTY. Поэтому необходимо конвертировать имеющиеся openSSH-ключи в формат PPK. Удобнее всего это делать с помощью утилиты PuTTY – puttygen.exe.

Если вы нашли ошибку, пожалуйста, выделите фрагмент текста и нажмите Ctrl+Enter.

Источник

Установка и настройка SSH на сервере с Ubuntu

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

В этой статье мы создадим виртуальную машину с Ubuntu 18.04 LTS 64-bit и выполним настройки для безопасного взаимодействия с сервером.

SSH (Secure Shell) — протокол с шифрованием для безопасного обмена данными между элементами ИТ-инфраструктуры. Чаще всего SSH используется для управления серверами с операционными системами семейства Linux и различным сетевым оборудованием.

Чтобы создать сервер, откроем панель управления Selectel и перейдем в меню Облачная платформа, затем выберем подходящий дата-центр и создадим нужный сервер.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

В нашем примере используется виртуальный сервер с фиксированной конфигурацией в виде 1 ядра CPU, 1 Гб оперативной памяти, 10 Гб пространства на жестком диске и операционной системой Ubuntu 18.04 LTS 64-bit.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

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

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

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

Как установить OpenSSH

OpenSSH — это бесплатный SSH-сервер, дающий возможность интерактивного управления сервером. Для установки SSH на сервер воспользуемся встроенным в Ubuntu пакетным менеджером apt:

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

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Теперь добавим SSH-сервер в автозагрузку. При следующем запуске сервера, операционная система выполнит автоматический запуск SSH-сервера. Как и в случае с другими сервисами systemd позволяет управлять параметрами запуска, автозагрузки и рестарта демона OpenSSH. Включим автозапуск:

В результате получим:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Проверим работоспособность утилиты:

И убедимся, что всё корректно работает:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Как настроить SSH

Настройка SSH на Ubuntu необходима для улучшения защищенности системы. Например, можно отключить возможность входа от имени пользователя root или изменить порт подключения со стандартного 22 на произвольный. Лучше использовать порты из верхнего диапазона (50000-65000). Напомним, что в стеке протоколов TCP/IP доступно 65536 портов.

Настройка выполняется выполняется в конфигурационном файле. Перед его модификацией, создадим резервную копию.

Вот теперь можно менять порт. Все изменения конфигурации SSH выполняются в файле /etc/ssh/sshd_config. Откроем его на редактирование:

Раскомментируем строку Port 22 и изменим значение на 55555. Но мы должны вас предостеречь, боты прежде всего сканируют порты с одинаковыми цифрами, поэтому в промышленных средах лучше использовать номер порта с отличными друг от друга цифрами.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Далее нужно отключить возможность входа на сервер учетной записи суперпользователя (root) и добавить возможность входить через ключи. Для этого изменим значения параметров PermitRootLogin на no и PubkeyAuthentication на yes:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

После этого следует перезагрузить демон SSH. Соединение при этом будет разорвано и подключиться можно будет через новый порт и пользовательскую учетную запись (она должны быть предварительно создана).

Переподключимся от обычной учетной записи и по другому порту:

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

Как создать пару ключей RSA

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

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

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Чтобы сгенерировать такую пару ключей, достаточно выполнить команду:

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

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

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

Как скопировать открытый ключ на сервер

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

В этом примере 95.213.154.235 — это IP-адрес удаленного сервера. После ввода пароля, ключ копируется папку .ssh домашней директории пользователя.

Вывод обеих команд на скриншоте ниже.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Как пройти аутентификацию на сервере через созданный ключ

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

Если подключение по SSH будет успешным — все настройки были выполнены корректно.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Как выполнить отключение аутентификации по паролю

Для отключения возможности входа по паролю необходимо в файле /etc/ssh/sshd_config отредактировать значение PasswordAuthentication и присвоить no.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

После изменения настроек перезагружаем службу SSH:

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

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

При этом подключение при помощи ключа будет успешным.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

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

Как настроить стандартный firewall

В Ubuntu есть встроенный фаервол Netfilter, который может управляться как непосредственно вызовом утилиты iptables с параметрами так и специальной утилитой UFW (Uncomplicated Firewall). Мы разберем оба варианта.

Iptables на нашем демо-стенде уже установлен, но если в вашем дистрибутиве его нет — можно воспользоваться пакетным менеджером apt:

При работе с iptables можно настроить три типа правил: INPUT — для входящих соединений, OUTPUT — для исходящих и forward для транзитных (используется для маршрутизаторов). Для сервера актуальны первые два.

При обработке пакетов возможно выполнение следующих действий: ACCEPT — разрешить прием пакета, DROP — удалить пакет, REJECT — отклонить пакет и отправил уведомление об отклонении отправителю, LOG — записать пакет в лог и QUEUE — отправить пакет приложению.

В iptables доступны следующие функции управления:

Например, чтобы посмотреть настроенные правила можно выполнить команду

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Теперь попробуем заблокировать все пакеты от узла 10.10.10.10:

При помощи комбинаций перечисленных выше опций можно настроить любую требуемую логику работы с сетевыми пакетами.

Если перечисленные выше опции показались сложными, можно упростить задачу настройки фаервола и воспользоваться утилитой ufw. Перед началом работы, установим ее при помощи пакетного менеджера apt:

После установки можно начинать работать с правилами. Разрешим все исходящие соединения и запретим все входящие:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

В примерах выше мы меняли порт для доступа по SSH на 55555. Создадим правило для доступа по этому порту:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Теперь включим сам фаервол.

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

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

После включения фаервола, проверим его настройки командой:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Дополнительно можно настроить доступ с определенного IP-адреса (или диапазона адресов), на определенный порт.

При помощи правил UFW можно также применять правила к определенным сетевым интерфейсам сервера.

Как настройки подключения по SSH влияют на безопасность

В этом разделе разберем основные настройки для повышения уровня безопасности SSH. Все настройки выполняются в уже известном конфигурационном файле /etc/ssh/sshd_config.

Первая настройка — проверка соответствия DNS-имени IP-адресу клиента. За это отвечает параметр UseDNS.

Следующий шаг к безопасности — запрет пустых паролей. Задается в параметре PermitEmptyPasswords.

Дополнительно можно ограничить количество неудачных попыток подключения:

Еще один подход к ограничению несанкционированных подключений — задание пользователей и групп, которым разрешен доступ по SSH. Они перечисляются в параметрах AllowUsers и AllowGroups.

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

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

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

Нельзя не упомянуть про эффективный инструмент борьбы с попытками аутентификации — утилите fail2ban. Это сервис, который читает лог безопасности и блокирует злоумышленников по IP. Штатно устанавливается при помощи apt:

После установки появляются два конфигурационных файла: /etc/fail2ban/fail2ban.conf и /etc/fail2ban/jail.conf. Первый отвечает за настройки запуска fail2ban, а второй за настройки защиты конкретных сервисов.

Заключение

Мы рассказали об основных настройках протокола SSH, которые помогут уберечь Ubuntu-сервер от несанкционированного доступа. Особенно важно их использовать при расположении сервера в публичных облаках с публичным IP-адресом. На скриншоте ниже вы видите журнал безопасности системы, на которой мы проводили перечисленные в этой статье настройки. В нем видно, что попытки авторизаций под разными пользователями (root, system и другими) происходят регулярно.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Перечисленных в этой статье настроек достаточно для обеспечения базовой безопасности сервера и предотвращения его вовлечения в бот-сети.

Источник

Установка SSH в Ubuntu

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

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

Что такое SSH?

За поддержку протокола SSH в Linux отвечает набор программного обеспечения OpenSSH. Это открытая реализация этого протокола, которая предоставляет все необходимые возможности. В состав пакета OpenSSH входят утилиты для установки соединения, передачи файлов, а также сам ssh сервер.

Установка OpenSSH в Ubuntu

Установить SSH на Ubuntu будет очень просто, программа считается стандартной и используется почти везде. Хотя по умолчанию в дистрибутиве её нет, но зато она есть в официальных репозиториях.

Поэтому для установки откройте терминал с помощью сочетания клавиш Ctrl+Alt+T и выполните команду:

sudo apt install openssh-server

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Будет загружено несколько пакетов, а когда установка ssh сервера Ubuntu завершится, программа будет готова к работе. Если вы хотите чтобы служба запускалась автоматически нужно добавить его в автозагрузку. Поэтому чтобы включить SSH в Ubuntu 20.04 выполните:

sudo systemctl enable sshd

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Если затем вы захотите удалить службу из автозагрузки, используйте команду disable:

sudo systemctl disable sshd

Что касается клиента ssh, то он уже установлен в системе по умолчанию. Сейчас вы можете попробовать подключиться к локальному ssh серверу просто набрав:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

В одной из предыдущих статей мы рассматривали что означает адрес 0.0.0.0, сейчас вы можете убедиться что в пределах этой машины он значит локальный адрес:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Точно таким способом вы можете получить ssh доступ ubuntu к любому другому компьютеру из сети. Для этого достаточно указать вместо localhost его ip адрес и имя пользователя в таком формате:

$ ssh имя_пользователя @ ip_адрес

Настройка SSH в Ubuntu

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

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

sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.factory-defaults

Дальше вы можете перейти к настройке конфигурационного файла:

sudo vi /etc/ssh/sshd_config

Первым делом желательно сменить порт, на котором работает ssh, возможный злоумышленник не знал включен ли у вас этот сервис. Найдите в конфигурационном файле строчку Port и замените ее значение на любое число, например, Port 2222:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

По умолчанию вход от имени суперпользователя включен, рекомендуется отключить такую возможность. Для этого найдите строчку PermitRootLogin и замените ее значение на no:

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

Чтобы разрешить аутентификацию по ключу, а не по паролю найдите строку PubkeyAuthentication и убедитесь, что ее значение yes.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

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

sudo systemctl restart ssh

Более подробно про настройку и использование различных тонкостей ssh рассказано в статье как использовать ssh.

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

К тому же, если на компьютере установлен и настроен брандмауэр, то в нем тоже нужно разрешить доступ к новому порту ssh, для этого выполните:

sudo ufw allow 2222

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

Настройка ssh Ubuntu 20.04 полностью завершена.

Выводы

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

На завершение видео, где подробно рассказано о том, что такое SSH:

Источник

Настройте сервер OpenSSH в Linux с максимальной безопасностью

Другими фундаментальными характеристиками SSH являются то, что он позволяет нам: безопасно копировать данные, как файлы, так и папки, по протоколу SFTP (SSH FTP), протокол, созданный с нуля и не имеющий ничего общего с FTPS или FTPES (FTP через SSL / TLS). Протокол SSH необходим в области сетей и систем, кроме того, мы можем детально настроить его, чтобы обеспечить нашей системе максимально возможную безопасность.

как сделать ssh сервер на linux. Смотреть фото как сделать ssh сервер на linux. Смотреть картинку как сделать ssh сервер на linux. Картинка про как сделать ssh сервер на linux. Фото как сделать ssh сервер на linux

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

В этом руководстве, которое мы представляем сегодня, мы научим вас настраивать SSH-сервер OpenSSH, программу, доступную для операционных систем на базе Unix и Linux, такие как FreeBSD, OpenBSD, Debian, Red Hat Enterprise Linux и многие другие дистрибутивы. В этом руководстве мы не только научимся правильно настраивать файл конфигурации sshd_config, но также будем использовать дополнительные программы для обеспечения максимально возможной безопасности системы. В этом руководстве все настройки будут выполняться с помощью Debian, однако все меры безопасности могут быть реализованы в любой операционной системе на основе Linux и Unix.

Установка и запуск OpenSSH

sudo apt install openssh-server

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

Чтобы отредактировать конфигурация SSH-сервера мы должны сделать в консоли:

sudo nano /etc/ssh/sshd_config

Этот каталог по умолчанию скрыт (.ssh), и для каждого пользователя операционной системы есть каталог, который подключается к удаленному серверу.

Чтобы запустить сервер:

sudo /etc/init.d/ssh start

Чтобы остановить сервер:

sudo /etc/init.d/ssh stop

Чтобы перезапустить сервер:

sudo /etc/init.d/ssh restart

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

Конфигурация sshd_config для максимальной безопасности

Измените порт по умолчанию для SSH-сервера

Блокировать root-доступ для удаленных подключений

По умолчанию любой пользователь операционной системы, имеющий разрешения Shell, сможет войти на сервер. Кроме того, мы должны помнить, что если у нас активирован пользователь root, он также сможет подключаться к серверу локально или удаленно, избегая того, чтобы злоумышленник «угадывал» имя пользователя. По умолчанию боты всегда пытаются атаковать порт 22 и пользователя «root».

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

Дополнительные настройки безопасности

Например, файл конфигурации для sshd_config будет следующим:

Port 22445
PermitRootLogin no
LoginGraceTime 30
MaxAuthTries 3
MaxStartups 3
AllowUsers sergio sergio2
DenyUsers adrian adrian2

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

KexAlgorithms curve25519-sha256@libssh.org,ecdh-sha2-nistp521,ecdh-sha2-nistp384,ecdh-sha2-nistp256,diffie-hellman-group-exchange-sha256 Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com,aes128-gcm@openssh.com,aes256-ctr,aes192-ctr,aes128-ctr MACs hmac-sha2-512-etm@openssh.com,hmac-sha2-256-etm@openssh.com,umac-128-etm@openssh.com,hmac-sha2-512,hmac-sha2-256,umac-128@openssh.com

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

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

HostKey /etc/ssh/ssh_host_ed25519_key
HostKey /etc/ssh/ssh_host_rsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key

Чтобы сгенерировать новые 4096-битные ключи RSA, нам просто нужно выполнить следующую команду:

Если мы хотим сгенерировать новые ключи ECDSA (с максимальной длиной 512 бит) или ED25519, нам нужно будет ввести следующие команды:

Аутентификация в SSH: все режимы подробно описаны

В этом разделе мы собираемся показать вам различные методы аутентификации, доступные на сервере. Обычно у нас есть в основном два метода: имя пользователя и пароль (что-то, что мы знаем), а также с криптографическими ключами (что-то, что у нас есть). Однако мы можем обеспечить системе дополнительную безопасность, объединив эти аутентификации, например, с одноразовым паролем, сгенерированным таким приложением, как Google Authenticator или Latch OTP. Кроме того, мы также можем предоставить систему защелки, чтобы предотвратить вход любого пользователя в систему, если у нас не открыта «защелка».

Пользователь и пароль

Это предложение касается всех пользователей системы. Чтобы не остаться без доступа к серверу, мы должны убедиться, что PubkeyАутентификация для оператора установлено значение «да», чтобы разрешить вход с криптографическими ключами.

Открытый ключ SSH

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

На компьютере, на котором мы хотим подключиться к серверу с криптографическими ключами, мы должны создать эти ключи и передать их серверу. Чтобы создать ключи RSA длиной 4096 бит, мы должны ввести следующую команду в SSH-клиенте:

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

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

The authenticity of host ‘12.34.56.78 (12.34.56.78)’ can’t be established.
RSA key fingerprint is b1:2d:33:67:ce:35:4d:5f:f3:a8:cd:c0:c4:48:86:12.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added ‘12.34.56.78’ (RSA) to the list of known hosts.
user@12.34.56.78’s password:
Now try logging into the machine, with «ssh ‘user@12.34.56.78′», and check in:

/.ssh/authorized_keys
to make sure we haven’t added extra keys that you weren’t expecting.

В этих выходных данных пользователь должен подтвердить, что он хочет добавить удостоверение, и ввести учетные данные для входа в учетную запись, которую он хочет использовать в этой службе. По этой причине важно, чтобы мы по-прежнему поддерживали возможность аутентификации с использованием имени пользователя / пароля на сервере. Как только этот процесс будет завершен, мы сможем войти в систему на этом компьютере без ввода пароля:

Не забудьте установить директиву «PasswordAuthentication no», чтобы не разрешать доступ через имя пользователя и пароль.

Имя пользователя и пароль с одноразовым паролем (Google Authenticator или Latch OTP)

В этой части руководства мы собираемся аутентифицироваться с обычным именем пользователя / паролем, но также мы должны использовать OTP с Google Authenticator или Latch OTP для входа в сеанс. То есть мы предоставим SSH-серверу двухэтапную проверку.

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

sudo apt install libpam0g-dev make gcc wget ssh

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

sudo apt install libpam-google-authenticator

Чтобы начать настройку Google Authenticator, нам просто нужно ввести в терминал:

ПРИМЕЧАНИЕ. Запустите его без прав суперпользователя (sudo), то есть запустите его от имени «обычного» пользователя. Если вы запустите его как root, этот Google Auth будет доступен только в самом root, и его отключение в SSH ничего не даст.

Затем мы говорим ему сохранить изменения в файле в нашей папке / home, и он спросит нас, хотим ли мы, чтобы каждый токен использовался только один раз, даже если это ограничивает вход в систему каждые 30 секунд. Чтобы защитить себя от возможных атак MITM, мы выбираем да. Наконец, он спросит нас, хотим ли мы продлить срок действия каждого кода вместо 1 минуты 30 секунд (чтобы избежать проблем с синхронизацией времени). Чтобы избежать атак грубой силы, мы также можем ограничить количество подключений до 3 на каждые 30 секунд.

Сканирование QR-кода или ввод кода вручную можно выполнить в таких программах, как Google Authenticator, Authy, Latch и т. Д. Мы рекомендуем использовать Google Authenticator или Latch.

Следующим шагом, который мы должны сделать, является открытие файла конфигурации «sshd», чтобы указать ему использовать этот модуль для входа в систему. Для этого мы можем сделать «clear», чтобы очистить терминал и ввести его:

sudo nano /etc/pam.d/sshd

И мы добавим в конец файла следующую строку:

auth required pam_google_authenticator.so

Сохраняем изменения и открываем файл sshd_config следующей командой:

sudo nano /etc/ssh/sshd_config

И мы меняем строку «ChallengeResponseAuthentication no» на «ChallengeResponseAuthentication yes».

Мы перезапускаем сервер с помощью «sudo /etc/init.d/ssh restart», и как только он запустится снова, у нас будет включена двухэтапная аутентификация.

Открытый ключ SSH с одноразовым паролем (Google Authenticator или Latch OTP)

Конфигурация на уровне открытого ключа должна быть такой же, как и раньше, а также на уровне установки и конфигурации Google Authenticator. Единственная разница в том, что в sshd_config файл у нас должен быть примерно такой:

PasswordAuthentication no
ChallengeResponseAuthentication yes
PubKeyAuthentication yes
UsePAM yes
AuthenticationMethods publickey,keyboard-interactive

А в файле /etc/pam.d/sshd у нас должно быть что-то вроде этого:

#@include common-auth
auth required pam_google_authenticator.so

Очень важно поставить знак решетки (#), чтобы прокомментировать @include, таким образом, мы будем правильно аутентифицироваться с помощью открытого ключа и кода OTP, сгенерированного мобильным телефоном. Таким образом, мы сообщим серверу принимать только аутентификацию с открытым ключом.

Конфигурация защелки в OpenSSH и позже выберите метод аутентификации

Дополнительные меры безопасности: межсетевой экран, блокировка портов, fail2ban и DenyHosts.

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

Конфигурация межсетевого экрана iptables для защиты SSH

Брандмауэр iptables, включенный в большинство систем на базе Linux, позволит нам ограничить количество одновременных подключений к нашему серверу, а также мы сможем использовать специальный модуль под названием «недавний» для сохранения всех из них в базе данных. попытки подключения, идеально подходят для предотвращения атак грубой силы.

Ограничить количество одновременных подключений в iptables

Если злоумышленник пытается подключиться несколько раз с одного и того же IP-адреса, мы можем ограничить это количество подключений, чтобы смягчить его атаку. Это не пресекает возможную атаку в зародыше, но смягчает ее с двумя целями: не иметь большой памяти и CPU / ЦЕНТРАЛЬНЫЙ ПРОЦЕССОР потребление на компьютере путем открытия нескольких подключений SSH, задерживая возможную атаку методом грубой силы, открывая несколько подключений.

Этот оператор ПРИНИМАЕТ до 5 подключений, которые происходят с одного и того же общедоступного IP-адреса, шестое подключение мы блокируем. Если у нас несколько сетевых интерфейсов, мы должны использовать «-i», чтобы установить интерфейс, для которого мы применяем это правило, если мы ничего не укажем, оно будет применяться ко всем из них.

Настройте последний модуль для предотвращения атак методом грубой силы на службу SSH.

Последний модуль служит для ограничения количества подключений в секунду на уровне IP, это идеально для защиты нас от атак на порт SSH, потому что злоумышленник попытается ввести несколько паролей. В следующем примере мы зарегистрируем все подключения к TCP-порту назначения 22445 в базе данных и зарегистрируем источник этих подключений (общедоступный IP-адрес возможного злоумышленника).

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

Этот модуль отличается от предыдущего тем, что проверяет эти соединения по времени. Обычно для защиты службы SSH лучше использовать этот последний модуль, чем предыдущий.

Port-Knocking, чтобы «скрыть» службу SSH

sudo apt-get install knockd

После установки мы должны включить его, отредактировав:

sudo nano /etc/default/knockd

И положив: START_KNOCKD = 1

Далее запускаем сервис:

sudo service knockd start

Файл конфигурации knockd находится в /etc/knockd.conf

Мы должны редактировать его любым файловым редактором, с необходимыми правами root. Файл будет выглядеть так:

А чтобы «открыть» порт службы SSH, надо в консоли поставить «стук IP_address 7000 8000 9000». После того, как мы использовали службу, мы можем закрыть ее с помощью оператора, который мы ранее поместили в файл конфигурации, это не обязательно должно быть наоборот (это зависит от того, как вы настроили файл выше).

Таким образом, когда мы покидаем сервер, нам не нужно будет «закрывать» дверь, как в предыдущем случае, поскольку она была открыта всего 10 секунд.

Fail2ban для смягчения атак методом грубой силы на SSH

Мы также можем установить программу fail2ban для запрета IP-адресов, которые делают много неудачных попыток подключения (с неправильным паролем). Эта программа хорошо известна и используется, так как ее очень легко настроить и запустить. Мы можем установить его, поставив

sudo apt install fail2ban

sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

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

sudo nano /etc/fail2ban/jail.d/sshjail.local

[sshd] enabled = true
port = 22445
bantime = 3600
findtime = 600
filter = sshd
maxretry = 3

И мы запускаем его, останавливаем и перезапускаем, как если бы это был SSH, в данном случае start = start:

sudo /etc/init.d/fail2ban restart

Чтобы увидеть ЖУРНАЛЫ соединений, вам нужно будет посмотреть путь /var/log/auth.log, а чтобы увидеть журналы fail2ban, вы должны посмотреть их здесь: /var/log/fail2ban.log

DenyHosts: как fail2ban, но специально ориентированный на SSH

У нас также есть еще одна программа, предназначенная исключительно для SSH, она называется DenyHost и имеет большую базу данных IP-адресов, известных как злоумышленники. Это еще одно решение для возможных атак, если у нас всегда есть наш SSH-сервер, подключенный к Интернету. DenyHosts работает так же, как fail2ban, он просматривает журналы подключений, чтобы определить, сталкиваемся ли мы с атакой грубой силы, а также проверяет базы данных IP, чтобы определить, являются ли они ботнетами.

Для установки этой программы нам нужно будет сделать это из официальных репозиториев, мы предполагаем, что в /etc/apt/source.list:

sudo apt install denyhosts

Первая часть настройки выполняется в пути /etc/hosts.allow, здесь нам нужно будет поместить белый список с нашими компьютерами, чтобы он никогда не блокировал нас, это важно, чтобы не блокировать себя через брандмауэр, особенно если вы используете удаленный сервер, этот шаг действительно важен.

sudo nano /etc/hosts.allow

Вам следует использовать следующий синтаксис:

Например, при этом вы разрешите три исходных IP-адреса:

Мы сохраняем, чтобы применить изменения, и теперь нам нужно будет отредактировать глобальный файл конфигурации DenyHosts:

sudo nano /etc/denyhosts.conf

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

Pam_tally2: еще одна настоятельно рекомендуемая альтернатива

Этот инструмент также очень похож на предыдущие, он выполняет точно такую ​​же функцию: управлять неудачными попытками на SSH-сервере. Эта программа позволит нам подсчитывать попытки доступа разных пользователей с соответствующими исходными IP-адресами. Если будет слишком много неудачных попыток входа в систему, им автоматически будет отказано в доступе через брандмауэр. Этот инструмент состоит из двух частей: pam_tally2.so, который является модулем PAM, который мы можем настроить в нашей операционной системе Linux, и у нас также будет pam_tally2, который является самой программой.

Наконец, SSHGuard Программа также настоятельно рекомендуется для адекватной защиты нашего SSH-сервера от попыток вторжения.

Как проверить безопасность моего SSH-сервера

Сегодня у нас есть несколько инструментов для проверки безопасности нашего сервера OpenSSH, который мы только что настроили, эти программы будут отвечать за анализ конфигурации сервера, устанавливая соединения с сервером, чтобы обнаружить какой-либо тип неправильной или небезопасной конфигурации. Некоторые из наиболее рекомендуемых программ: Rebex SSH Проверить который настоятельно рекомендуется онлайн-сканер, кроме того, у нас также есть SSH-аудит это инструмент, который устанавливается локально, где SSH-сервер должен проверять безопасность сервера.

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

Источник

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *