Установка и настройка сервера на AlmaLinux 8.10
Основные этапы установки и настройки основных служб (sshd, httpd, bind, selinux, firewalld и др.) сервера на ОС AlmaLinux версии 8.10 для безопасной работы интернет-сервера.
Почему AlmaLinux?
Потому, что поддержка операционной системы CentOS, на которой работало множество хостингов, заканчивается 30 июня 2024 года. Разработчики ПО, такие как cPanel и крупные хостеры переходят именно на AlmaLinux 8, основанную на RedHat и полностью с ней совместимую, хотя существуют и намного более эффективные ОС для этих целей, такие, как FreeBSD.
Установка AlmaLinux 8.10
Про типовую настройку всё хорошо и подробно написано на сайте разработчика ПО. Читайте там, повторяться нет смысла. А вот при настройке сервера есть множество нюансов, о которых, если не знаешь, ничего не найдешь на поверхности.
Главное - безопасность, поэтому начинаем с SSH
Что такое SSH.
Web сервер - httpd
Как правильно настроить вебсервер Apache 2.4 на AlmaLinux 8.8. Особенности настройки протокола HTTPS и взаимодействие с Cloudflare.
Установка SSL сертификата
SSL (Secure Sockets Layer) - это протокол, гарантирующий безопасную передачу данных по сети. Он комбинирует криптографическую систему с открытым ключом и блочное шифрование данных. Данные, передаваемые между веб-браузером и веб-сервером шифруются.
Установка SSL сертификата для IP адреса
Получение SSL сертификата для IP адреса возможно - читайте как это сделать.
Установка дополнительного ПО
Для эффективной работы веб-сервера требуется множество дополнительных программ и модулей. Подробная информация об их установке.
Настройка FTP сервера
Проверить работает ли FTP сервер: service vsftpd status
По умолчанию доступ к FTP серверу закрыт брандмауэром. Чтобы его открыть надо выполнить команду: firewall-cmd --zone=public --add-service=ftp --permanentи перезагрузить его: firewall-cmd --reload
Установить OpenSSH: dnf install openssh-server openssh-clients
Отредактировать конфигурацию FTP: vim /etc/vsftpd/vsftpd.conf
Разрешить доступ: firewall-cmd --zone=public --add-service=ftp --permanentи перезагрузить брэндмауэр: firewall-cmd --reload
Перезагрузить сервер: systemctl restart vsftpd
Создаем пользователя и его домашний каталог (ключ -m): useradd -m tester и устанавливаем ему пароль passwd tester
Устанавливаем ftp-клиента для командной строки: dnf install ftp
Тестируем подключение: ftp 127.0.0.1
OpenSSH у нас уже установлен и запущен, осталось добавить в конец конфигурационного файла: vim /etc/ssh/sshd_config дополнительные строки: Match group sftp
ChrootDirectory /home
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
Настройка bind (DNS)
Как правильно настроить Primary DNS сервер.
Настройка SELinux
Проверить статус SELinux и используемую политику SELinux:sestatus
Чтобы получить список логических значений, узнать их роль, а также включены они или нет, запустите команду: semanage boolean -l
Разрешаем httpd сетевые подключения: setsebool -P httpd_can_network_connect 1
Разрешаем Сетевые Информационные Службы - nis (Network Information Services): setsebool -P nis_enabled 1
Разрешаем вебсерверу Apache отправлять почту: setsebool -P httpd_can_sendmail=1
Установка и настройка почты
Для работы почты нужно запустить MTA. MTA - это аббревиатура от английского Mail Transfer Agent. Системная программа для пересылки электронных почтовых отправлений. Для того, чтобы она работала и мы могли отправлять и получать почту из внешних сетей необходимо разрешить это в брэндмауэре открыв для доступа SMTP, POP3 (POP3S) в режиме Permanent.
Также для корректной работы почты необходимо, чтобы провайдер IP-адреса сделал на своем сервере PTR запись. Эта запись в DNS, позволяет получить имя узла по его IP-адресу. Проверка PTR-записи используется при фильтрации входящей почты от нежелательных почтовых сообщений.
Проверить PTR запись можно следующими командами: dig -x 10.10.10.10nslookup -type=PTR 10.10.10.10dig ptr 10.10.10.10.in-addr.arpa
Postfix
Узнать статус службы: systemctl status postfix
При редактировании файла конфигурации рекомендуется изменять не более 2-3 параметров за раз, проверяя после этого, работает ли Postfix.
Необходимо указать имя хоста - myhostname и домена - mydomain: vim /etc/postfix/main.cf
После внесения изменений перезагрузить службу: postfix reload
При возникновении ошибки "SMTPUTF8 is required, but was not offered by host" выполнить команду: postconf smtputf8_enable=no
postfix reload
В процессе настройки службы может образоваться очередь из сообщений, которые по разным причинам не могут быть доставлены. Удалить все сообщения в очереди можно командой: postsuper -d ALL
Чтобы Postfix автоматически запускался при загрузке системы надо выполнить команду: systemctl enable postfix.service
Проверить статусы служб: systemctl list-unit-files
Вывод конфигурации Postfix в удобном для чтения формате: postconf -f
Журнал почты: /var/log/maillog
Exim
Данный MTA используется почти на 60% серверов в интернете.
Проверить версию exim: exim -bV если exim не установлен AlmaLinux предложит его установить: bash: exim: command not found...
Install package 'exim' to provide command 'exim'? [N/y] При нажатии "y" установка происходит автоматически.
Настройка DMARC, SPF и DKIM
После установки MTA необходимо внести дополнительные записи в файл зоны DNS: DMARC, SPF, DKIM.
- DMARC (Domain-based Message Authentication, Reporting, and Conformance) – сообщает принимающим почтовым серверам, что делать с полученными от сервера письмами, которые не прошли проверку SPF или DKIM.
- SPF (Sender Policy Framework) – определяет почтовые серверы и домены, которым разрешено отправлять электронную почту от имени вашего сервера.
- DKIM (DomainKeys Identified Mail) – добавляет к каждому отправляемому письму цифровую подпись, с помощью которой принимающие серверы могут проверить, не было ли письмо подделано или изменено при доставке.
Пример DMARC записи: _dmarc.example.com. 14400 IN TXT "v=DMARC1; p=reject; sp=reject;"
Пример SPF записи, где "10.10.10.10" - это IP адрес вашего сервера: example.com. 14400 IN TXT "v=spf1 a mx ip4:10.10.10.10 ~all"
Устанавливаем и настраиваем DKIM: yum search dkim
yum install opendkim.x86_64
Редактируем конфигурационный файл: vim /etc/opendkim.confи устанавливаем режим подписи и проверки: Mode sv убираем комментарии из строк с переменными, особое внимание следует обратить на пути к конфигурационным файлам, т.к. в различных документациях они могут отличаться: Socket inet:8891@127.0.0.1
Domain example.com
Keyfile /etc/opendkim/keys/example.com/default.private
KeyTable /etc/opendkim/KeyTable
SigningTable refile:/etc/opendkim/SigningTable
ExternalIgnoreList refile:/etc/opendkim/TrustedHosts
InternalHosts refile:/etc/opendkim/TrustedHosts
Редактируем файл: vim /etc/opendkim/KeyTable и дописываем туда (внимание на пути!): default._domainkey.example.com example.com:default:/etc/opendkim/keys/example.com/default.private
Редактируем файл: vim /etc/opendkim/SigningTable и дописываем туда: *@example.com default._domainkey.example.com
Редактируем файл: vim /etc/opendkim/TrustedHosts и добавляем туда: *.example.com
Создаем каталог для нашего домена: mkdir /etc/opendkim/keys/example.com и генерируем ключи:
- -b - указывает размер создаваемого ключа в битах;
- -d - домен;
- -D - каталог;
- -s - селектор (по умолчанию - default)
Делаем владельцем opendkim: chown opendkim:opendkim /etc/opendkim/keys -R
Добавляем созданный публичный ключ в файл зоны DNS. Выглядит это примерно так: default._domainkey 14400 IN TXT "v=DKIM1; k=rsa; p=[здесь длинная строка из 216 символов без квадратных скобок]" и перезагружаем named.
Подключаем Postfix к OpenDKIM: vim /etc/postfix/main.cf добавляя в конец файла следующие строки: smtpd_milters = inet:127.0.0.1:8891
non_smtpd_milters = $smtpd_milters
milter_default_action = accept
Перезагружаем OpenDKIM и Postfix: systemctl restart opendkim
systemctl restart postfix
Проверяем, что всё работает правильно: systemctl status opendkim
systemctl status postfix
Dovecot
Dovecot - это POP3/IMAP сервер предустановленный на AlmaLinux. Он необходим для доставки почты от сервера к клиентам.
Проверить статус службы: systemctl status dovecot
Редактировать конфигурацию: vim /etc/dovecot/dovecot.conf
Firewall
Полезные команды для работы с Firewall.
Перезагрузить Firewall: systemctl restart firewalld установить графический интерфейс для firewall: yum install firewall-config
Устранение ошибок и диагностика
Если при настройке каких то служб возникли неполадки и они не работают как надо, поможет диагностика.
При сбоях в работе DKIM надо проверить, слушает ли служба соответствующий порт: netstat -nap | grep 8891
tcp 0 0 127.0.0.1:8891 0.0.0.0:* LISTEN 676534/opendkim
Модель процессора: lscpuсписок оборудования: lshwсписок всех устройств PCI: lspciсписок всех групп: cat /etc/groupсписок всех групп, включая входящих в них пользователей: getent groupсписок всех групп, в которые входит пользователь "username": groups username
Работа с файлами
Определить тип файла: file example.pngформат и характеристики файлов изображений: identify example.png
Настройка OpenVPN
Как настроить частную виртуальную сеть на базе ПО с открытым кодом - OpenVPN.
Обновляем менеджер пакетов: dnf updateустанавливаем OpenVPN: dnf install openvpn
Другие настройки и команды
Полезные настройки.
Установить для пользователя в качестве редактора по умолчанию vim: export EDITOR="/usr/bin/vim"
Выключение компьютера. Прямо сейчас: shutdown -h now через 10 минут: shutdown -h +10 Позволяет графически предупредить пользователей о выключении и обеспечивает более плавное завершение работы системы, сохраняя данные и закрывая программы.
Резервное копирование
Различные варианты и схемы резервного копирования.
Метки: almalinux; selinux; bind; httpd; dns; sshd; ssl; ftp
Опрос
В каком году был сделан ваш сайт? (голосов: 24)
- до 2015 года - 23 (96%)
- в 2015 - 0 (0%)
- в 2016 - 0 (0%)
- в 2017 - 0 (0%)
- в 2018 - 1 (4%)
- в 2019 - 0 (0%)