October 7

Защита SSH соединения


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

Часть 1: Смена порта SSH

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

1. Открываем конфигурацию SSH

nano /etc/ssh/sshd_config

Раскомментируем данную строку и поменяем стандартный 22 порт на любой другой от 0 до 65535

ВАЖНО!

Порт не должен быть занят другими службами

После чего сохраняем изменения в файле последовательным нажатием

ctrl+x

y

enter

2. Обновляем настройки фаервола

В этих командах вместо 55432 вы используете свой порт соответственно

Если у вас стоит ufw

sudo ufw allow 55432/tcp

либо используете iptables

sudo /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 55432 -j ACCEPT

3. Перезапускаем службу SSH

sudo systemctl restart ssh

4. Перезапускаем сервер

reboot

После этого нам необходимо отключиться от старого соединения и подключиться по ново-заданному порту

Часть 2: Настройка SSH ключей вместо пароля

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

1. Генерируем ключи

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

ssh-keygen

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

После этого у нас создастся пара ключей в указанной директории.

2. Перенос публичного ключа на наш сервер

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

ssh-copy-id -p ваш_порт имя_юзера@айпи_сервера

например

ssh-copy_id -p 55432 [email protected]

Если вы используете Windows, то переносим следующей командой

type %userprofile%\\.ssh\\id_rsa.pub | ssh -p ваш_порт имя_юзера@айпи_сервера "cat >> ~/.ssh/authorized_keys"

например

type %userprofile%\\.ssh\\id_rsa.pub | ssh -p 55432 [email protected] "cat >> ~/.ssh/authorized_keys"

После этого у вас попросит пароль, вводим, нажимаем Enter

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

cat /root/.ssh/authorized_keys

3. Отключение входа по паролю

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

nano /etc/ssh/sshd_config

Ищем данную строчку, раскомментируем и меняем на no

После чего сохраняем файл и перезапускаем службу SSH

4. Перезапускаем службу SSH

sudo systemctl restart ssh

5. Перезапускаем сервер

reboot

Теперь при входе на сервер у нас будет загружаться наш ключ и просить пароль от этого ключа(если вы пароль для ключа не прописывали, то будет просто заходить на сервер)

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

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

Часть 3. Fail2Ban

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

1. Устанавливаем Fail2Ban

sudo apt install fail2ban -y

2. Настройка Fail2Ban для защиты SSH

sudo nano /etc/fail2ban/jail.d/ssh.conf

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

[sshd]
enabled = true
port = 55432
filter = sshd
logpath = /var/log/auth.log
maxretry = 3
bantime = 3600
findtime = 600

Где:

  • enabled = true — включает защиту для SSH.
  • port = 55432 — укажите номер порта, который вы используете для SSH (если вы изменили его с 22).
  • maxretry = 3 — количество неудачных попыток входа, после которых IP будет заблокирован.
  • bantime = 3600 — время блокировки IP-адреса в секундах (1 час в данном случае).
  • findtime = 600 — период в секундах, в течение которого отслеживаются попытки входа (если 3 неудачные попытки произойдут в течение 10 минут, IP будет заблокирован).

3. Перезапуск Fail2Ban

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

sudo systemctl restart fail2ban

4. Проверка статуса Fail2Ban

Убедитесь, что Fail2Ban работает и отслеживает SSH:

sudo fail2ban-client status sshd

Вы увидите информацию о заблокированных IP и настройках защиты SSH.

Наш телеграмм канал по нодам — https://t.me/g7monitor
Наш чат по нодам — https://t.me/g7team_chat