Защита SSH сервера

Поговорим о том как же можно защитить от взлома доступ к вашему серверу по протоколу ssh. Понятное дело, что если сервер вы арендуете или он удалённый, то ssh это, по сути, ваш единственный инструмент удалённого его администрирования и взять и отключить ssh демона, как в случае с FTP доступом, в данном случае не приемлемо.

Однако оставлять всё как есть тоже нельзя, ведь SSH может быть подвергнут хакерской атаке. Ведь по сути злоумышленнику ничего не стоит попробовать подключиться к вашему серверу. IP адрес сервера узнать не составляет никакого труда. Понятное дело, что можно легко подключиться и попытаться подобрать пароль к пользователю root, ведь его имя так же известно.

Для защиты мы и будем отключать доступ по протоколу SSH для супер пользователя root и менять стандартный сетевой порт SSH протокола.

Все действия я буду показывать на примере операционной системе на ядре GNU/Linux, а именно дистрибутив Ubuntu и сервера OpenSSH. Кстати сказать ко множеству других популярных дистрибутивов ядра Linux всё это тоже подходит.

Отключение доступа по SSH для пользователя root

Итак, что нам нужно? Всего лишь навсего поменять настройки конфигурации SSH демона, который всегда работает в фоновом режиме. Для этого ищем файл под названием sshd_config, располагается он в директории /etc/ssh, там же находятся и другие файлы относящиеся к ssh_daemon. Так вот открываем этот файл (я использовал редактор nano):

# nano /etc/ssh/sshd_config

И находим в этом файле конфигураций следующие строки:

# Authentication:
LoginGraceTime 120
PermitRootLogin yes
StrictModes yes

Если какие то из указанных выше директив закомментированны знаком #, то задействуйте их убрав знак sharp перед началом строки. В общем измените этот блок на следующий:

# Authentication:
LoginGraceTime 120
PermitRootLogin no
StrictModes yes

Т.е. меняете строку PermitRootLogin (Permit Root Login — разрешить корневой вход) и вместо значения yes (да) ставите no (нет). После чего сохраняем файл конфигурации SSH сервера и перезапускаем OpenSSH командой:

sudo service ssh restart

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

Самое главное позаботьтесь о том, что бы у вас в системе были созданы другие пользователи (хотя бы один) у которых есть доступ к серверу при помощи SSH. Иначе вы не сможете никак соединиться. Добавить нового пользователя в систему можно например командой:

adduser тут_имя_нового_пользователя

Теперь всегда заходить на сервер при помощи SSH протокола придётся только под другими пользователями. После авторизации, если нужны права рута, то просто вводим команду su и далее пароль от супер пользователя root и уже работаем от его имени как обычно.

При таком подходе сложность взлома состоит в том, что при попытке авторизации придётся ещё и угадывать имя самого пользователя, далее его пароль и потом уже пароль от root пользователя. В общем такая трёхступенчатая защита получается.

Смена стандартного сетевого порта

Так же для защиты доступа по ssh рекомендую сменить стандартный 22 порт на какой-нибудь другой. Обязательно используйте ssh2 т.к. он более безопасен чем ssh1. Лучше явно прописать с каких IP адресов будет разрешена аутентификация для того, что бы максимально ограничить доступ. Если используется обычная парольная аутентификация, то проследите, что бы был включён запрет пустых паролей в строке:

PermitEmptyPasswords no

А вообще лучше использовать более продвинутую аутентификацию на основе открытых и закрытых ключей.

Стоит добавить, что все эти параметры явно прописываются в файле настроек OpenSSH находящимся по адресу /etc/ssh/sshd_config.

Поделиться!
Tags: , , , , ,

49.69MB | MySQL:54 | 0,321sec