Базовая настройка сервера на Ubuntu Linux

Базовая настройка сервера на 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.

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

Практический Python для начинающих
Практический Python для начинающих

Станьте junior Python программистом за 7 месяцев

 7 месяцев

Возможно будет интересно