5 вещей, которые вы должны сделать прямо сейчас, чтобы защитить SSH-доступ к вашему серверу

SSH server

ВАЖНОЕсли вы не знаете, как настраивать вход по SSH или двухфакторную аутентификацию, а также не до конца понимаете описываемые рекомендации, то мы настоятельно рекомендуем изучить сопутствующую документацию. В противном случае вы рискуете не защитить свой сервер, а навредить ему.

Если вам нужен сервер, который имеет более высокий уровень защиты, легко масштабируется и управляется, то стоит обратить внимание на облачные сервера Cloud4Y. Их уже используют как небольшие компании, так и крупные госкорпорации. Подробности можно узнать у наших менеджеров.

1. Смена порта SSH

Пожалуй, самая простая и очевидная вещь, которую вы можете сделать. Каждый, кто имеет минимальный опыт работы с серверами, знает, что доступ по SSH осуществляется через порт 22. Если злоумышленник захочет получить доступ к вашим серверам, он первым делом попробует этот порт.

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

Для смены порта достаточно изменить один файл, /etc/ssh/sshd_config. Установите другое значение в конфигурации, сохраните файл – и дело сделано!

2. Отключение входа по паролю

По умолчанию у всех пользователей есть пароль, который можно использовать для входа на сервер через SSH. Имея IP-адрес и имя пользователя/пароль, любой человек сможет войти в систему независимо от того, кем он является. Также стоит отметить, что SSH в принципе не подразумевает ограничение на количество попыток ввода пароля. Да, после трёх попыток неудачной авторизации пользователю будет отказано в подключении, но ничто не мешает злоумышленнику пытаться снова и снова. Настройками SSH данную ситуацию исправить нельзя, проблема может быть решена только установкой и настройкой стороннего программного обеспечения (например, fail2ban).

Отключение входа с использованием имени пользователя и пароля вынуждает пользователей использовать ключи авторизации на ваших серверах, чтобы получить возможность войти в систему. Ключ авторизации — это специальным образом сформированный электронный ключ, который имеет открытую и закрытую части. Закрытая (приватная) часть ключа хранится на компьютере пользователя, открытая (публичная) — на сервере.

Это значит, что на сервер войти в систему смогут лишь те пользователи, у есть действующий SSH-ключ, авторизованный на сервере. При попытке входа с использованием имени пользователя и пароля в подключении будет отказано.

Не забудьте создать ключи и настроить вход по ключам перед тем, как отключать вход с использованием имени пользователя и пароля. Иначе войти на сервер по SSH вам не удастся.

3. Настройка устаревания пароля

Несмотря на то, что вход по SSH-ключу считается наиболее безопасным вариантом работы с сервером, это не всегда возможно реализовать. Чтобы сделать пароли более безопасными, вы можете предусмотреть их «устаревание» через какой-то промежуток времени. Как только срок действия вашего пароля превысит допустимый предел в конфигурации, сервер заставит вас сменить его.

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

4. Отключение root-доступа

В Linux главный пользователь — это root-пользователь. У него есть почти неограниченный доступ ко ВСЕМУ. (На самом деле ограничения есть, и они активно внедряются в современных дистрибутивах Linux, но более-менее опытному злоумышленнику даже оставшихся полномочий может оказаться достаточно, чтобы захватить управление сервером или обойти ограничения). Если злоумышленник получит доступ к вашему серверу через SSH с правами root-пользователя, вам гарантированы очень тяжёлые времена.

К счастью, Linux предоставляет возможность отключить доступ для root-пользователя через SSH. Тогда злоумышленникам придётся получать доступы к вашему серверу через одну из обычных учётных записей. А у них, надеемся, заранее ограничены права, и доступ предоставлен только к тем данным, которые требуются для работы.

Изменения в одной строке внутри /etc/ssh/sshd_config — это разница между потерей нескольких папок и потерей всего сервера. Выбор — за вами.

Только убедитесь, прежде чем отключать доступ root-пользователя по SSH, что у вас имеется хотя бы один пользователь, которому вход по SSH разрешён и он работает, а у пользователя есть возможность выполнения административных задач через sudo или хотя бы возможность переключения на root-пользователя через su. Иначе вы либо не войдёте на сервер по SSH в принципе, либо не сможете им управлять.

Обращаем ваше внимание, что так можно делать не во всех версиях Linux. Например, в популярной Cent OS по умолчанию кроме root нет пользователей.

5. Двухфакторная аутентификация для SSH

Двухфакторная аутентификация становится стандартом для сайтов. Многие ресурсы требуют включать её для обеспечения безопасности вашей учётной записи. Это означает, что теперь людям нужно знать ваш пароль и им нужен доступ к приложению на вашем телефоне, которое генерирует двухфакторные коды!

Это отличный способ повысить безопасность и спокойствие своей учётной записи/профиля. Но знаете ли вы, что вы можете организовать такую же систему и на сервере?! Да, вы можете настроить свои сервера так, чтобы любому, кто пытается войти в систему через SSH, нужно было ввести свой пароль или иметь свой SSH-ключ на сервере, а затем указывать код, сгенерированный приложением на мобильном устройстве.

Этот процесс является прекрасным способом защитить SSH-доступ к вашим серверам. Не забудьте предварительно изучить материалы по настройке аутентификации, и узнать, что делать, если она перестала работать.

Заключение

Безопасность сервера может быть многоуровневой. По отдельности перечисленные пункты могут быть не слишком эффективными. Но комплексное их использование является простым, эффективным и быстрым способом защиты SSH-доступа к вашим серверам.

Наши рекомендации могут пригодиться как компаниям, уже использующим облачные сервера, так и тем, кто предпочитает работу с локальной инфраструктурой. Несмотря на то, что облачные решения, как правило, имеют лучшую защиту, с ними тоже нужно уметь работать. О том, почему облака лучше корпоративного сервера, мы немного рассказали в статье «Облака: в чем преимущество перед корпоративным сервером».