Перейти к содержимому

Первоначальная настройка сервера с CentOS Stream

Последнее обновление на 07.01.2024

Привет, Мир! Одну из первых статей я решил посвятить первоначальной настройке сервера с CentOS Stream. В моем примере будет использован виртуальный сервер с уже развернутой системой. Данная инструкция позволит во многом повысить уровень безопасности вашего сервера.

Добавление пользователя с правами root

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

Для создания пользователя под именем newuser под root‘ом и используйте команду:

adduser newuser

Зададим пароль для входа в систему:

passwd newuser

Предоставим привилегии sudo, методом добавления в группу wheel:

usermod -a -G wheel newuser

Теперь пользователь newuser имеет привилегии для запуска команд через sudo.Рекомендую использовать команду sudo для выполнения команд с правами root в базовой практике. Но, при необходимости, также Вы можете войти непосредственно в учетную запись пользователя root с помощью команды sudo -i .

Настройка firewalld

Скорее всего firewalld уже установлен в системе, но даже если это и так, произведите обновление списка пакетов и зависимостей из установленных репозиториев:

sudo dnf update -y

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

sudo yum install firewalld -y

Если firewalld установлен, Вы получите подобный вывод:

Nothing to do.

Complete!

Проверяем запущена ли служба firewalld:

systemctl status firewalld

Если нет, тогда запускаем:

systemctl start firewalld

Смотрим, каким сервисам уже предоставлен доступ:

sudo firewall-cmd --permanent --list-all

Обычно из коробки есть доступ к : cockpit, ssh, dhcpv6-client. Если Вам необходимо добавить еще один сервис, используйте команду:

sudo firewall-cmd --permanent --add-service=http

Список всех сервисов можно просмотреть командой:

sudo firewall-cmd --get-services

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

sudo firewall-cmd --permanent --add-port=8080/tcp

В нашем примере будет открыт 8080 порт по протоколу tcp.

Или же Вы можете добавить свой сервис:

sudo firewall-cmd --permanent --new-service=name

* где name— имя создаваемой службы.

Прикрепить к нему порт:

sudo firewall-cmd --permanent --service=name --add-port=8080/tcp

И добавить его:

sudo firewall-cmd --permanent --add-service=name

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

sudo firewall-cmd --reload

Более углубленно с настройкой firewalld мы столкнемся в следующих записях, а сейчас продолжим настройку сервера.

Вход при помощи ключей SSH

Я в своей работе привык работать через Termius, тут все операции с ключами происходят в несколько кликов согласно инструкции. Но в данной статье рассмотрим создание новой пары из терминала Вашего клиентского ПК на Linux\MacOS\Windows.

Делается это командой:

ssh-keygen

Необходимо будет ввести имя и пароль для данной связки ключей.

Получите Вы в итоге что-то похожее на эту выдачу:

user@test-mcp13 ~ % ssh-keygen
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/user/.ssh/id_rsa): test
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in test
Your public key has been saved in test.pub
The key fingerprint is:
SHA256:aYUbw+jtQur/Nl4aaIbY2Igjqh8mivPY6T+QhwN/rJQ d0xt0p@d0xt0p-mcp13.local
The key's randomart image is:
+---[RSA 3072]----+
|                 |
|       o .       |
|      . = .      |
|.    . . *       |
| o =  o S        |
| .E*++ +         |
|=.**= = o .      |
|**.+.o .o+       |
|B=*.oo.++.       |
+----[SHA256]-----+

Команда сгенерирует Вашу пару открытых\закрытых ключей RSA. Открытый ключ будет сохранен как «test.pub» в указанной вами директории. Этот ключ необходимо добавить в файл authorized_keys папки пользователя по пути /home/newuser/.ssh/ в нашем случае.

Для этого подключаемся к серверу server.test по под пользователем newuser командой в терминале клиента:

ssh newuser@X.X.X.X

, где X.X.X.X – IP-адрес вашего сервера

Проваливаемся в домашнюю директорию и создадим каталог .ssh:

cd ~
mkdir -p .ssh

Создадим в этой папке файл authorized_keys и скопируем в него содержимое созданного файла:

sudo nano authorized_keys

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

sudo yum install nano -y

