Вы наверняка используете SSH. Действительно это удобно - иметь возможность воспользоваться консолью вашего сервера из любой точки мира. Однако у нее есть и другая сторона. Являясь по сути дверью в вашу систему, она привлекает внимание хакеров. Поэтому очень важно грамотно настроить ваш SSH, чтобы только вы и никто другой не мог получить доступ к системе.
Давайте посмотрим, какие шаги можно предпринять, чтобы повысить безопасность вашего SSH:
Держите ваш SSH свежим
Действительно, проверяйте вашу систему на предмет доступных обновлений. Если не хотите обновлять всю систему целиком, то хотя бы поставьте в крон или таймер обновление SSH. Это поможет вам избежать эксплуатации хакерами обнаруженных уязвимостей, для которых по всему интернету можно скачать вполне работающие кряки, а также будет поддерживать вашу систему в тонусе - SSH постоянно обновляет политики по-умолчанию в соответствие с последними событиями в области безопасности.
Смените порт по-умолчанию
Изменение порта по-умолчанию (22) сразу отсечет армию ботов, сканирующих интернет на предмет открытых портов TCP 22. Это, пожалуй, один из самых действенных способов скрыть ваш SSH от посторонних глаз.
Для изменения порта отредактируйте конфигурационный файл демона SSH. Откройте на редактирование файл /etc/ssh/sshd_config, найдите строку, начинающуюся с "Port.." (если нет, добавьте) и выставите запоминающийся для вас номер порта. Например,
##...
Protocol 2
ListenAddress 0.0.0.0
Port 2490
##...
Отключите рута
SSH не раскрывает имена пользователей, зарегистрированных в системе для того, чтобы злоумышленник не сел подбирать пароль для конкретного пользователя. Но вот пользователь root есть в каждой системе, и вот он-то представляет лакомый кусочек. Заведите себе именнованного пользователя - не используйте рута напрямую! Также вам стоит не создавать пользователя с хорошо известными именами, такими как user, share, man и т.д. Старайтесь сделать имя вашего пользователя максимально уникальным.
Отключить рута в SSH просто. Измените или добавьте в /etc/ssh/sshd_config следующую строку:
##...
PermitRootLogin no
##...
Ограничьте использование старых алгоритмов шифрования
Это не значит, что они плохи. Просто с ростом вычислительной мощности подбор ключа на старых алгоритмах становится все проще для хакера. При том, что SSH поддерживается ряд алгоритмов, лучше выбрать более новые и совершенные алгоритмы, чем алгоритмы по-умолчанию. Добавьте или измените следующие строки в вашем /etc/ssh/sshd_config
Ciphers chacha20-poly1305@openssh.com,aes256-gcm@openssh.com
KexAlgorithms curve25519-sha256@libssh.org
Используйте ключи вместо паролей
Действительно, пароль - ваш последний рубеж защиты. Главный недостаток паролей - они коротки. Даже если попытаться запомнить реально длинный пароль, его все равно неудобно вводить каждый раз, как вы захотите получить доступ к серверу. Да и тягаться с компьютером в запоминании длинных фраз не стоит.
На смену паролей приходят ключи - такие же пароли, только уже реально длинные, условно непредсказуемые и супер-надежные, так как в их основе лежат криптографические алгоритмы. Все, что вам нужно, - это сгенерировать пару ключей: публичный и приватный, и зарегистрировать ваш публичный ключ на сервере. После чего, каждый раз, как вы попытаетесь войти в консоль вашего сервера, SSH закодирует вашим публичным ключом сообщение, отправит его вашему клиенту SSH и, если тот сможет его раскодировать своим приватным ключом и сообщение совпадет с отправленным сервером, SSH разрешит доступ.
Только помните, приватный SSH ключ нужно держать в строжайшей секретности. Лучше даже приватный ключ сам зашифровать с помощью пароля. Т.е. даже, если ключ будет скомпрометирован, атакующий еще должен будет потратить время на подбор пароля, а вы тем временем ключи уже поменяете. Самым надежным форматом ключей на конец 2018 года является ED25519, но он все еще не стал форматом по умолчанию. Т.е. по-умолчанию SSH вам сгенерирует старый добрый RSA. Сгенерировать ED25519 можно так:
ssh-keygen -o -a 100 -t ed25519 -C "user@example.com"
Вас спросят куда сохранить ключи. Путь по-умолчанию подойдет в 99% случаев. Ключ "-a" указывает сколько раз зашифровать пароль. Большее число раз требует больше вычислений для атакующего, пытающегося подобрать пароль.
Но напомню, это только в том случае, если ключ был скомпрометирован. В принципе, вам следует менять ключи хотя бы раз в год, даже если есть уверенность, что ключ в безопасности - это нормальная практика криптографической гигиены. После тестирования работоспособности ключей, вам остается только выключить парольный вход совсем. Для этого добавьте или выставите в "no" следующие параметры в /etc/ssh/sshd_config
PubkeyAuthentication yes
PasswordAuthentication no
ChallengeResponseAuthentication no
__________________________________
Если статья была полезна, не забудьте поставить лайк и подписаться на мой канал!