Создав сервер Ubuntu 16.04, необходимо выполнить его начальную настройку. Это повысит защиту и юзабилити нового сервера, а также обеспечит надёжную платформу для дальнейшей работы.
1: Логин root
Для подключения к серверу вам понадобится его внешний IP-адрес. Кроме того, нужно знать пароль или иметь закрытый ключ (в случае использования аутентификации на основе SSH-ключей) администратора – пользователя root.
Чтобы войти как пользователь root, используйте команду:
ssh root@SERVER_IP_ADDRESS
На данном этапе может появиться предупреждение о подлинности хоста; примите его и предоставьте учётные root. При первом подключении к серверу вам также будет предложено изменить root-пароль.
Что такое root?
Пользователь root является администратором окружения Linux и обладает максимальными правами. Именно из-за широких привилегий аккаунта root использовать его для рутинной работы крайне небезопасно – так можно случайно нанести системе непоправимый вред.
Потому для постоянной работы в окружении Linux используется специально созданный аккаунт с расширенными привилегиями – доступом к команде sudo, о которой можно прочитать далее в этом руководстве.
2: Создание нового пользователя
Войдя в систему как root пользователь, создайте новый аккаунт для постоянной работы с сервером. Запустите:
adduser 8host
Примечание: Замените условное имя 8host именем своего пользователя.
Установите надёжный пароль и при желании укажите дополнительную информацию о пользователе. Чтобы принять информацию по умолчанию, просто нажмите Enter.
3: Доступ к sudo
Итак, теперь у вас есть новый пользователь с обычными правами. Однако для управления сервером таких привилегий недостаточно.
Чтобы иметь возможность выполнять задачи администратора в сессии нового пользователя, передайте ему права суперпользователя. Для этого нужно открыть ему доступ к использованию команды sudo.
В Ubuntu 16.04 доступ к этой команде по умолчанию есть у всех пользователей, которые входят в группу sudo.
Чтобы добавить нового пользователя в группу sudo, запустите следующую команду в сессии пользователя root:
usermod -aG sudo 8host
Теперь новый пользователь имеет права суперпользователя.
Примечание: Подробнее о расширенных привилегиях можно узнать в этой статье.
4: Аутентификация на основе ключей (опционально)
Рекомендуется защитить нового пользователя, настроив аутентификацию на основе ключей.
Генерирование ключей
Если у вас ещё нет пары SSH-ключей, сгенерируйте их. Если у вас уже есть открытый и закрытый ключ, переходите к разделу «Копирование ключей».
Чтобы сгенерировать новую пару ключей, введите в терминал на локальной машине (то есть на компьютере) следующую команду:
ssh-keygen
К примеру, если пользователь локальной машины называется localuser, команда вернёт такой результат:
ssh-keygen output
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/localuser/.ssh/id_rsa):
Чтобы принять предложенное имя файла и путь, нажмите return.
После этого будет запрошен пароль (или парольная фраза) для защиты ключей. Его устанавливать необязательно.
Примечание: Если пропустить парольную фразу, вы будете иметь возможность использовать секретный ключ для аутентификации без ввода пароля. Если же вы установите пароль для ключей, то при входе вам нужно будет вводить и ключ, и этот пароль. Конечно, парольная фраза обеспечивает более надёжную защиту. Однако, принимая решение об использовании пароля для ключей, следует исходить из требований и целей сервера.
Команда создаст закрытый ключ (id_rsa) и открытый ключ (id_rsa.pub) в каталоге .ssh в домашнем каталоге пользователя localuser.
Важно! Закрытый ключ нельзя разглашать.
Копирование ключей
Сгенерировав SSH-ключи, скопируйте открытый ключ на новый сервер. Для этого существует два метода.
Метод 1: Сценарий ssh-copy-id
Если на локальной машине установлен сценарий ssh-copy-id, его можно использовать для установки открытого ключа для любого пользователя, чьи учётные данные вам известны.
Запустите сценарий ssh-copy-id, указав имя целевого пользователя и IP-адрес сервера.
ssh-copy-id 8host@SERVER_IP_ADDRESS
Укажите пароль пользователя, после чего открытый ключ будет добавлен в файл .ssh/authorized_keys удалённого пользователя.
Метод 2: Установка ключа вручную
Чтобы добавить ключ вручную, введите следующую команду в терминал локальной машины:
cat ~/.ssh/id_rsa.pub
Команда выведет на экран открытый ключ:
id_rsa.pub contents
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDBGTO0tsVejssuaYR5R3Y/i73SppJAhme1dH7W2c47d4gOqB4izP0+fRLfvbz/tnXFz4iOP/H6eCV05hqUhF+KYRxt9Y8tVMrpDZR2l75o6+xSbUOMu6xN+uVF0T9XzKcxmzTmnV7Na5up3QM3DoSRYX/EP3utr2+zAqpJIfKPLdA74w7g56oYWI9blpnpzxkEd3edVJOivUkpZ4JoenWManvIaSdMTJXMy3MtlQhva+j9CgguyVbUkdzK9KKEuah+pFZvaugtebsU+bllPTB0nlXGIJk98Ie9ZtxuY3nCKneB+KjKiXrAvXUPCI9mWkYS/1rggpFmu3HbXBnWSUdf localuser@machine.local
Скопируйте ключ в буфер обмена.
Чтобы разрешить использование ключа SSH для аутентификации нового удаленного пользователя, нужно добавить открытый ключ в специальный файл в домашнем каталоге этого пользователя.
Перейдите на сервер в сессию пользователя root и введите следующую команду, чтобы временно перейти в сессию нового пользователя (не забудьте указать правильное имя):
su – 8host
Это откроет домашний каталог пользователя 8host.
Создайте новый каталог .ssh и ограничьте доступ к нему:
mkdir ~/.ssh
chmod 700 ~/.ssh
Откройте файл authorized_keys в каталоге .ssh:
nano ~/.ssh/authorized_keys
Вставьте в него открытый ключ. Нажмите CTRL-x, y и Enter, чтобы закрыть и сохранить файл.
Заблокируйте доступ к файлу authorized_keys:
chmod 600 ~/.ssh/authorized_keys
Чтобы вернуться в сессию root, введите:
exit
Итак, открытый ключ добавлен, и теперь SSH-ключи можно использовать для аутентификации.
Примечание: Больше информации о ключах – в руководстве «Как настроить SSH-ключи».
5: Отключение аутентификации на основе пароля
Теперь для аутентификации сервер использует SSH-ключи. Отключите аутентификацию на основе пароля. Это ограничит доступ к серверу, так как SSH-ключи станут единственным способом подключиться к нему.
Важно! Отключайте аутентификацию на основе пароля только в том случае, если добавили ключи и проверили их работу. В противном случае вы рискуете заблокировать себе доступ к собственному серверу!
В сессии пользователя root или 8host откройте настройки демона SSH.
sudo nano /etc/ssh/sshd_config
Найдите строку PasswordAuthentication, раскомментируйте её и измените значение на no.
PasswordAuthentication no
В этом файле есть ещё две настройки по умолчанию, важные для аутентификации на основе ключей. Если вы не изменяли их ранее, не изменяйте их:
PubkeyAuthentication yes
ChallengeResponseAuthentication no
Сохраните и закройте файл (Ctrl-X, Y, Enter).
Перезапустите SSH:
sudo systemctl reload sshd
Теперь аутентификация на основе пароля отключена. Получить доступ к серверу можно только при помощи SSH-ключей.
6: Тестирование настройки
Прежде чем прервать соединение с сервером, проверьте настройки.
Важно! Не отключайтесь от сервера, пока не убедитесь в том, что SSH-ключи работают.
На локальной машине откройте новый терминал и попробуйте подключиться к серверу.
ssh 8host@SERVER_IP_ADDRESS
Если ключи настроены правильно, на данном этапе для подключения будет использован закрытый ключ. Если же настройка не удалась, система запросит пароль.
Примечание: Если вы защитили ключи парольной фразой, сначала система запросит эту фразу, а затем уже выполнит аутентификацию при помощи ключей. Если парольной фразы нет, система сразу использует ключи.
После успешной аутентификации вы получите доступ к сессии пользователя 8host.
Чтобы запустить команду с правами root, начните её с sudo:
sudo command_to_run
7: Настройка брандмауэра
Серверы 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)
Если вы установили и настроили дополнительные сервисы, вам необходимо откорректировать настройки брандмауэра, чтобы он не блокировал трафик этих сервисов.
Примечание: Подробнее о настройке UFW – в руководстве Основы UFW: общие правила и команды фаервола.
Заключение
Теперь сервер полностью настроен и готов к работе и развёртыванию приложений.