Наибольшую озабоченность вызывают люди, входящие в систему в качестве администратора компьютера по SSH. Это можно сделать методом грубой силы, если у вас есть легко угадываемый пароль.
Есть несколько мер безопасности, которые вы можете предпринять, ниже приведены некоторые из тех, которые я всегда предпринимаю при настройке сервера SSH, и некоторые дополнительные.
Используйте надежный пароль, состоящий как минимум из, скажем, 10 заглавных и строчных букв, цифр и других символов.
Тюрьма пользователей в их домашнем каталоге. Заключенные в тюрьму пользователи не смогут получить доступ / редактировать файлы, которые находятся за пределами их домашнего каталога. Таким образом, ваш пользователь не сможет получить доступ / редактировать ключевые системные файлы. В Интернете можно найти множество учебников о том, как посадить в тюрьму пользователя. Большинство из них используют JailKit . Пример такого урока можно найти здесь . Кроме того, вы также можете использовать встроенную ChrootDirectory
директиву OpenSSH-сервера . Пример учебника по этому вопросу можно найти здесь .
Установите Fail2Ban . Fail2Ban - это программа, которая проверяет журналы аутентификации на предмет неправильных записей. Когда достигается определенный лимит, он добавляет блок брандмауэра для этого определенного IP-адреса в течение заданного промежутка времени. В Интернете также есть несколько учебных пособий о том, как настроить Fail2Ban с SSH, например, этот . На домашней странице Fail2Ban также есть несколько хороших и полных HOWTO.
Отключить root-вход через SSH. Это пользователь, который имеет доступ практически ко всем файлам в вашей системе, поэтому рекомендуется отключить его вход в оболочку. В последних версиях Ubuntu пользователь root автоматически отключается, но в любом случае не мешает отключить SSH-доступ. Это делается путем редактирования файла /etc/ssh/sshd_config
. ✝ Найдите следующую строку и убедитесь, что перед ней нет #.
#PermitRootLogin no
Используйте нестандартный порт (например, не 22). Это можно сделать либо с помощью переадресации портов в маршрутизаторе (например, 16121 -> 22 вместо 22 -> 22), либо с помощью демона SSH, который прослушивает другой порт. Это сделает вашу службу SSH менее легко обнаруживаемой для злоумышленников. Это делается путем редактирования файла /etc/ssh/sshd_config
. ✝ Найдите следующую строку и измените 22 на любой порт, который вы хотите. Не забудьте перенаправить правильный порт в маршрутизаторе впоследствии.
Port 22
Не используйте пароли для входа в систему. Помимо паролей, SSH также позволяет входить в систему с использованием закрытых ключей. Это означает, что ключ хранится на вашем компьютере, на котором вы получаете доступ к SSH машины SSH. При попытке подключения клиент SSH использует ключ для входа на сервер, а не с помощью аутентификации по паролю. Ключи аутентификации намного надежнее криптографически, чем пароли, и поэтому их не так легко взломать. В Интернете также есть несколько учебных пособий о том, как настроить аутентификацию на основе ключей с помощью SSH, например, этот пример . (Если вы используете SSH из Windows с PuTTY, проверьте эту ссылку для получения информации о PuTTY.) После настройки аутентификации на основе ключей вы можете отключить аутентификацию по паролю, отредактировав файл /etc/ssh/sshd_config
. ✝ Найдите следующую строку и убедитесь, что перед ней нет #.
#PasswordAuthentication no
При желании, как @ Linker3000 упомянул в своем комментарии, вы можете настроить VPN-туннель для ПК, к которому вы хотите получить доступ через SSH, а затем запретить доступ к локальной сети на SSH-сервере. Таким образом, ни одно внешнее устройство без VPN-подключения не сможет получить доступ к вашему SSH-серверу. Это можно сделать, запретив ВСЕ хосты и затем разрешив входить только IP-адресам локальной сети. Это делается путем редактирования /etc/hosts.deny
и добавления следующего:
sshd: ALL
и /etc/hosts.allow
добавить следующее:
sshd: 192.168.1.*
где IP совпадает с номером вашей локальной сети. *
является подстановочным знаком, поэтому все IP-адреса, начинающиеся с, 192.168.1.
будут приняты. Если это не сработает, ваш дистрибутив может использовать ssh
вместо sshd
. В этом случае вы должны попробовать ssh: 192.168.1.*
и ssh: ALL
вместо этого.
Вы можете разрешить только определенные хосты, сделать то же самое с и /etc/hosts.allow
и /etc/hosts.deny
как описано в 6, но /etc/hosts.allow
добавьте следующую строку и каждый хост разрешите разделить пробелами:
sshd: {IP OF HOST TO ALLOW 1} {IP OF HOST TO ALLOW 2} {IP OF HOST TO ALLOW 3} {ETC.}
Разрешить только определенным пользователям доступ к вашему SSH-серверу. Это делается путем редактирования файла /etc/ssh/sshd_config
. ✝ Найдите следующую строку и убедитесь, что перед ней нет #. Если его не существует, создайте его. Например, если вы хотите разрешить только Джон, Том и Мэри, добавьте / отредактируйте эту строку:
AllowUsers john tom mary
Вы также можете запретить определенных пользователей, например, если вы хотите запретить доступ к Джону, Тому и Мэри, добавьте / отредактируйте эту строку:
DenyUsers john tom mary
Разрешить протокол SSH2 только для входящих соединений. Есть две версии протокола SSH. SSH1 подвержен проблемам безопасности, поэтому рекомендуется использовать SSH 2. Это может быть вызвано путем редактирования файла /etc/ssh/sshd_config
. ✝ Найдите следующую строку и убедитесь, что перед ней нет #. Если его не существует, создайте его.
Protocol 2,1
удалить, 1, так что линия будет
Protocol 2
Не разрешайте пользователям входить в систему без пароля. Это может быть вызвано путем редактирования файла /etc/ssh/sshd_config
. ✝ Найдите следующую строку и убедитесь, что перед ней нет #. Если его не существует, создайте его.
PermitEmptyPasswords no
И хотя это просто и, возможно, само собой разумеется, но доказало свою решимость во многих случаях, обновляйте свое программное обеспечение. Регулярно обновляйте установленные пакеты / программное обеспечение.
в зависимости от того, какой дистрибутив Linux вы используете.