Закрываем (ctrl+x) файл и сохраняем (y) файл командами в скобках в случае использования nano. Проверяем содержимое файла командой:

cat authorized_keys

Даём необходимые права каталогу .ssh:

sudo chmod -R go= ~/.ssh

Теперь, Вам необходимо скопировать файлы ключей в необходимую для Вашей системы директорию, если ключи уже не создавались в нужной. Теперь при подключении к серверу по команде ssh newuser@X.X.X.X, не будет требоваться пароль Вашей учётной записи. Но если Вы использовали парольную фразу при создании пары ключей, её необходимо вводить при доступе к ним.

Отключим  возможность входа на сервер с помощью пароля для большей секьюрности. Отредактируем файл /etc/ssh/sshd_config:

sudo nano /etc/ssg/sshd_config

Расскоментируем удалив # строчку PasswordAuthentication и сменим yes на no. После перезапустим службу sshd:

sudo systemctl restart sshd

Установка web-интерфейса управления сервером Cockpit

Устанавливаем пакет командой

sudo yum install cockpit

Запускаем:

sudo systemctl start cockpit.socket

Включаем автозапуск сервиса:

sudo systemctl enable cockpit.socket

Вы можете добавить порт в настройки брандмауэра, хотя обычно он уже есть в стандартной настройке:

sudo firewall-cmd --add-port=9090/tcp --permanent

Или через службу:

sudo firewall-cmd --permanent --add-service=cockpit

Теперь Вы можете подключиться к вашему серверу, набрав в браузере https://X.X.X.X:9090, где X.X.X.X – IP-адрес вашего сервера.

Бонус 1. 2FA для Cockpit

Обычно все инструкции по настройке доступа к Cockpit заканчиваются, но мы же за секьюрность?! Настроим двухфакторную аутентификацию.

Для начала найдем пакет репозитория EPEL (Extra Packages for Enterprise Linux):

sudo yum search epel

Если выдача в консоли на команду типа:

===== Name Matched: epel =====
epel-release.noarch : Extra Packages for Enterprise Linux repository configuration

Тогда производим установку:

sudo yum install epel-release -y

Если нет, тогда вручную пропишем:

sudo yum install https://dl.fedoraproject.org/pub/epel/epel-release-latest-8.noarch.rpm

Устанавливаем необходимые пакеты:

sudo yum install google-authenticator qrencode-libs -y

Инициализируем программу под необходимым пользователем:

google-authenticator -s ~/.ssh/google_authenticator

Проходим все необходимые шаги:

Do you want authentication tokens to be time-based (y/n) y

Do you want me to update your "~/.google_authenticator" file (y/n) y

Do you want to disallow multiple uses of the same authentication
token? This restricts you to one login about every 30s, but it increases
your chances to notice or even prevent man-in-the-middle attacks (y/n) y

Выдачей будет файл /home/${USER}/.ssh/google_authenticator. Теперь осталось добавить требование к вводу кода при логине пользователя:

sudo bash -c 'echo "auth required pam_google_authenticator.so secret=/home/${USER}/.ssh/google_authenticator nullok" >> /etc/pam.d/cockpit'

И перезапустить службу cockpit:

sudo systemctl restart cockpit

Если Вы хотите данный метод защиты использовать и при подключении по ssh:

sudo bash -c 'echo "auth required pam_google_authenticator.so secret=/home/${USER}/.ssh/google_authenticator nullok" >> /etc/pam.d/sshd'
sudo bash -c 'echo "auth required pam_permit.so" >> /etc/pam.d/sshd'

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

И перезапустить службу sshd:

sudo systemctl restart sshd

Бонус 2. Плагин docker-cockpit

Добавлю бонусом установку плагина docker-cockpit(Источник) Так как с приходом podman его вырезали и более не развивают, но Вам он может понадобиться.

Переходим в папку приложения:

cd /usr/share/cockpit/

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

sudo wget https://github.com/mrevjd/cockpit-docker/releases/download/v2.0.3/cockpit-docker.tar.gz

Если wget не установлен:

sudo yum install wget -y

И распаковываем:

sudo tar xf cockpit-docker.tar.gz -C

Так же не забывайте о возможности задать вопросы в комментариях или Telegram канале. До связи!

Опубликовано вИнструкцииСерверные ОС

Один комментарий

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *