# Первичная настройка сервера на 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. Откроем программу и нажмём кнопку 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 можно ознакомиться в нашей инструкции.
# Заключение
Готово! Основные операции по первичной настройке сервера и подготовке его к работе выполнены. Приступать к работе с сервером можно уже сейчас.
У нас также есть отдельная инструкция по сбору системной информации — в ней мы описали работу нескольких полезных утилит, которые помогут вам при постоянной работе с сервером.