Базовая настройка сервера на Ubuntu
Удобство работы, как и высокая безотказность работы сервера на Ubuntu во многом зависят от правильности базовых настроек, которые необходимо выполнить в самом начале. Кроме того, это формирует основу безопасности работы сервера. Давайте рассмотрим это на примере настройки в Ubuntu версии 22.04. Наш план состоит из 4-х действий, после чего сервер будет готов к установке любого необходимого софт-обеспечения и надежной работы в целом.
Создание учетной записи пользователя
Все наши действия требуют авторства: то есть настройка сервера должно происходить от имени нового пользователя, которого необходимо создать. Только по законам Linux, эта процедура относится к администраторской работе, и чтобы ее выполнить, нужно зайти в систему, как пользователь root
.
Имя «root», которое переводится как «корень», использует пользователь-администратор с максимальным набором прав и возможностей. Войдя в эту учетную запись, можно выполнять абсолютно любые настройки и действия в системе. И если сделать что-то по ошибке, или по незнанию, можно полностью остановить работу сервера, операционной системы, а то и вовсе разрушить ее целостность. Чтобы не подвергать себя и систему такому риску, лучше всего создать пользователя для «работы на каждый день», права у которого будут ограничены.
Итак, приступим.
Для начала, зайдем на сервер от имени пользователя root
. Нам понадобятся такие сведения:
- внешний ip-адрес сервера;
- пароль к учетной записи
root
; - пароль или ключ доступа для протокола SSH;
Запускаем окно терминала, и в строке пишем такую команду:
$ ssh root@ip_server
Вместо ip_server
нужно указать внешний адрес нашего сервера, о котором мы говорили ранее.
- после ввода команды может появиться предупреждение о подлинности
host
. Подтверждаем его нажатием ENTER; - вводим пароль учетной записи
root
, если аутентификация выполняется по паролю; - вводим пароль-слово для ключа безопасности, если используется аутентификация по протоколу безопасности SSH;
Важно! Если вход на сервер от имени root
совершается впервые, система может предложить вам изменить пароль. Приглашение к этому действию появится в окне терминала, и для выполнения этого нужно будет следовать простым инструкциям.
Пароль-слово для ключа SSH запрашивается один раз в начале сеанса. Повторный запрос может быть в том случае, если вы завершили сеанс и пытаетесь создать его снова.
Мы зашли в систему, как root
-пользователь, и теперь можем создать новую учетную запись с ограниченными правами. В строке окна терминала вводим такую команду:
$ adduser romeo
romeo
– имя нового пользователя, но вы можете использовать любое другое имя, которое вам нравится.
После вызова команды, необходимо ввести и подтвердить новый пароль для учетной записи.
Дополнительную информацию указывать не обязательно,
после строки Enter the new value, or press ENTER for the default
нажимаем ENTER5 раз и подтверждаем свои действия клавишей Y.
Назначение новому пользователю прав администратора
Вторым действием будет назначение нашей новой учетной записи прав администратора. Казалось бы, мы специально создали новую, ограниченную в правах запись, чтобы не навредить работе системы, а теперь собираемся вернуть учетной записи все полномочия. Дело в том, что в процессе работы нам может понадобиться выполнение некоторых администраторских задач. Конечно, мы можем для этих целей каждый раз менять пользователя на root
, и затем возвращаться обратно в нашу учетную запись.
Согласитесь, что это неудобно.
А если мы предоставим нашей учетной записи администраторские права, все жизненно важные изменения можно будет выполнять исключительно после указания команды sudo
. Случайно эту команду не вызовешь, так что безопасность сервера и системы у нас будет под контролем.
В Ubuntu это устроено следующим образом: существует системная группа пользователей с именем sudo
. И всем пользователям, которые являются членами этой группы, разрешено использовать команду sudo
для вызова команд с администраторскими правами.
Добавляем нашу учетную запись в группу sudo
, это можно сделать от имени администратора root
:
$ usermod -aG sudo romeo
Как вы помните, вместо romeo
вы указываете имя, которое выбрали при создании учетной записи.
Теперь из нашей записи мы можем выполнять команды с правами администратора, предварительно указав sudo
перед ними.
Настройка разрешений брандмауэра
Общая безопасность в системах Linux обеспечивается работой правильно настроенного брандмауэра. Например, в дистрибутивах Debian и Ubuntu по умолчанию используется инструмент UFW (uncomplicated firewall), который позволяет быстро и легко настроить брандмауэр из командной строки.
Важно! После предыдущего раздела, мы подразумеваем, что находимся в системе как пользователь romeo
с правами администратора.
Обычно, файрвол UFW установлен в дистрибутиве Ubuntu по умолчанию. Если оказалось, что его нет, мы можем установить его с помощью такой команды:
$ sudo apt install ufw
В комплект установки UFW входит несколько профилей для работы наиболее популярных серверов и приложений. Поскольку мы используем для работы с нашим сервером службу Open SSH, то будем использовать одноименный профиль.
Брандмауэр UFW по умолчанию отключен, так что перед настройкой его необходимо включить, или активировать:
$ sudo ufw enable
Теперь нужно ввести Y и нажать ENTER для подтверждения.
Важно! Чтобы мы могли зайти на наш сервер в следующий раз, необходимо разрешить брандмауэру выполнять SSH подключения:
$ sudo ufw allow OpenSSH
Контролировать работу файрвола UFW можно с помощью проверки его статуса. Для этого набираем команду:
$ sudo ufw status
В окне терминала мы получим такой ответ:
Output
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Сообщение файрвола показывает, что для двух версий протоколов IPv4 и IPv6 разрешен входящий и исходящий трафик протокола SSH. В данном случае, для других протоколов входящий и исходящий трафик закрыт. Следует учитывать это, если вам необходимо использовать другие сервера и приложения.
Организация внешнего доступа пользователя с помощью SSH
Политика безопасности Linux такова, что внешнее подключение к серверу по протоколу SSH доступно по умолчанию администратору root
. Внешний доступ считается потенциально опасным, поэтому для его разрешения из нашей пользовательской учетной записи нужно выполнить проверку и настройку.
Если аутентификация администраторской учетной записи происходит с помощью пароля, то и доступ нашего пользователя romeo по протоколу SSH будет использовать пароль.
В окне терминала вводим команду:
$ ssh romeo@ip_server
По запросу вводим пароль, который мы вводили при создании пользователя romeo
, нажимаем ENTER, и доступ SSH для нашего пользователя обеспечен. Пароль может быть запрошен повторно, если мы используем обращение sudo
для выполнения команд уровня администратора. В этом случае пароль необходимо вводить один раз в начале каждого сеанса.
Важно! Поскольку защита паролем не обеспечивает должного уровня безопасности, лучше использовать аутентификацию SSH на основе ключей.
Если доступ к администраторской учетной записи настроен с помощью ключей безопасности, такой же способ будет применяться и для аутентификации SSH, а доступ с помощью пароля будет отключен. И вот здесь возникает сложность: войти в систему как пользователь romeo
с помощью ключа безопасности SSH не получится, так как ключ отсутствует в файле нового пользователя.
Чтобы обеспечить ключевой доступ SSH для новой учетной записи, необходимо добавить копию открытого локального ключа ~/.ssh/authorized_keys
в каталог нового пользователя.
Для этого действия удобно использовать команду rsync
, которая сможет за одно действие скопировать каталог пользователя root
с файлами ключей, поменять владельца файлов на romeo
и сохранить для файлов все разрешения.
Ниже указан полный пример команды, которая выполнит это действие:
$ rsync --archive --chown=romeo:romeo ~/.ssh /home/romeo
Важно! Убедитесь, что после имени каталога .ssh
есть пробел, и нет наклонной черты. Дело в том, что если черта .ssh/
будет указана, содержимое каталога root
будет скопировано в домашний каталог пользователя без создания правильной структуры вложенных каталогов и файлов. Как вы понимаете, SSH не сможет обнаружить файлы ключей предоставить доступ пользователю romeo
.
И не забывайте менять имя romeo
из примера, на то имя, которое выбрали вы.
Теперь можно создать новый сеанс в окне терминала и включить доступ для пользователя romeo
по протоколу SSH:
$ ssh romeo@ip_server
В этом случае пароль вводить не придется, поскольку мы используем заранее скопированный ключ ~/.ssh/authorized_keys
для аутентификации. Пароль может быть запрошен, если нужно будет запустить какую-либо команду с правами администратора, перед которой указывается sudo
.
Выводы
Мы создали надежный фундамент для работы сервера на Ubuntu:
- создали учетную запись нового пользователя;
- назначили необходимые права для работы с сервером;
- настроили безопасность брандмауэра;
- открыли новому пользователю внешний доступ с помощью SSH.
Теперь все готово для следующего этапа, и мы можем приступить к установке необходимого программного обеспечения на наш сервер.