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

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

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

Стандартный SSH сервер в ОС Linux предлагает несколько средств защиты: доступ с конкретного IP-адреса, запрет доступа пользователю «root» и задание другого сетевого порта. В этой статье для защиты SSH сервера мы и будем отключать доступ по протоколу SSH для супер пользователя «root» и менять стандартный сетевой порт SSH протокола.

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

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

Для начала позаботьтесь о создании другого/нового пользователя, у которого будет доступ к SSH серверу (по-умолчанию такой доступ есть у всех пользователей системы). Только после этого приступайте к следующим шагам.

Итак, что нам нужно? Всего лишь навсего поменять настройки конфигурации 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 пользователя. В общем, такая трёхступенчатая защита получается.

Работать под обычным пользователем по протоколу , например, в программе WinSCP, не очень удобно т.к. обычный пользователь не сможет перезаписывать имеющиеся на сервере файлы, на которые у него нет соответствующих прав. Для этого можно дать обычному пользователю права «root» пользователя. Делается это так:

usermod -aG 0 user_name

После этого можно работать без проблем под обычным пользователем т.к. у него будут права «root» пользователя.

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

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

PermitEmptyPasswords no

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

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

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

7MB | MySQL:54 | 0,078sec