Начальная настройка сервера Ubuntu 20.04

Внимание! Это 1-я часть из серии статей по деплою (развертыванию) Django-приложения. Перед ее прочтением рекомендуем ознакомиться с другими частями:
1. Начальная настройка сервера (текущая статья)
2. Деплой Django-приложения
3. Подключение базы данных PostgreSQL
4. Установка и привязка Memcached к Django
5. Привязка домена к серверу Django, настройка SSL и редиректов

Начальная настройка Ubuntu 20.04

Приветствую! В этой статье я расскажу про первоначальную настройку сервера Ubuntu 20.04. Эти мероприятия значительно повысят безопасность вашего сервера и заложат прочный фундамент для последующей работы. Итак, начнем!

Приобретение сервера

У многих новичком в первую очередь возникает вопрос, где лучше арендовать сервер. Не буду долго останавливаться на этом пункте, выбрать надежного хостинг-провайдера можно в нашем рейтинге на главной странице сайта. Я же все действия буду выполнять на примере абузоустойчивого хостинга Zomro. О том, как приобрести и запустить сервер я уже писал в этой статье.

Подключение к серверу

После того, как сервер был приобретен и были получены все данные для подключения (IP-адрес, имя пользователя, пароль), нам нужно подключиться к нему. Далее последовательность действий будет зависеть от используемой вами операционной системы.

Linux (Ubuntu, Debian) и macOS

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

ssh root@45.82.111.111

Разумеется, в эту команду нужно подставить свои данные (имя пользователя и IP-адрес). После ввода команды сервер запросит ввести пароль, после чего вы подключитесь к серверу.

Windows

Операционная система Windows не имеет встроенного SSH-клиента и подключаться придется с помощью программы puTTy. Об этом я уже подробно расписал здесь.

Однако, в Windows 10 есть другой, более удобный способ подключения по SSH. Для этого нужно в систему установить SSH-клиент. Обычно он установлен по умолчанию. Проверить это можно следующим образом. Щелкаем правой кнопкой мыши по значку Windows в левом нижнем углу экрана, в открывшемся меню выбираем пункт "Параметры". Далее переходим в раздел "Приложения":

Параметры Windows

В отрывшемся окне переходим по ссылке "Дополнительные компоненты" и проверяем, установлен ли клиент OpenSSH. Если он не установлен, то жмем "Добавить компонент", находим в списке "Клиент OpenSSH" и устанавливаем его:

Дополнительные компоненты WindowsOpenSSH Windows

После этого ищем на компьютере и запускаем программу Windows PowerShell и вводим команду (под своим пользователем и IP-адресом):

ssh root@45.82.111.111

Отлично, подключение к серверу выполнено. Теперь перейдем непосредственно к его настройке.

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

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

sudo adduser hostgeek

Вводим и подтверждаем пароль для нашего нового пользователя. Остальные поля можно не заполнять:

Создание пользователя Ubuntu Теперь этому пользователю нужно дать права администратора с помощью команды:

sudo usermod -aG sudo hostgeek

Авторизуемся под этим пользователем:

su hostgeek

Введем команду:

sudo whoami

В результате мы должны получить ответ "root". В таком случае все выполнено верно.

Отключимся от сервера и авторизуемся уже под нашим новым пользователем:

ssh hostgeek@45.82.111.111

Настройка подключения с помощью SSH-ключа

Этот шаг не обязателен, но он значительно повысит безопасность сервера. Поэтому не рекомендую его пропускать. Для начала сгенерируем SSH ключ с помощью команды (не забудьте отключиться от сервера, команду запускаем не на сервере, а на локальной машине!):

ssh-keygen

Путь для расположения ключа оставляем стандартным. После этого придумываем и вводим passphrase (секретная фраза):

Генерация SSH ключа

Теперь этот ключ нужно скопировать на сервер. На Linux (Debian, Ubuntu) и macOS это делается одной командой:

ssh-copy-id hostgeek@45.82.111.111

В Windows такой команды нет, поэтому ключ нужно скопировать вручную. Переходим в папку на компьютере, куда был сгенерирован ключ и с помощью любого текстового редактора открываем файл id_rsa.pub. Копируем весь текст из этого файла. Копируйте внимательно, без захвата пробелов в начале и в конце строки, иначе ничего работать не будет.

Далее подключаемся к серверу:

ssh hostgeek@45.82.111.111

В корневой директории созданного пользователя (/home/hostgeek) нужно создать папку .ssh. Наверняка вы уже находитесь в этой директории. Проверить это можно с помощью ввода команды:

pwd

Если выдает другую директорию, то перейдем в нужную с помощью команды:

cd /home/hostgeek

Теперь создадим папку .ssh в этой директории с помощью команды:

mkdir .ssh

Проверить создание папки можно просмотрев структуру текущей директории командой:

ls -la

Установим права для этой папки:

chmod 700 .ssh/

Перейдем в эту папку:

cd .ssh

Создадим файл authorized_keys в этой папке:

touch authorized_keys

Установим права для этого файла:

chmod 600 authorized_keys

Вводим команду:

cat >> authorized_keys << EOF

Вставляем ключ, который скопировали из файла id_rsa.pub и жмем Enter. Вводим команду:

EOF

И снова жмем Enter.

Отлично, мы скопировали и вставили наш ключ в файл authorized_keys. Можно проверить содержимое файла командой:

cat authorized_keys

Редактируем конфиг SSH

Откроем для редактирования конфигурационный файл SSH:

sudo nano /etc/ssh/sshd_config

Находим строчку PermitRootLogin и выставляем ему значение no. Таким образом мы запретим авторизацию под root пользователем:

PermitRootLogin no

Находим строчку PubkeyAuthentication и раскомментируем ее, убрав знак решетки (#). Так мы активируем возможность авторизации с помощью SSH-ключа:

PubkeyAuthentication yes

Находим строчку PasswordAuthentication. Раскомментируем ее и выставим значение no, тем самым запретив авторизацию по паролю:

PasswordAuthentication no

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

AllowUsers hostgeek

И сохраним файл. Перезапустим SSH:

sudo service ssh restart

Отключимся от сервера и снова авторизуемся:

ssh hostgeek@45.82.111.111

Сервер попросит ввести passphrase и после этого авторизация будет выполнена успешно. Если же теперь попытаться авторизоваться под root или каким-либо другим пользователем, то сервер выдаст ошибку доступа.

На этом настройка авторизации по SSH-ключу завершена.

Настройка брандмауэра

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

Различные приложения могут при установке зарегистрировать свой профиль в UFW. Такие профили позволяют UFW управлять этими приложениями по имени. OpenSSH (сервис, который позволяет подключаться к серверу) имеет свой профиль, зарегистрированный в UFW.

sudo ufw app list

Ответ сервера:

Available applications:
OpenSSH

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

sudo ufw allow OpenSSH

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

sudo ufw enable

Вы можете убедиться, что SSH-соединения разрешены, следующей командой:

sudo ufw status

Ответ сервера:

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

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

На этом начальная настройка сервера на Ubuntu 20.04 завершена, теперь он готов к дальнейшей работе. Если у вас возникли какие-либо вопросы по статье, то задавайте их в комментариях. Мы обязательно вам ответим.

Оставьте свой отзыв
Для публикации отзыва, пожалуйста, авторизуйтесь на сайте с помощью одной из доступных социальных сетей. Это действие займет несколько секунд Вашего времени и требуется для защиты сайта от накруток рейтингов и отзывов