Конфигурация сервера на CentOS зависит от задач, которые будет решать администратор. Однако есть базовые настройки, которые приходится выполнять вне зависимости от того, как будет в дальнейшем использоваться VDS. Речь идет об установке обновлений и региональных параметров, а также защите сервера.
В качестве примера настроим VDS с CentOS на Timeweb. Провайдер предоставляет удобную панель с консолью, которая поможет установить все необходимые параметры работы сервера.
Обновление системы CentOS
Сразу после установки обновляем систему. Открываем панель управления сервера, переходим на вкладку «Консоль» и авторизируемся под теми данными, которые хостер прислал в письме при создании сервера. Выполняем команду для обновления:
yum update
Важно: yum — пакетный менеджер, который используется в CentOS 7. В CentOS 8 вместо него уже dnf, но можно писать и yum — поддержка осталась.
Настройка автоматического обновления CentOS
Чтобы безопасность сервера была на высоком уровне, необходимо постоянно обновлять ядро с системными утилитами и сторонние пакеты. Необязательно ставить обновления в автоматическом режиме, достаточно просто проверять их наличие.
Автоматическая проверка обновления настраивается по-разному в зависимости от версии ОС. В CentsOS 7 используется утилита yum-cron. Устанавливается она из стандартного репозитория.
yum install yum-cron
После установки создается задание на выполнение утилиты в /etc/cron.daily и /etc/cron.hourly. По умолчанию yum-cron скачивает обнаруженные обновления, но не устанавливает их. Администратор получает на локальный почтовый ящик письмо с информацией о наличии апдейтов. Дальше он сам решает, стоит ли их ставить.
Работа yum-cron настраивается через конфигурационные файлы, расположенные по адресу /etc/yum/yum-cron.conf и /etc/yum/yum-cron-hourly.conf. Например, можно указать параметры отправки сообщения, в том числе настроить использование стороннего почтового сервера.
На CentOS 8 для настройки обновлений используется утилита dnf-automatic. Первым делом ее нужно установить из стандартного репозитория:
yum install dnf-automatic
Управляет запуском проверки обновлений по расписанию уже утилита systemd, у которой есть встроенный планировщик. Посмотрим таймеры автоматического запуска:
systemctl list-timers *dnf-*
Если заданий нет, добавим таймер вручную:
systemctl enable --now dnf-automatic.timer
По умолчанию таймер настроен на запуск dnf-automatic через час после загрузки VDS и ежедневное повторение процедуры. Конфигурационный файл таймера расположен по адресу /etc/systemd/system/multi-user.target.wants/dnf-automatic.timer.
Посмотреть и отредактировать конфигурационный файл dnf-automatic можно в /etc/dnf/automatic.conf. По умолчанию утилита только скачивает обновления, но не применяет их. Конфиги можно настроить так, как вам удобно.
Настройка времени
Сначала узнаем, какое время настроено на сервере по умолчанию. Для этого выполняем команду
date
Изменить часовой пояс можно с помощью специальной утилиты, которая входит в состав systemd
timedatectl set-timezone Europe/Moscow // Устанавливаем московское время
Следующий шаг — проверка статуса службы обновления времени. Для этого выполняем команду
timedatectl
В CentOS для синхронизации времени с интернетом есть утилита chrony. В стандартной сборке она установлена по умолчанию, в минимальной конфигурации ОС ее нет.
Как видно из скриншота выше, на этом сервере время не синхронизируется. Установим утилиту chrony вручную:
yum install chrony
Затем запускаем chrony и добавляем ее в список автозагрузки.
systemctl start chronyd systemctl enable chronyd
Проверяем статус утилиты.
systemctl status chronyd
Обращаем внимание на следующие строки:
-
System clock synchronized — должно быть значение «yes».
-
NTP service — должно быть значение «active».
После запуска утилиты chrony часы будут автоматически синхронизироваться с сервером времени в интернете.
VDS с бесплатным администрированием и поддержкой 24/7. Дарим 200 рублей на тест
Протестируй VDS Timeweb бесплатно: закажи сервер, сообщи поддержке промокод community200 и получи 200 рублей на баланс.
ЗаказатьУсловия использования промокода
Настройка файрвола
Для защиты сервера от внешних угроз нужно настроить разрешения для входящего и исходящего трафика. Используем для этого iptables. Он запущен по умолчанию. Проверим текущие правила командой
iptables -L -v -n
Важно: прежде чем настраивать файрвол, проверяем наличие доступа к консоли сервера. В противном случае ошибка может привести к тому, что вы не сможете подключиться к VDS, так как межсетевой экран закроет порты.
В CentOS 7 для управления межсетевым экраном появилась новая утилита — firewalld. По сути, это надстройка над iptables. Ее можно отключить и воспользоваться файлом с правилами.
Отключаем firewalld:
systemctl stop firewalld systemctl disable firewalld
Ставим утилиты для iptables:
yum install iptables-services
Включаем автозапуск:
systemctl enable iptables
Создаем новый файл /etc/iptables.sh и добавляем в него следующие правила:
#!/bin/bash # export IPT="iptables" export WAN=eth0 export WAN_IP=147.15.218.72 $IPT -F $IPT -F -t nat $IPT -F -t mangle $IPT -X $IPT -t nat -X $IPT -t mangle -X $IPT -P INPUT DROP $IPT -P OUTPUT DROP $IPT -P FORWARD DROP $IPT -A INPUT -i lo -j ACCEPT $IPT -A OUTPUT -o lo -j ACCEPT $IPT -A OUTPUT -o $WAN -j ACCEPT $IPT -A INPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A OUTPUT -p all -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -A FORWARD -p all -m state --state ESTABLISHED,RELATED -j ACCEPT $IPT -I FORWARD -p tcp --tcp-flags SYN,RST SYN -j TCPMSS --clamp-mss-to-pmtu $IPT -A INPUT -m state --state INVALID -j DROP $IPT -A FORWARD -m state --state INVALID -j DROP $IPT -A INPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A OUTPUT -p tcp ! --syn -m state --state NEW -j DROP $IPT -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT $IPT -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT $IPT -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT $IPT -A INPUT -p icmp --icmp-type echo-request -j ACCEPT $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT $IPT -A INPUT -i $WAN -p tcp --dport 80 -j ACCEPT $IPT -A INPUT -i $WAN -p tcp --dport 443 -j ACCEPT $IPT -N undef_in $IPT -N undef_out $IPT -N undef_fw $IPT -A INPUT -j undef_in $IPT -A OUTPUT -j undef_out $IPT -A FORWARD -j undef_fw $IPT -A undef_in -j LOG --log-level info --log-prefix "-- IN -- DROP " $IPT -A undef_in -j DROP $IPT -A undef_out -j LOG --log-level info --log-prefix "-- OUT -- DROP " $IPT -A undef_out -j DROP $IPT -A undef_fw -j LOG --log-level info --log-prefix "-- FW -- DROP " $IPT -A undef_fw -j DROP /sbin/iptables-save > /etc/sysconfig/iptables
Это один из вариантов самописного скрипта для файрвола CentOS, который сделает использование системы на сервере более безопасным.
Затем делаем файл со скриптом исполняемым:
chmod 0740 /etc/iptables.sh /etc/iptables.sh
Проверяем, что правила теперь применяются:
iptables -L -v -n
Настройка SSH
Настраивать SSH нужно не только для безопасности, но и для удобства. По умолчанию SSH работает на 22 порту. Если его не поменять, то на сервере будет зафиксированы многочисленные попытки авторизации — это боты сканируют интернет и пытаются подобрать пароли к серверам. В реальности это не так опасно, но все равно отнимает ресурсы VDS, пусть и мизерные. Избавиться от подобной активности помогает простая смена номера порта.
Открываем файл /etc/ssh/sshd_config для редактирования:
nano /etc/ssh/sshd_config
В строке Port 22 убираем комментарий и меняем значение — с 22 на 51452 или другое.
Теперь нужно разрешить доступ к этому порту в файрволе. Открываем файл /etc/iptables.sh, находим строку $IPT -A INPUT -i $WAN -p tcp --dport 22 -j ACCEPT и вместо «22» вписываем «51452» или другой номер, который ранее назначили в конфиге SSH.
Для применения изменений перезапускаем sshd:
systemctl restart sshd
Подключение репозиториев в CentOS
В стандартной сборке есть не весь софт, который может понадобиться при разработке проекта. Чтобы инсталлировать дополнительное ПО, нужно предварительно подключить репозитории. Самый популярный вариант для CentOS — EPEL. Добавить его можно из стандартного репозитория одной командой
yum install epel-release
На CentOS 7 также полезным будет репозиторий REMI, который позволяет установить более свежие версии PHP по сравнению с теми, что есть в стандартном репозитории. Выполняем команду
rpm -Uhv http://rpms.remirepo.net/enterprise/remi-release-7.rpm
Этих двух репозиториев хватает для выполнения стандартных задач. Другие подключаются уже под конкретные нужды, которые возникают при работе с сервером.
Настройка хранения истории
В стандартных настройках хранения истории команд есть ряд ограничений, которые делают ее использование неудобным:
-
сохраняется только последняя тысяча команд;
-
нет дат, только список в порядке выполнения;
-
файл со списком обновляется после завершения сессии, при параллельных сессиях часть команд может оказаться утерянной;
-
сохраняются все команды, хотя в хранении некоторых из них нет никакого смысла.
Список выполненных команд хранится в домашней директории в файле .bash_history. Его можно посмотреть через любой редактор. Для вывода списка можно выполнить в консоли следующую команду:
history
На экране появится пронумерованный список. Быстро перейти к конкретной команде можно с помощью фильтрации, например, так:
history | grep yum
Этот запрос выделит все запуски команды yum, которые доступны в истории.
На этом базовую настройку VDS с CentOS на борту можно считать завершенной.
Комментарии