+7 (495) 107-75-45 Подключение
+7 (495) 107-75-47 Тех. поддержка 24/7
Пример
28.09.2024

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

Оглавление:

  1. Обзор Debian и выбор дистрибутива
  2. Установка Debian
  3. Настройка сети в консоли Debian
  4. Настройка SUDO
  5. Установка и настройка межсетевого экрана UFW
  6. Установка SSH на Debian

История появления SSH

SSH (Secure Shell) был разработан в 1995 году финским программистом Тату Юлоненом в ответ на проблемы безопасности, которые возникли в связи с использованием Telnet и других небезопасных протоколов удалённого доступа. В 90-х годах большинство соединений между клиентом и сервером передавались в открытом виде, что позволяло злоумышленникам легко перехватывать данные, включая пароли и другую конфиденциальную информацию. SSH решает эту проблему, шифруя весь трафик, передаваемый между пользователем и сервером, обеспечивая тем самым безопасность удалённых соединений.

Почему используют SSH?

SSH стал стандартом для удалённого доступа по нескольким причинам:

  1. Безопасность: В отличие от Telnet, SSH шифрует трафик, что предотвращает перехват данных.
  2. Аутентификация: SSH поддерживает несколько способов аутентификации, включая пароли, а также использование ключевых пар для более высокой безопасности.
  3. Туннелирование: SSH позволяет не только подключаться к удалённым машинам, но и безопасно передавать данные через шифрованные туннели, например, для пересылки портов или выполнения зашифрованного трафика через небезопасные сети.
  4. Универсальность: SSH используется для множества задач, таких как удалённое администрирование серверов, безопасная передача файлов, управление сетевыми устройствами и многое другое.

Безопасность SSH

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

Возможные способы взлома:

  1. Атаки грубой силы (Brute Force): Злоумышленник пытается перебрать пароли или ключи для доступа к системе. Чтобы защититься от этого, рекомендуется использовать сложные пароли и ограничить количество попыток входа.
  2. Использование устаревших протоколов и алгоритмов шифрования: Старые версии SSH или уязвимые криптографические алгоритмы могут быть эксплуатированы злоумышленниками. Рекомендуется использовать только современные и проверенные алгоритмы.
  3. Фишинг: Злоумышленник может попытаться обманом заставить пользователя ввести свои SSH-данные на поддельной странице.
  4. Межсайтовая подделка запросов (Man-in-the-Middle): В некоторых случаях злоумышленники могут попытаться перехватить трафик между клиентом и сервером. Однако использование сертификатов и ключевых пар для аутентификации помогает защититься от таких атак.

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

Установка SSH

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

Обновляем список пакетов:

sudo apt update

Устанавливаем пакет openssh-server, который предоставляет SSH-сервер:

sudo apt install openssh-server

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

sudo systemctl status ssh

Если всё установлено правильно, вы увидите сообщение о том, что SSH-сервер работает.

Настройка SSH

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

Изменение порта по умолчанию: По умолчанию SSH использует порт 22. Для повышения безопасности рекомендуется изменить порт на менее очевидный:

Port 2222

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

sudo systemctl restart ssh

Запрещение входа под пользователем root: Для защиты от атак рекомендуется запретить вход для root-пользователя:

PermitRootLogin no

Использование ключевой аутентификации: Для дополнительной безопасности можно настроить аутентификацию с использованием ключей. Генерация ключей выполняется на клиенте:

ssh-keygen -t rsa -b 4096

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

ssh-copy-id user@server_ip

Если кому то стало не понятно. Ниже я покажу подробную настройку SSH и генерацию ключей с использованием Putty.

Ограничение доступа по IP-адресам: Можно настроить доступ только для определённых IP-адресов, добавив соответствующие строки в файл конфигурации.

Защита от атак грубой силы

Для дополнительной защиты можно установить утилиту fail2ban, которая блокирует IP-адреса после нескольких неудачных попыток входа:

sudo apt install fail2ban

После установки fail2ban автоматически начнёт следить за попытками входа через SSH и блокировать подозрительные IP-адреса.

Проверка и управление службой SSH

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

  • Проверить статус:
sudo systemctl status ssh

Настройка Fail2ban для SSH

Конфигурационные файлы Fail2ban находятся в директории /etc/fail2ban. Мы будем редактировать файл, в котором настраиваются параметры блокировки для SSH.

  1. Создание файла конфигурации
    По умолчанию настройки Fail2ban определяются в файле /etc/fail2ban/jail.conf, но его не рекомендуется редактировать напрямую, так как обновления пакетов могут перезаписать этот файл. Лучше создать копию этого файла и работать с ней.Создадим файл /etc/fail2ban/jail.local:
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local

Изменение настроек для SSH
Откроем файл /etc/fail2ban/jail.local в текстовом редакторе:

sudo nano /etc/fail2ban/jail.local

sudo nano /etc/fail2ban/jail.local

Найдите и измените секцию, которая относится к SSH. Обычно она выглядит так:

[sshd]
enabled  = true
port     = ssh
logpath  = /var/log/auth.log
maxretry = 5
  • enabled = true — активирует Jail (правила) для SSH.
  • port = ssh — порт, который используется для SSH. Если вы изменили порт SSH на нестандартный (например, 2222), укажите это в конфигурации:
