Установка SSH на Debian
Оглавление:
- Обзор Debian и выбор дистрибутива
- Установка Debian
- Настройка сети в консоли Debian
- Настройка SUDO
- Установка и настройка межсетевого экрана UFW
- Установка SSH на Debian
История появления SSH
SSH (Secure Shell) был разработан в 1995 году финским программистом Тату Юлоненом в ответ на проблемы безопасности, которые возникли в связи с использованием Telnet и других небезопасных протоколов удалённого доступа. В 90-х годах большинство соединений между клиентом и сервером передавались в открытом виде, что позволяло злоумышленникам легко перехватывать данные, включая пароли и другую конфиденциальную информацию. SSH решает эту проблему, шифруя весь трафик, передаваемый между пользователем и сервером, обеспечивая тем самым безопасность удалённых соединений.
Почему используют SSH?
SSH стал стандартом для удалённого доступа по нескольким причинам:
- Безопасность: В отличие от Telnet, SSH шифрует трафик, что предотвращает перехват данных.
- Аутентификация: SSH поддерживает несколько способов аутентификации, включая пароли, а также использование ключевых пар для более высокой безопасности.
- Туннелирование: SSH позволяет не только подключаться к удалённым машинам, но и безопасно передавать данные через шифрованные туннели, например, для пересылки портов или выполнения зашифрованного трафика через небезопасные сети.
- Универсальность: SSH используется для множества задач, таких как удалённое администрирование серверов, безопасная передача файлов, управление сетевыми устройствами и многое другое.
Безопасность SSH
Безопасность SSH основана на криптографических алгоритмах, которые защищают данные от перехвата и модификации. Однако, несмотря на высокую степень безопасности, существует несколько способов, с помощью которых злоумышленники могут попытаться взломать SSH:
Возможные способы взлома:
- Атаки грубой силы (Brute Force): Злоумышленник пытается перебрать пароли или ключи для доступа к системе. Чтобы защититься от этого, рекомендуется использовать сложные пароли и ограничить количество попыток входа.
- Использование устаревших протоколов и алгоритмов шифрования: Старые версии SSH или уязвимые криптографические алгоритмы могут быть эксплуатированы злоумышленниками. Рекомендуется использовать только современные и проверенные алгоритмы.
- Фишинг: Злоумышленник может попытаться обманом заставить пользователя ввести свои SSH-данные на поддельной странице.
- Межсайтовая подделка запросов (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.
- Создание файла конфигурации
По умолчанию настройки 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
- ы можете указать здесь свой 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 адрес.
Он у нас стал более привычным для вас: 192.168.1.134
Так как в предыдущих статьях, при установке Debian мы уже выбрали установку пакета ssh. То дополнительно ставить нам его не нужно.
И так откроем файл для редактирования.
nano /etc/ssh/sshd_config
Редактируем подчеркнутые параметры:
Здесь мы дали доступ Root до shh. В реальном сервере лучше поставить no. Что бы только sudo user имел доступ до консоли.
Даем доступ по паролю.
Сохраняем конфигурацию. Ctrl + Х
Перезапускаем SSH
service sshd restart
Пробуем подключиться:
Адрес нашего сервера 192.168.1.134 и порт 2222
Водим логин: root и наш пароль.
На этом в принципе все. При условии, если сервер стоит внутри локальной сети, но если он стоит на VPS или имеет выход в интернет, то нам обязательно нужно сделать аутентификацию по ключу. Не забываем добавить в UFW порт 2222
Запускаем Putty Generator
Нажимаем кнопочку Generate и водим мышкой, пока ключ не будет сгенерирован.
Ключ готов.
Жмем Save Private Key и сохраняем его в укромное место.
Копируем в буфер обмена все что находится в Public Key
Да, совсем забыл. Для удобства администрирования, поставим MC (midnight commander)
apt install 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
И проверяем подключение по новой. На этом все.
Оглавление: