Как получить доступ к домашнему SSH-серверу извне через Интернет?

Вопрос или проблема

Я использую сервер Ubuntu 20.04, и внезапно у меня возникает тайм-аут операции. Интересно, как я могу устранить эту проблему.

Я использую ufw, и порт подключения открыт. Поэтому, когда я использую sudo ufw status, он показывает, что порт доступен.

Когда я запускаю systemctl status sshd, я вижу, что процесс активен и что sshd слушает на порту 0.0.0.0 xx и :: порт xx.

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

Редактировать: Я могу подключаться к серверу в локальной сети, но не снаружи. Может ли быть так, что ssh блокируется из интернета, но не в локальной сети?

Предупреждение

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

Меры безопасности

Эти меры безопасности специально предназначены для предотвращения несанкционированного доступа по ssh.

Имена пользователей, пароли и ключи

Хакеры часто пытаются использовать известные имена пользователей (такие как root, admin и т.д.) и пароли, чтобы получить доступ к вашему компьютеру. Доступ к аккаунту root по умолчанию отключен в Ubuntu. Не включайте этот аккаунт.

Используйте случайно сгенерированный уникальный (не использующийся для других аккаунтов, особенно онлайн-аккаунтов) и длинный пароль.

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

Фильтр IP-адресов

Если вы планируете использовать ssh для доступа к домашнему компьютеру только из одного места, например, с работы, настройте правила брандмауэра так, чтобы разрешались только (диапазон) IP-адресов, используемые вашим рабочим местом.

Fail2Ban

Ограничьте частые попытки входа и забаньте эти IP-адреса.

Настройка собственного VPN

Настройка VPN-сервера в вашей домашней сети является альтернативой прямому доступу по ssh из интернета. VPN более универсальный и безопасный метод. Однако, его сложнее настраивать. Если конфигурация VPN использует аутентификацию с использованием имени пользователя и пароля, вышеупомянутые замечания о легкости угадывания имен и паролей также остаются в силе.

Настройка портов

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

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

Настройка роутера

Убедитесь, что порт 22 перенаправлен на внутренний IP-адрес сервера Ubuntu в домашнем роутере. Это позволит любому человеку снаружи домашней сети использовать ssh для подключения к вашим домашним компьютерам.

Инструкции зависят от роутера и выходят за рамки данного ответа, так как они не имеют отношения к Ubuntu.

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

введите описание изображения здесь

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

Если вы изменили порт по умолчанию в /etc/ssh/sshd_config, вы должны будете установить указанный выше внутренний порт на этот порт вместо порта 22.

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

Вот еще одно руководство по переадресации портов для справки.

Надеюсь, это поможет.

Ответ или решение

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

Теория

SSH (Secure Shell) — это сетьевой протокол, который позволяет безопасно управлять удаленными серверами через интернет. Проблема, частично описанная в вопросе, связана с необходимостью обеспечить доступ к серверу, работающему на Ubuntu 20.04, из внешней сети, т. е. не из вашей локальной сети. Основные элементы, которые необходимо учесть, включают:

  1. Заведение белого списка IP-адресов: Если вы знаете, откуда будут поступать запросы, рекомендуется разрешить доступ только с определенных IP-адресов.

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

  3. Настройка безопасности: Т.к. открытие SSH-доступа увеличивает риск несанкционированного доступа, необходимо предпринять меры безопасности, такие как использование ключевой аутентификации вместо пароля и установка Fail2Ban для предотвращения брутфорс-атак.

Пример

Допустим, у вас есть Ubuntu-сервер, IP-адрес которого в локальной сети — 192.168.1.10. Вы хотите, чтобы SSH-соединение через порт 22 было доступно извне. Вот как это обычно реализуется:

  1. Проверка UFW и SSHD:

    • Убедитесь, что SSH доступен и работает на сервере. Команды:
      sudo ufw status
      systemctl status sshd
    • SSHD должен быть активен и слушать порт 22 (или другой, если вы изменили настройки по умолчанию).
  2. Настройка роутера:

    • В веб-интерфейсе вашего роутера найдите раздел, отвечающий за настройки NAT или перенаправление портов.
    • Добавьте правило для перенаправления внешнего порта 22 на IP-адрес 192.168.1.10 и порт 22 в локальной сети.
  3. Безопасность:

    • Отключение рут-доступа: Убедитесь, что вход для root-пользователя через SSH запрещен (настройка в /etc/ssh/sshd_config: PermitRootLogin no).
    • Ключевая аутентификация: Настройте аутентификацию по SSH-ключам и отключите парольный вход (PasswordAuthentication no).
    • Fail2Ban: Установите и настройте Fail2Ban для блокировки IP-адресов после нескольких неудачных попыток входа.

Применение

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

ssh -p [ваш_внешний_порт] [ваш_логин]@[внешний_IP]

где [ваш_внешний_порт] — порт, который вы перенаправили, а [внешний_IP] — IP-адрес вашего домашнего роутера.

Возможные проблемы:

  • Динамический IP: Если ваш провайдер предоставляет динамический IP, может потребоваться использовать DDNS-сервис для простоты подключения.
  • Порты и брандмауэр: Убедитесь, что все ошибки в настройках UFW устранены, и не забывайте проверять наличие других систем безопасности, которые могут блокировать соединение.

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

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

Капча загружается...