# Первичная настройка сервера на Debian

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

В этой инструкции мы рассмотрим первичную настройку VPS на Debian 10. Мы создадим нового пользователя с правами администратора и настроим для него ssh-подключение с аутентификацией по ключу, для контроля подключений к серверу установим и настроим Uncomplicated FireWall (ufw) и Fail2ban.

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

Синтаксис команд не отличается от команды для создания нового пользователя на Ubuntu:

adduser debianuser

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

После этого нового пользователя можно добавить в группу sudo — пользователей с привилегиями администратора:

usermod -aG sudo debianuser

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

Откроем для редактирования этот файл:

visudo

В открывшемся файле в разделе User privilege specification добавим нового пользователя и разрешим ему запуск команд без введения пароля:

debianuser ALL=(ALL:ALL) ALL

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

Сменим пользователя, чтобы все дальнейшие операции выполнять от имени нового пользователя:

su debianuser

# Установка фаервола

Для установки программных пакетов на Debian используется apt. Перед началом установки обновим список доступных для установки пакетов в локальных репозиториях:

sudo apt update

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

Посмотреть доступные для обновления пакеты можно командой:

sudo apt list --upgradable

Теперь можно выполнить простое обновление всех пакетов системы:

sudo apt upgrade

Ключ upgrade только устанавливает новые пакеты. Он не удаляет старые и не устанавливает те, которые необходимо установить для дополнительных зависимостей. Это самый безопасный метод обновления системы. После него можно использовать ключ full-upgrade, который обработает все зависимости устанавливаемых новых пакетов и при необходимости обновит пакеты зависимостей:

sudo apt full-upgrade

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

sudo apt autoremove

Обновление системы закончено, можно переходить к установке фаервола:

sudo apt install ufw

После завершения установки фаервол не запускается автоматически, и список его исключений пуст, поэтому сначала настроим его и только потом запустим:

sudo ufw app list

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

sudo ufw allow OpenSSH

Теперь запустим фаервол:

sudo ufw enable

Перед запуском программа уведомит нас о том, что SSH-соединение может быть разорвано, если служба SSH не добавлена в список исключений фаервола. Но мы добавили её, поэтому соглашаемся («y») и запускаем фаервол.

После запуска можно проверить его статус:

sudo ufw status

# Output

Status: active

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

Фаервол запущен, в списке его исключений указана служба SSH.

# SSH-подключение с аутентификацией по ключу

Основная схема настройки SSH-подключения с аутентификацией по ключу стандартная и не изменяется от системы к системе: создаём два ключа (публичный и приватный) => помещаем частный ключ на сервер => при подключении указываем SSH-агенту путь к приватному ключу на локальном компьютере.

Для генерации пары ключей воспользуемся утилитой puttygen. Откроем программу и нажмём кнопку Generate, затем пошевелим мышью в определённой области окна и получим на выходе сгенерированный публичный ключ. Сохраним его в файл id_rsa.txt, приватный ключ сохраним в файл id_prkey.

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

cd ~
mkdir ~/.ssh

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

vim ~/.ssh/authorized_keys

Готово! Ключи размещены в нужных местах. Осталось настроить SSH-соединение с сервером таким образом, чтобы при подключении проверялся ключ, и запретим подключение с аутентификацией по паролю.

Для этого откроем файл с настройками ssh-подключения:

sudo vim /etc/ssh/sshd_config

Здесь найдём строку PasswordAuthentication и укажем в ней no — это запрет на подключение с аутентификацией по паролю.

Далее раскомментируем строку PubkeyAuthentication, отвечающую за подключение с аутентификацией по ключу, и строку AuthorizedKeysFile с указанием имён файлов, содержащих ключи.

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

Готово! Теперь подключаться по SSH к серверу можно только с аутентификацией по ключу и только тем пользователям, чей ключ добавлен в соответствующий файл.

# Установка и настройка Fail2ban

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

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

Скачаем и установим Fail2ban:

sudo apt install fail2ban

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

Создадим конфигурационный файл:

sudo vim /etc/fail2ban/jail.local

Здесь опишем основные настройки нашего фильтра:

[sshd]
enabled   = true
maxretry  = 6
findtime  = 1h
bantime   = 1d
ignoreip  = 127.0.0.1/8 23.34.45.56

Мы указали, что этот фильтр предназначен для защиты SSH-подключений и что после 6 неудачных попыток подключения в течение 1 часа он будет блокировать на 1 сутки IP-адрес, с которого производилось подключение. Если неудачные попытки происходили с адресов в диапазоне от 127.0.0.1 до 127.0.0.8 или с адреса 23.34.45.56, то блокировка производится не будет.

Подробнее с настройками Fail2ban можно ознакомиться в нашей инструкции.

# Заключение

Готово! Основные операции по первичной настройке сервера и подготовке его к работе выполнены. Приступать к работе с сервером можно уже сейчас.

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