В этом гайде я покажу, как защитить ваш SSH-сервер.
Протокол SSH (также называемый Secure Shell) — это метод для безопасного удаленного входа с одного компьютера на другой. Он предоставляет несколько альтернативных вариантов для строгой аутентификации и защищает безопасность и целостность связи с помощью надежного шифрования. Это безопасная альтернатива незащищенным протоколам входа в систему (например, telnet, rlogin) и небезопасным методам передачи файлов (например, FTP).
Мой тестовый сервер был в сети только два часа. Когда я вошел в систему, я увидел это сообщение.
Last failed login: Fri May 22 12:51:07 CEST 2020 from 218.92.0.184 on ssh:notty
There were 718 failed login attempts since the last successful login.
Мне нужно защитить свой сервер, чтобы избежать атак.
Изменить SSH порт по умолчанию
Использование нестандартного порта для соединения SSH помогает избежать автоматических атак на ваш сервер.
Для изменения SSH порта вам необходимо отредактировать файл конфигурации sshd. В моем случае, я изменю порт по умолчанию 22 на нестандартный 54321.
# nano /etc/ssh/sshd_config
Раскомментируйте строку и измените номер порта, сохраните конфигурацию и перезапустите службу sshd.
# systemctl restart sshd
Убедитесь, что SSH прослушивает порт, который вы указали, подключившись к нему.
# netstat -ntulp | grep ssh
Порт SSH был успешно изменен. Для подключения к серверу через пользовательский порт SSH используйте следующую команду.
# ssh [email protected]_address -p54321
Ограничить доступ к SSH с помощью iptables
Вы можете ограничить соединение SSH, чтобы разрешить только авторизованные IP-адреса. Чтобы разрешить SSH-соединения только с 10.10.10.10, выполните следующую команду:
# iptables -A INPUT -p tcp -m tcp --dport 54321 -s 10.10.10.10 -j ACCEPT
Чтобы отключить SSH-соединение от всех других хостов, выполните следующую команду:
# iptables -A INPUT -p tcp -m tcp --dport 54321 -m state --state NEW -j DROP
Сохраните ваши новые правила, используя следующую команду:
# iptables-save > /etc/sysconfig/iptables
Используйте SSH ключи вместо пароля
Использование паролей для аутентификации SSH небезопасно. Если один из ваших пользователей устанавливает слабый пароль, ваш сервер может быть взломан. Чтобы избежать этого, вы можете использовать ключ ssh для аутентификации без пароля.
Пожалуйста, ознакомьтесь с этим гайдом — Как настроить ключи SSH
Отключите вход по паролю
Проверка подлинности пароля в SSH представляет большую угрозу безопасности, если ваш пользователь устанавливает слабый пароль. Если вы используете ключи SSH для аутентификации SSH, вы можете полностью отключить аутентификацию по паролю сервера.
Вам нужно отредактировать файл конфигурации sshd.
# nano /etc/ssh/sshd_config
Найдите строку, содержащую PasswordAuthentication и измените ее на «no»
Внимание! Прежде чем перезапускать демон ssh, чтобы изменения вступили в силу, убедитесь, что вы создали и настроили ключ SSH для входа в систему.
Перезапустите службу sshd, чтобы применить конфигурацию.
# systemctl restart sshd
Я показал вам основные советы по безопасности для сервера SSH.