`

Первоначальная настройка и защита VPS-сервера на CentOS 7

Введение

После того как вы установили CentOS на свой VPS-сервер, крайне важно выполнить несколько дополнительных действий по настройке сервера и обеспечении его защиты от различных атак. Далее в статье я рассмотрю наиболее главные, на мой взгляд, шаги для создания полноценного и защищенного VPS-сервера.

Шаг #1: Смена пароля для учетной записи - root

После окончания создания нового VPS-сервера, вам будет выдан пароль для суперпользователя root. Сразу после подключения к вашему серверу по SSH, необходимо его изменить, т.к. иногда выданный пароль не является устойчивым к подбору (brutforce).

Зададим новый пароль для root.

passwd

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

Изначально, после установки CentOS и других дистрибутивов Linux, доступен пользователь под именем root. Суперпользователь root, представляет собой учетную запись администратора системы и имеет максимальные привилегии в системе. Из-за своих высоких возможностей, использовать учетную запись root рекомендуется только в особых случаях, т.к. это способствует случайному совершению деструктивных и необратимых ошибок, исправить которые будет очень сложно.

В связи с этим, администратор сервера создаёт нового пользователя, которому частично делегируют привилегии root. Ниже рассмотрим процесс создания и настройки учетной записи нового пользователя системы.

Создадим новую учетную запись, из под которой будем всегда работать на сервере.

adduser username

Добавим пароль для входа в систему.

passwd username

Если вдруг вы забудете пароль, то этой же командой можно будет установить новый пароль, а старый пароль будет сброшен.

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

Сделать это можно добавив учетную запись в группу суперпользователей - wheel.

gpasswd -a username wheel

Теперь новый пользователь username может исполнять команды от имени root, используя утилиту sudo.

Для того чтобы перейти в учетную запись нового пользователя используется команда su:

su -l username

Шаг #3: Включение файрвола

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

Установим службу файрвола:

sudo yum install firewalld

Включим файрвол и добавим его в список служб для автозапуска при рестарте системы:

sudo systemctl start firewalld;
sudo systemctl enable firewalld;

Шаг #4: Настройка конфигурации SSH

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

Откроем конфигурационный файл - /etc/ssh/sshd_config:

sudo vi /etc/ssh/sshd_config

Изменим значение директивы PermitRootLogin.

Если вы недостаточно опытный пользователь Linux систем и ваш хостер не предоставляет вам VNC-панель, то запрещать root доступ по ssh, не рекомендуется, т.к. при возникновении критической ошибки, которую можно исправить, только из root записи, вы не сможете ничего сделать.

Также изменим стандартный номер порта SSH, т.к. именно на стандартный 22 порт "стучатся" брутфорс-программы.

Все порты можно разделить на три группы:

  • 0 - 1023 - хорошо известные порты, также относятся к системным портам;
  • 1024 - 49151 - зарегистрированные порты, также относятся к пользовательским портам;
  • 49152 - 65535 - динамические порты, также относятся к частным портам.

Для начала выберем номер порта, на котором будет работать SSH. Выбирать значение номера порта рекомендуется в пределах 49152 - 65535. Чтобы выбрать какой-либо порт, сначала нужно проверить не занят ли он другим сервисом. Для примера, я выберу порт с номером 63356.

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

cat /etc/services | grep 63356/tcp

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

Теперь в файле /etc/ssh/sshd_config изменим значение директивы Port:

Перезапустим сервис SSH для принятия настроек.

sudo systemctl restart sshd

Укажем файрволу, чтобы он пропускал подключения по новому SSH порту - 63356

sudo firewall-cmd --zone=public --permanent --add-port=63356/tcp;
sudo firewall-cmd --reload;

Убедимся, что добавленный порт прослушивается (активен):

ss -lntu | grep 63356

[meliorem@centos ~]$ ss -lntu | grep 63356
tcp    LISTEN     0      128       *:63356                 *:*
tcp    LISTEN     0      128      :::63356                :::*

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

ssh username@server_ip_adress -p 63356

Шаг #5: Смена имени сервера (hostname)

В арендуемые VPS-сервера хостеры часто устанавливают значение переменной $HOSTNAME, на свое усмотрение. Давайте поменяем дефолтное имя хоста на другое. Чаще всего именем для хоста служит какой-нибудь домен.

Полную информацию о имени хоста можно узнать следующей командой:

hostnamectl status

[meliorem@centos ~]$ hostnamectl status
   Static hostname: hostername.ru
         Icon name: computer-vm
           Chassis: vm
        Machine ID: 1a7dd5067ac44318a143dae4b60da0ba
           Boot ID: 87e4dd5f9d9b4410b096c2768dea8235
    Virtualization: kvm
  Operating System: CentOS Linux 7 (Core)
       CPE OS Name: cpe:/o:centos:centos:7
            Kernel: Linux 3.10.0-693.2.2.el7.x86_64
      Architecture: x86-64

Изменим имя сервера:

sudo hostnamectl set-hostname "example.ru"

Убедимся, что имя поменялось:

hostname

Шаг #6: Настройка временной зоны

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

Проверим, то по какой временной зоне работает наш сервер:

timedatectl

Получить список доступных временных зон:

timedatectl list-timezones

Я живу в Московском часовом поясе, поэтому мне удобно, чтобы и сервер работал по такому же времени.

Установить время сервера по Москве можно так:

timedatectl set-timezone Europe/Moscow

Шаг #7: Настройка локали

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

Список всех доступных локалей хранится в каталоге - /usr/share/i18n/locales

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

locale

[meliorem@centos ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=

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

sudo localectl set-locale LC_TIME=ru_RU.UTF-8

Язык в результат выполнения команды date, изменится на Русский(после перезагрузки сервера).

Для установки Русского-языка в систему, используйте команду:

sudo localectl set-locale LANG=ru_RU.UTF-8

Установка Русской локали для всех переменных окружения:

sudo localectl set-locale LC_ALL=ru_RU.UTF-8

Проверка установки локали:

lacalectl status

Шаг #8: Отключение SElinux

SELinux (англ. Security-Enhanced Linux — Linux с улучшенной безопасностью) — реализация системы принудительного контроля доступа, которая может работать параллельно с классической избирательной системой контроля доступа.

Не смотря на то, что SElinux позволяет улучшить управление безопасностью, он чаще мешает чем приносит реальную пользу, поэтому рекомендую его отключить.

Проверить включен ли SElinux можно командой ниже:

sestatus

Для отключения SElinux отредактируйте файл - /etc/selinux/config и для директивы SELINUX установите значение disabled.

sudo vi /etc/selinux/config

После выключения SElinux необходимо перезапустить сервер:

reboot

Заключение

В этой статье я рассказал далеко не обо всех действиях, которые необходимы для полноценной настройки вашего VPS-сервера. Существует еще немало особенностей, которые нужно учесть после установки свежей операционной системы на ваш VPS.