Настройка безопасного SSH доступа

Настройка безопасного SSH доступа

Часто хостинг-компании предоставляют своим клиента root доступ по паролю на выделенный физический или виртуальный сервер. С одной стороны, клиент получает полный доступ к серверу, с другой – такой доступ очень опасен: пароль может быть похищен. Следующее руководство позволит настроить безопасный SSH доступ на сервер, руководство универсально и подходит под Linux системы.
Подключаться к серверу от имени главного администратора плохо с точки зрения безопасности. Для начала нужно создать пользователя, от имени которого будет организовано подключение, изначально это пользователь не обладает какими-либо привилегированными правами в системе. Выполним команды на создания пользователя, предполагается, что данные команды выполняются от имени root’а сразу же после получения доступа к серверу.

useradd semiadmin -b /home -m -u -s /bin/bash

Теперь нужно организовать доступ к серверу для данного пользователя. Доступ по паролю изначально самый плохой вариант – пароль легче всего скомпрометировать. К счастью, авторизация пользователя на сервере может проводиться по связке открытого и закрытого ключа. При таком механизме авторизации на сервере хранится публичный ключ пользователя, а приватный ключ должен храниться у самого пользователя в безопасном месте. При авторизации данным методом клиент и сервер осуществят взаимную проверку («рукопожатие») на основе публичного и закрытого ключа, при этом не передавая куда-либо эти ключи. Для большей защиты на закрытый ключ можно поставить пароль, это повысит защиту ключа.

mkdir -p /home/semiadmin/.ssh
chown -r semiadmin:semiadmin /home/semiadmin/
ssh-keygen -t dsa -q -f /home/semiadmin/.ssh/semiadmin_dsa -n "<здесь может быть парль для закрытого ключа>"
cp /home/semiadmin/.ssh/semiadmin_dsa.pub /home/semiadmin/.ssh/authorized_keys
chown semiadmin:semiadmin /home/semiadmin/.ssh/authorized_keys
chmod 600 /home/semiadmin/.ssh/authorized_keys

Итак, пара закрытого и публичного ключа созданы и могут быть использованы для доступа к серверу. Необходимо обезопасить закрытый ключ, находящийся в /home/semiadmin/.ssh/semiadmin_dsa, его нужно скопировать в безопасное место и удалить с сервера. Теперь нужно проверить, что подключение работает исправно, воспользуемся закрытым ключом для подключения к серверу.
Возникает вопрос, доступ теперь безопасный, но созданный пользователь не может администрировать сервер, для решения этой проблемы нужно воспользоваться sudo, установите ее на сервер и отредактируйте конфигурацию с помощью команды visudo
Добавте строчку в конец.

semiadmin    all=(all) nopasswd:all

Данная строка позволит созданному ранее пользователю использовать sudo без пароля. Если же существует необходимость в повышении безопасности, то не добавляйте эту строчку, а выполните команду passwd для задания пароля новому пользователю.
Проверим, что все работает, подключимся к серверу от имени нового пользователя и выполним sudo –i. Данная команда переведет пользователя в привилегированный режим. Осталось немного подкорректировать настройки ssh доступа. Откроем файл конфигурации /etc/ssh/sshd_config
И изменим или добавим настройки как указано ниже.

port <номер порта для доступа к серверу>
permitrootlogin no
pubkeyauthentication yes
permitemptypasswords no
challengeresponseauthentication no
passwordauthentication no

Данными настройками меняется порт для доступа, включается авторизация по публичному ключу, запрещается доступ для root пользователя, а также доступ с пустым паролем, также отключается доступ к серверу по паролю. Осталось перезагрузить службу ssh-сервера, для применения новых параметров.
Данные небольшие настройки позволяют повысить безопасность доступа на сервер, теперь чтобы получить административный доступ на сервер злоумышленник должен овладеть закрытым ключом и паролем к нему, это гораздо сложнее, чем получить обычный пароль от root’а.
Если Вам понравилась заметка, обязательно делитесь ее со своими друзьями, если же есть пожелания или замечания – сообщите о них.
Использование материалов на сторонних ресурсах, без разрешения автора, запрещено.

Автор:Jury Sosnovsky