Данная статья описывает процесс установки и настройки серверного дистрибутива CentOS 8, хотя руководство полностью применимо и к 7 версии системы. Есть небольшие различия, но в общем и целом всё подходит. Приведённые ниже советы повышают безопасность и удобство работы с системой.
В CentOS 7 используется пакетный менеджер yum
, а в CentOS 8 -dnf
. В 8 версии yum это символьная ссылка на dnf. Будет работать как первое, так и второе написание.
Для начала скачиваем последний образ системы
Записываем на флешку или диск. Перед записью нужно обязательно проверить какому устройству соответствует ваша флешка. У меня это sdb
. Есть неплохая кроссплатформенная, графическая утилита etcher, которую многие рекоммендуют. Можно записать любым удобным способом, я предпочитаю dd
.
Записываем
sudo dd if=CentOS-8.1.1911-x86_64-boot.iso of=/dev/sdb
Подключаем флешку и загружаемся с неё.
Выбираем язык.
Дальше попадаем в обзор установки
Настраиваем время и часовой пояс.
Настройка сети. Заходим в настройки сети и включаем интерфейс.
Выбор программ
Просто выбираю Минимальную установку(так как нам на сервере не нужна графическая оболочка) и нажимаю Готово. Нужна максимально легкая и чистая система, без лишнего софта. Всё остальное доставлю вручную.
Разбивка диска.
Выбираем диск на который будет производится установка, а также выбираем свою конфигурацию
Переключаем на Стандартный раздел, нажимаем Создать автоматически, потом кнопку Готово
В разметке диска я меняю файловую систему root раздела. C xfs на ext4. Но можно оставить и ту которую предлагает инсталятор, если знаете что делаете.
Соглашаемся с разбивкой нашего диска.
Заходим в KDUMP и отключаем его. Убираем галочку.
Нажимаем Начать установку
Во время установки задаём пароль для root пользователя. Также можем создать дополнительного юзера, если необходимо.
Настройка сервера после установки
Если в консоли вместо русского текста отображаются иероглифы, то необходимо в файле /etc/vconsole.conf изменить шрифт.
...
FONT="cyr-sun16"
...
Обновляем систему
dnf update
Для настройки CentOS часто нужен софт которого нет в стандартном репозитории. Для установки дополнительных пакетов подключим репозиторий. Самый популярный это EPEL.
dnf install epel-release
Теперь доустанавливаем необходимые пакеты:
dnf install mc htop vim net-tools
Отключаем SELinux (Необязательно)
В файле /etc/sysconfig/selinux
...
SELINUX=disabled
...
Для управления сетевыми настройками в CentOS используем графическую утилиту nmtui.
Настройка ssh
Для удалённого управления сервером донастроим ssh, немного увеличив безопасность.
Открываем для редактированя файл настроек /etc/ssh/sshd_config
- Меняем порт на нестандартный, например
25111
- Запрещаем подключатся root‘ом.
- Указываем для кого можно логинится. После AllowUsers перечисляем пользователей.
Port 25111
PermitRootLogin no
AllowUsers user
Сохраняем и перезапускаем сервис
systemctl restart sshd
Настройка firewall
Мне удобнее использовать iptables, поэтому отключаем firewalld, который используется по умолчанию. Пусть каждый использует что ему больше нравится.
systemctl stop firewalld
systemctl disable firewalld
Доставляем пакеты
dnf install iptables-services
Ставим в автозапуск
systemctl enable iptables
Создаём файл iptables.sh
#!/bin/bash
iptables -F
iptables -X
iptables -t nat -F
iptables -t nat -X
iptables -t mangle -F
iptables -t mangle -X
iptables -t raw -F
iptables -t raw -X
iptables -t security -F
iptables -t security -X
iptables -P INPUT ACCEPT
iptables -P FORWARD ACCEPT
iptables -P OUTPUT ACCEPT
iptables -N open
iptables -N interfaces
iptables -A INPUT -p icmp -j ACCEPT
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -j interfaces
iptables -A INPUT -j open
iptables -A INPUT -p tcp -j REJECT --reject-with tcp-reset
iptables -A INPUT -p udp -j REJECT --reject-with icmp-port-unreachable
iptables -P INPUT DROP
iptables -A INPUT -p tcp ! --syn -m state --state NEW -j DROP
iptables -A INPUT -f -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL ALL -j DROP
iptables -A INPUT -p tcp --tcp-flags ALL NONE -j DROP
#--------------------- OPEN ---------------------
iptables -A interfaces -i lo -j ACCEPT
iptables -A open -p tcp --dport 80 -j ACCEPT # HTTP
iptables -A open -p tcp --dport 443 -j ACCEPT # HTTPS
iptables -A open -p tcp --dport 25111 -j ACCEPT # SSH
#--------------------- SAVE ---------------------
/sbin/iptables-save > /etc/sysconfig/iptables
Делаем файл исполняемым и запускаем его.
chmod +x iptables.sh
./iptables.sh
Перезагружаем сервер.
systemctl reboot