Защита SSH соединения
Защита SSH-соединений — одна из ключевых мер безопасности для валидаторов и операторов узлов в блокчейне. В этом гайде мы рассмотрим три метода повышения безопасности SSH: смена порта SSH, настройка входа по ключам SSH и утилиту Fail2Ban. Эти методы помогут защитить узлы валидаторов от атак и обеспечат стабильную и безопасную работу в сети.
Часть 1: Смена порта SSH
По умолчанию SSH использует порт 22, который часто становится мишенью для атак. Смена порта на менее очевидный может незначительно усложнить задачу злоумышленникам, стоит учитывать, что это не является серьезной защитой, так как существуют сканеры портов, которые могут обнаружить ваш новый порт. Тем не менее, смена порта помогает исключить автоматизированные атаки грубой силы, которые обычно направлены на стандартный порт 22. Для валидаторов это важная мера, так как она помогает снизить вероятность автоматизированных атак.
nano /etc/ssh/sshd_config
Раскомментируем данную строку и поменяем стандартный 22 порт на любой другой от 0 до 65535
После чего сохраняем изменения в файле последовательным нажатием
2. Обновляем настройки фаервола
В этих командах вместо 55432 вы используете свой порт соответственно
sudo ufw allow 55432/tcp
sudo /sbin/iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 55432 -j ACCEPT
sudo systemctl restart ssh
reboot
После этого нам необходимо отключиться от старого соединения и подключиться по ново-заданному порту
Часть 2: Настройка SSH ключей вместо пароля
Одним из лучших способов защиты SSH-соединений является использование пары SSH-ключей вместо обычного ввода пароля. Такой подход значительно снижает вероятность несанкционированного доступа к серверу, так как подделка ключа значительно сложнее, чем подбор пароля. Для валидаторов это критически важно, так как компрометация доступа может привести к серьезным последствиям, включая потерю контроля над узлом.
Первым делом для использования SSH-ключей нам необходимо их сгенерировать. Открываем командную строку на своем устройстве и вписываем команду
ssh-keygen
Можно не вводить никакого пароля, тогда вход будет исключительно по ключу, но для повышения безопасности лучше ввести пароль, тогда вход будет по связке ключ+пароль. В таком случае даже если кто-то завладеет вашим ключем, то он не сможет войти на сервер без пароля от этого ключа(не путать с ssh паролем от самого сервера)
После этого у нас создастся пара ключей в указанной директории.
2. Перенос публичного ключа на наш сервер
Если вы сидите на линуксе, то перенос можно осуществить при помощи команды
ssh-copy-id -p ваш_порт имя_юзера@айпи_сервера
ssh-copy_id -p 55432 root@194.246.81.188
Если вы используете Windows, то переносим следующей командой
type %userprofile%\\.ssh\\id_rsa.pub | ssh -p ваш_порт имя_юзера@айпи_сервера "cat >> ~/.ssh/authorized_keys"
type %userprofile%\\.ssh\\id_rsa.pub | ssh -p 55432 root@194.246.81.188 "cat >> ~/.ssh/authorized_keys"
После этого у вас попросит пароль, вводим, нажимаем Enter
После этого у нас публичный ключ прописывается на сервере. Чтобы убедиться можем вывести ключ на сервере
cat /root/.ssh/authorized_keys
Для этого уже знакомой нам командой открываем файл конфигурации SSH соединения
nano /etc/ssh/sshd_config
Ищем данную строчку, раскомментируем и меняем на no
После чего сохраняем файл и перезапускаем службу SSH
sudo systemctl restart ssh
reboot
Теперь при входе на сервер у нас будет загружаться наш ключ и просить пароль от этого ключа(если вы пароль для ключа не прописывали, то будет просто заходить на сервер)
Чтобы заходить по ключу на сервер через MobaXterm нам необходимо создать новое подключение, как обычно ввести ip, username, после чего изменить порт, открыть расширенные настройки SSH подключения, включить вход по приватному ключу и выбрать сам приватный ключ по которому будем заходить
После чего нас так же либо просто пропустит, либо попросит пароль от ключа, если вы его задавали
Часть 3. Fail2Ban
Fail2Ban — это утилита, которая автоматически блокирует IP-адреса после нескольких неудачных попыток входа. Даже если вход по ключам SSH уже настроен, 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 будет заблокирован).
После настройки перезапустите Fail2Ban
, чтобы изменения вступили в силу:
sudo systemctl restart fail2ban
Убедитесь, что Fail2Ban работает и отслеживает SSH:
sudo fail2ban-client status sshd
Вы увидите информацию о заблокированных IP и настройках защиты SSH.
Наш телеграмм канал по нодам — https://t.me/g7team_ru
Наш чат по нодам — https://t.me/g7team_chat