В данном руководстве – первоначальная настройка сервера с CentOS Stream. После установки CentOS Stream, так же как и других серверных операционных систем на линуксе, требуется произвести её базовую конфигурацию. Данные действия позволят во многом повысить уровень безопасности вашего сервера.
Добавление пользователя с привилегиями sudo
Первым шагом вам нужно избавить себя от необходимости использовать в своей повседневной работе учётную запись root
. Для этого добавьте в систему нового пользователя, задайте этому пользователю пароль и предоставьте ему привилегии учётной записи root
.
Для создания нового пользователя под именем new-user
зарегистрируйтесь с системе root
‘ом и используйте команду:
# adduser new-user
Теперь создайте новому пользователю пароль для входа в систему:
# passwd new-user
И наконец, для предоставления ему привилегий sudo, пользователя new-user
необходимо добавить в группу wheel
:
# usermod -a -G wheel new-user
С этого момента вы можете использовать для администрирования учётную запись пользователя new-user
. Для регистрации в системе из-под пользователя root
используйте:
# su new-user
Либо, заново подключитесь к вашему VPS. Знак приглашения ко вводу команд при этом изменится с #
на $
. Для запуска команды с правами суперпользователя используйте программу sudo
:
$ sudo enter-your-instruction
Настройка базового брандмауэра
На следующим этапе, необходимо будет произвести настройки на межсетевом экране вашего сервера. В CentOS Stream функцию брандмауэра выполняет такой сервис, как firewalld
.
Скорее всего firewalld
уже входит в состав служб операционной системы, но даже если это и так, произведите обновление списка пакетов и зависимостей из репозитория CentOS Stream:
$ sudo dnf update -y
После этого произведите инсталляцию брандмауэра:
$ sudo dnf install firewalld -y
Если firewalld
уже установлен, вы увидите подобный вывод:
Следующей командой проверьте, запущена ли служба firewalld
:
$ systemctl status firewalld
Система должна откликнуться примерно так:
Теперь, необходимо посмотреть, каким сервисам уже предоставлен доступ через ваш брандмауэр:
$ sudo firewall-cmd --permanent --list-all
Обратите внимание на строку services
:
В этой строке перечислены службы, для которых открыт доступ через firewalld
. Добавление в этот список ещё одного сервиса, на примере http
, будет выглядеть так:
$ sudo firewall-cmd --permanent --add-service=http
Если вы повторно запустите просмотр параметров firewalld
, то в строке services
вы увидите добавленную службу http
:
Полный же список сервисов, доступных для настройки в брандмауэре, можно посмотреть через команду:
$ sudo firewall-cmd --get-services
Для того, чтобы произведённые изменения начали действовать, необходимо произвести перезапуск firewalld
:
$ sudo firewall-cmd --reload
Аутентификация при помощи ключей SSH
Теперь, рассмотрим вопрос настройки возможности подключения к вашему серверу без использования пароля, но с помощью ключей SSH.
Сначала создайте пару ключей на своей клиентской рабочей станции (локальном компьютере). Для этого наберите в командной строке:
> ssh-keygen
Вы можете использовать опцию -b 4096
для создания более защищённых 4096-битных ключей вместо 2048-битных.
Далее, укажите имя файла, в котором будут сохранены создаваемые ключи, либо нажмите Enter
для использования файла по умолчанию. При этом, если вы перезапишете ключи в файл с уже существующими ключами, вы уже не сможете подключаться к вашему серверу с использованием ранее созданных ключей.
Затем, система попросит вас ввести парольную фразу, которую вы будете в дальнейшем использовать при подключении к серверу, что безусловно будет являться дополнительной защитой вашего сеанса. Но можно обойтись и без неё, нажав Enter
.
В итоге, система выдаст вам нечто похожее на:
Это значит, что пару открытого и секретного ключей вы создали.
Теперь, необходимо скопировать открытый ключ на ваш сервер. Для этого нужно будет добавить содержимое файла с созданным открытым ключом на вашей локальной станции в файл authorized_keys
, расположенный на вашем сервере. Откройте для просмотра или редактирования ваш файл с открытым ключом (файл с расширением .pub) и скопируйте его содержимое в буфер обмена.
Подключитесь к серверу и создайте в домашней директории каталог /.ssh/
:
$ cd ~
$ mkdir -p .ssh
Создайте в этой папке файл authorized_keys
и скопируйте в него содержимое буфера обмена, например, при помощи редактора vi:
$ vi authorized_keys
В конечном итоге, после сохранения изменений в файле authorized_keys
, он должен будет выглядеть также, как и файл с открытым ключом на локальном компьютере:
$ cat authorized_keys
Далее, каталогу /.ssh/
необходимо дать соответствующие права:
$ chmod -R go= ~/.ssh
Теперь, если вы ранее создавали пару открытого и секретного ключей в каталоге, отличном от дефолтного, вам необходимо скопировать файлы ключей в директорию, используемую вашей локальной рабочей станцией для их хранения. После чего, при последующих подключениях к серверу по SSH (> ssh new-user@your-server-ip
), система не будет требовать от вас введения пароля вашей учётной записи. Но, вместе с тем, если при создании ключей вы использовали парольную фразу, её необходимо будет набрать при входе на сервер.
И сейчас, с точки зрения повышения безопасности на ещё более высокий уровень, было бы логично отключить возможность входа на сервер с помощью пароля. Для чего, необходимо отредактировать файл sshd_config
, который находится в каталоге /etc/ssh/
:
$ cd /etc/ssh
$ vi sshd_config
В этом файле найдите строку, содержащую PasswordAuthentication
, раскомментируйте её, убрав знак #
в начале строки, если он есть. И в конце строки поменяйте значение yes
на значение no
. Закройте файл, сохранив внесённые изменения.
И теперь, после перезагрузки службы sshd
, подключение к вашему серверу с использованием пароля станет невозможным:
$ sudo systemctl restart sshd
Управление сервером через web-интерфейс
Первоначальная настройка сервера с CentOS Stream завершается запуском cockpit
.
Вашим сервером можно управлять при помощи подключения к нему через web-интерфейс.
Для этого необходимо установить предназначенную для этого службу. Она называется cockpit
:
$ sudo dnf install cockpit
По окончании инсталляции сервиса, его необходимо запустить:
$ sudo systemctl start cockpit.socket
А также, добавить службу в автозапуск:
$ sudo systemctl enable cockpit.socket
Подключение к web-интерфейсу происходит через порт 9090. Добавьте возможность этого подключения в брандмауэр сервера и перезапустите firewalld
:
$ sudo firewall-cmd --add-port=9090/tcp --permanent
$ sudo firewall-cmd --reload
И теперь вы сможете подключиться к вашему VPS, набрав в браузере https://X.X.X.X:9090
, где X.X.X.X – IP-адрес вашего сервера:
Таким образом, вы сможете администрировать свой сервер, используя более приятную web-оболочку.