Root авторизация

Для начала необходимо войти на сервер. Для этого вам нужно знать, публичный IP-адрес вашего сервера. Также вам потребуется логин и пароль или, если вы установили SSH ключ для аутентификации, закрытый ключ для учетной записи пользователя "root".

Если вы еще не вошли на сервер, то откройте консоль и выполните авторизацию на сервере, используя следующую команду:

ssh root@YOUR.SERVER.IP.ADDRESS

Где YOUR.SERVER.IP.ADDRESS - IP адрес вашего сервера.

Завершите процесс авторизации в систему, приняв предупреждение о подлинности хоста, если оно появится. Возможно при первой авторизации на сервер с использованием пароля, вам будет предложено изменить пароль на новый.

Пользователь root

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

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

Создаем нового пользователя

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

Для того, чтобы создать нового пользователя, выполните команду (alt - имя нового пользователя, замените на свое):

adduser alt

После нажатия enter, вам будет необходимо ответить на несколько вопросов, в том числе и на запрос ввода пароля для учетной записи.

Обязательно введите надежный пароль с использованием цифр, строчных и заглавных букв. Остальные запросы не обязательны, и вы можете просто нажать enter на любой запрос, который вы хотите пропустить.

Root привилегии для пользователя

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

Конечно можно выйти из своего пользователя и войти под пользователем root, но это не самый лучший вариант. Чтобы избежать этого, система дает возможность установить привилегии root пользователя для вашего обычного пользователя с помощью команды sudo. Это позволит вашему обычному пользователю выполнять команды с root правами. Для этого необходимо поставить слово "sudo" перед каждой командой.

Чтобы включить эти привилегии к новому пользователю, необходимо добавить его в группу "sudo". По умолчанию в Ubuntu 16.04, пользователи, которые принадлежат к группе "sudo" имеют возможность использовать команду sudo.

Выполните команду из под пользователя root, чтобы добавить нового пользователя в группу "sudo" (alt - имя нового пользователя, замените на свое):

usermod -aG sudo alt

Теперь ваш пользователь может выполнять команды с привилегиями суперпользователя.

Продолжим.

Добавим Public Key Authentication

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

Генерация пары ключей

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

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

ssh-keygen

После выполнения команды, вы увидите примерно следующее:

ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/username/.ssh/id_rsa):

Где username - имя вашего пользователя на локальном компьютере.

Вам необходимо принять предложенное имя файла и путь к нему или ввести новое имя.

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

Если оставить секретную фразу пустой, то вы будете использовать секретный ключ для аутентификации без ввода пароля. Если же ввести секретную фразу, то вам будет необходимо вводить ее при каждой авторизации с помощью SSH ключа на сервере. Защита ключей с помощью секретной фразы является более безопасным. Тем не менее оба метода (с секретной фразой и без нее) более безопасны, чем обычная аутентификация с использованием логина и пароля.

И так мы создали секретный ключ - id_rsa, и открытый ключ - id_rsa.pub. Ключи находятся по пути: /Users/username/.ssh/id_rsa или в другом, который вы указали. Закрытый ключ не должен использоваться совместно с кем-либо. Создавайте разные пары ключей для разных пользователей.

Копирование открытого ключа

После того, как вы выполнили генерацию пары SSH ключей, вам необходимо скопировать открытый ключ на сервер. Это можно сделать несколькими способами, рассмотрим оба.

1-й вариант, используем ssh-copy-id

Если на вашем локальном компьютере установлен ssh-copy-id, то вы можете использовать его для установки открытого ключа любому пользователю для которого у вас есть данные для входа.

Запускаем ssh-copy-id, указав логин пользователя и IP-адрес сервера для которого необходимо установить ключ. Выполняем команду:

ssh-copy-id alt@YOUR.SERVER.IP.ADDRESS

Где YOUR.SERVER.IP.ADDRESS - IP адрес вашего сервера, alt - имя пользователя для авторизации на сервере.

После ввода пароля пользователя в терминале, ваш публичный ключ будет добавлен в .ssh/authorized_keys пользователя на сервере. Следовательно, теперь секретный ключ можно использовать для авторизации на сервере.

2-й вариант, устанавливаем ключ вручную

В терминале локального компьютера необходимо ввести команду для установки открытого ключа (id_rsa.pub):

cat ~/.ssh/id_rsa.pub

Эта команда выведет ваш публичный SSH ключ, который будет выглядеть примерно так:

ssh-rsa BFGEB3nsp31yB6EamydSfSfmDAABAQFMS3D0tsVBdj5sF3R5R3Yri
92kSdi8fd1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+
KYRxsdfov9vs,dk6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX
/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVsdfkdfSDFiedsf
093vIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bll
PTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYsdffo/sdf34m0s
WSUdf username@machine.local

Выберите открытый ключ, и скопируйте его в буфер обмена.

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

На сервере, в качестве root пользователя, введите следующую команду, чтобы временно переключиться на нового пользователя (alt - имя нового пользователя, замените на свое):

su - alt

После выполнения команды вы будете в домашней директории своего пользователя.

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

mkdir ~/.ssh
chmod 700 ~/.ssh

Теперь откройте файл authorized_keys в директории .ssh в текстовом редакторе:

nano ~/.ssh/authorized_keys

Вставьте в редактор свой открытый ключ (который должен быть в буфере обмена).

Нажмите ctrl+x чтобы сохранить и выйти, а затем enter, для подтверждения имени файла.

Далее ограничим права доступа к файлу authorized_keys:

chmod 600 ~/.ssh/authorized_keys

Возвращаемся к пользователю root:

exit

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

Продолжим. Повысим безопасность путем отключения входа в систему по паролю.

Отключаем аутентификацию по паролю

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

Если вы не установили открытый ключ к вашему пользователю, то не отключайте вход по паролю. В противном случае, вы не сможете авторизоваться на сервере.

Как root или новый sudo пользователь откройте конфигурацию SSH-демона:

sudo nano /etc/ssh/sshd_config

Найдите строку PasswordAuthentication, раскомментируйте ее и измените значение на "no". После изменений она будет выглядеть следующим образом:

PasswordAuthentication no

Перед сохранением проверьте два важных параметра PubkeyAuthentication и ChallengeResponseAuthentication по умолчанию они должны иметь следующие значения:

PubkeyAuthentication yes
ChallengeResponseAuthentication no

После внесения изменений сохраняйте файл, ctrl+x, затем y, а затем enter.

Далее необходимо перезапустить SSH-демон:

sudo systemctl reload sshd

Аутентификация по паролю теперь отключена. Ваш сервер теперь доступен только с SSH ключом аутентификации.

Тестируем вход

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

Откройте новый терминал на локальном компьютере и войдите на сервер с помощью новой учетной записи, которую создали ранее. Для этого, используйте команду:

ssh alt@YOUR.SERVER.IP.ADDRESS

Где YOUR.SERVER.IP.ADDRESS - IP адрес вашего сервера, alt - имя пользователя для авторизации на сервере.

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

Если вы создали пару ключей с использованием секретной фразы, то вам будет предложено ввести пароль для ключа. Если же секретная фраза осталась пустой, то вы войдете на сервер без пароля.

Базовая настройка Firewall

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

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

sudo ufw app list

После чего вы увидите:

Available applications:
  OpenSSH

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

sudo ufw allow OpenSSH

После чего можно включить брандмауэр с помощью команды:

sudo ufw enable

Нажмите у и enter для продолжения. Вы можете убедиться, что SSH соединения все еще разрешено, набрав команду:

sudo ufw status

Ответ:

Status: active
To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

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