port = 2222
    • logpath = /var/log/auth.log — путь к файлу логов, где записываются попытки авторизации через SSH.
    • maxretry = 5 — максимальное количество неудачных попыток входа, после которого IP-адрес будет заблокирован.
  • Настройка параметров блокировки
    В той же секции можно настроить следующие параметры:

    • bantime = 600 — время (в секундах), на которое блокируется IP после превышения лимита неудачных попыток. По умолчанию это 10 минут (600 секунд). Если хотите заблокировать IP на более длительное время, например на час:
bantime = 3600
    • findtime = 600 — время (в секундах), в течение которого Fail2ban будет учитывать неудачные попытки входа. Например, если 5 неудачных попыток были сделаны в течение 10 минут (600 секунд), IP будет заблокирован.
    • maxretry = 5 — количество неудачных попыток входа, после которого IP будет заблокирован. Можно уменьшить это значение для более строгих мер.
  • Игнорирование “белых” IP-адресов
    Чтобы предотвратить блокировку своего IP или IP других доверенных источников, можно добавить их в “белый список”:
ignoreip = 127.0.0.1/8 ::1 192.168.1.0/24
  1. ы можете указать здесь свой IP-адрес или диапазон IP, которые не будут блокироваться.

Шаг 3: Перезапуск Fail2ban

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

sudo systemctl restart fail2ban

Проверка работы Fail2ban

Чтобы проверить, что Fail2ban работает правильно и защищает SSH, можно использовать несколько команд:

Просмотр активных “jail” (правил):

sudo fail2ban-client status
  • Вы увидите список активных jail. Если SSH включён, в списке будет sshd.
  • Просмотр статуса конкретного jail:
sudo fail2ban-client status sshd
  • Это покажет подробную информацию о количестве заблокированных IP-адресов и текущих правилах для SSH.
  • Ручное добавление IP в чёрный список: Если вам нужно вручную заблокировать IP, используйте команду:
sudo fail2ban-client set sshd banip <IP-адрес>

Ручное удаление IP из бана: Если IP был ошибочно заблокирован, его можно разблокировать:

sudo fail2ban-client set sshd unbanip <IP-адрес>

 И так теорию мы разобрали. Перейдем к практике:

Для начала хочу сказать, что я переустановил Debian который мы ставили в предыдущих статьях и поменял ему ip адрес.

ip адрес

Он у нас стал более привычным для вас: 192.168.1.134

Так как в предыдущих статьях, при установке Debian мы уже выбрали установку пакета ssh. То дополнительно ставить нам его не нужно.

И так откроем файл для редактирования.

nano /etc/ssh/sshd_config

Открываем файл для редактирования

Редактируем подчеркнутые параметры:

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

Здесь мы дали доступ Root до shh. В реальном сервере лучше поставить no. Что бы только sudo user имел доступ до консоли.

Даем доступ root

Даем доступ по паролю.

Сохраняем конфигурацию. Ctrl + Х

Перезапускаем SSH

service sshd restart

Пробуем подключиться:

Подключение по ssh

Адрес нашего сервера 192.168.1.134 и порт 2222

Подключились по ssh

Водим логин: root и наш пароль.

Входим в систему

На этом в принципе все. При условии, если сервер стоит внутри локальной сети, но если он стоит на VPS или имеет выход в интернет, то нам обязательно нужно сделать аутентификацию по ключу. Не забываем добавить в UFW порт 2222

Запускаем Putty Generator

Key Generator

Нажимаем кнопочку Generate и водим мышкой, пока ключ не будет сгенерирован.

Водим мышкой

Ключ готов.

Ключ готов

Жмем Save Private Key и сохраняем его в укромное место.

Сохраняем ключ

Копируем в буфер обмена все что находится в Public Key

Public Key

Да, совсем забыл. Для удобства администрирования, поставим MC (midnight commander)

apt install mc

Ну и запустим его командой mc

Теперь мы можем более удобно перемещаться по каталогам.

mc

Создадим файл в папке /root/ssh/authorized_keys

nano /root/ssh/authorized_keys

Вставим в него все что скопировали выше из Public Key

Вставляем ключ

Сохраняемся

Посмотрим и отредактируем наш файл ssh

/etc/ssh/sshd_config

раскомментируем строчки:

PubkeyAuthentication yes

AuthorizedKeysFile      .ssh/authorized_keys .ssh/authorized_keys2

Настройка ключа

Сохраняемся.

Перезапустим ssh

service sshd restart

Вставляем наш ключ в Putty

Вставляем ключ

Пробуем подключиться:

Подключились по ключу

Видим, что мы подключились по ключу. Для входа напишите только логин: root

Теперь нам осталось отключить авторизацию по паролю.

nano /etc/ssh/sshd_config

Комментируем строчку

Сохраняемся, не забываем перезапустить ssh сервер

service sshd restart

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

Оглавление:

  1. Обзор Debian и выбор дистрибутива
  2. Установка Debian
  3. Настройка сети в консоли Debian
  4. Настройка SUDO
  5. Установка и настройка межсетевого экрана UFW
  6. Установка SSH на Debian