Серверные инструкции · 12 min read · Oct 24, 2025
Идеальный сервер CentOS 7.4 с Apache, Postfix, Dovecot, Pure-FTPD, BIND и ISPConfig 3.1 - Страница 2
7 Установка Dovecot
Dovecot можно установить следующим образом:
yum -y install dovecot dovecot-mysql dovecot-pigeonholeСоздайте пустой файл dovecot-sql.conf и создайте символьные ссылки:
touch /etc/dovecot/dovecot-sql.conf
ln -s /etc/dovecot/dovecot-sql.conf /etc/dovecot-sql.conf
ln -s /etc/dovecot/dovecot.conf /etc/dovecot.confТеперь создайте ссылки для автозагрузки системы и запустите Dovecot:
systemctl enable dovecot
systemctl start dovecot8 Установка Postfix
Postfix можно установить следующим образом:
yum -y install postfixЗатем отключите Sendmail и запустите Postfix и MariaDB (MySQL):
systemctl enable mariadb.service
systemctl start mariadb.servicesystemctl stop sendmail.service
systemctl disable sendmail.service
systemctl enable postfix.service
systemctl restart postfix.serviceМы отключаем sendmail, чтобы убедиться, что он не запустится в случае, если он установлен на вашем сервере. Поэтому сообщение об ошибке “Не удалось выполнить вызов метода: единица sendmail.service не загружена.” можно игнорировать.
9 Установка Getmail
Getmail можно установить следующим образом:
yum -y install getmail10 Установка паролей MySQL и настройка phpMyAdmin
Установите пароли для учетной записи root MySQL:
mysql_secure_installation[root@server1 tmp]# mysql_secure_installation
NOTE: РЕКОМЕНДУЕТСЯ ЗАПУСКАТЬ ВСЕ ЧАСТИ ЭТОГО СКРИПТА ДЛЯ ВСЕХ СЕРВЕРОВ MariaDB В ПРОИЗВОДСТВЕ! ПОЖАЛУЙСТА, ВНИМАТЕЛЬНО ПРОЧИТАЙТЕ КАЖДЫЙ ШАГ!Чтобы войти в MariaDB для ее защиты, нам нужен текущий
пароль для пользователя root. Если вы только что установили MariaDB, и
вы еще не установили пароль root, пароль будет пустым,
поэтому просто нажмите Enter здесь.Введите текущий пароль для root (нажмите Enter для отсутствия):
Хорошо, пароль успешно использован, продолжаем...Установка пароля root гарантирует, что никто не сможет войти в MariaDB
пользователем root без надлежащей авторизации.
Установить пароль root? [Y/n] <-- ENTER
Новый пароль: <-- вашпарольrootsql
Повторите новый пароль: <-- вашпарольrootsql
Пароль успешно обновлен!
Перезагрузка таблиц привилегий..
... Успех!
По умолчанию установка MariaDB имеет анонимного пользователя, позволяя любому
войти в MariaDB без необходимости создания учетной записи пользователя. Это предназначено только для тестирования и для того, чтобы установка
проходила немного легче. Вы должны удалить их перед переходом в
производственную среду.
Удалить анонимных пользователей? [Y/n] <-- ENTER
... Успех!
Обычно root
должен иметь возможность подключаться только с 'localhost'. Это
гарантирует, что кто-то не сможет угадать
пароль root из сети.
Запретить удаленный вход root? [Y/n] <-- ENTER
... Успех!
По умолчанию, MariaDB поставляется с базой данных под названием 'test', к которой любой может
получить доступ. Это также предназначено только для тестирования и должно быть удалено
перед переходом в производственную среду.
Удалить тестовую базу данных и доступ к ней? [Y/n] <-- ENTER
- Удаление тестовой базы данных...
... Успех!
- Удаление привилегий на тестовую базу данных...
... Успех!
Перезагрузка таблиц привилегий гарантирует, что все изменения, сделанные
до сих пор, вступят в силу немедленно.
Перезагрузить таблицы привилегий сейчас? [Y/n] <-- ENTER
... Успех!
Очистка...
Все готово! Если вы завершили все вышеперечисленные шаги, ваша установка MariaDB
теперь должна быть защищена.
Спасибо за использование MariaDB!
[root@server1 tmp]#Теперь мы настраиваем phpMyAdmin. Мы изменяем конфигурацию Apache, чтобы phpMyAdmin разрешал подключения не только с localhost (закомментировав две строки “Require ip” и добавив новую строку “Require all granted” в разделе
nano /etc/httpd/conf.d/phpMyAdmin.conf# phpMyAdmin - Веб-браузер MySQL на основе php
#
# По умолчанию разрешает только localhost
#
# Но разрешение phpMyAdmin для любого, кроме localhost, следует считать
# опасным, если не защищено SSL
Alias /phpMyAdmin /usr/share/phpMyAdmin
Alias /phpmyadmin /usr/share/phpMyAdmin
# Apache 2.4
# Require ip 127.0.0.1
# Require ip ::1
Require all granted
# Apache 2.2
Order Deny,Allow
Deny from All
Allow from 127.0.0.1
Allow from ::1
Далее мы изменяем аутентификацию в phpMyAdmin с cookie на http:
nano /etc/phpMyAdmin/config.inc.php[...]
/* Тип аутентификации */
$cfg['Servers'][$i]['auth_type'] = 'http';
[...]Затем мы создаем ссылки для автозагрузки системы для Apache и запускаем его:
systemctl enable httpd.service
systemctl restart httpd.serviceТеперь вы можете направить свой браузер на http://server1.example.com/phpmyadmin/ или http://192.168.1.100/phpmyadmin/ и войти с именем пользователя root и вашим новым паролем root MySQL.
11 Установка Amavisd-new, SpamAssassin, ClamAV и Postgrey
Чтобы установить amavisd-new, SpamAssassin и ClamAV, выполните следующую команду:
yum -y install amavisd-new spamassassin clamav-server clamav-data clamav-update clamav-filesystem clamav clamav-scanner-systemd clamav-devel clamav-lib clamav-server-systemd unzip bzip2 perl-DBD-mysql postgrey re2cОтредактируйте файл конфигурации freshclam /etc/freshclam.conf
nano /etc/freshclam.confи проверьте, что строка “Example” закомментирована, как показано ниже:
[....]
# Example
[....]Чтобы включить автоматические обновления сигнатур ClamAV с помощью freshclam, отредактируйте файл /etc/sysconfig/freshclam:
nano /etc/sysconfig/freshclamи поставьте # перед последней строкой, чтобы она выглядела так, если это еще не так:
# FRESHCLAM_DELAY=Затем мы запускаем freshclam, amavisd и clamd.amavisd:
sa-update
freshclam
systemctl enable amavisd.service
systemctl start amavisd.service
systemctl start [email protected]
systemctl enable postgrey.service
systemctl start postgrey.service12 Установка Apache с mod_php, mod_fcgi/PHP, PHP-FPM
ISPConfig 3 позволяет использовать mod_php, mod_fcgi/PHP, cgi/PHP и PHP-FPM на основе каждого сайта.
Мы можем установить Apache2 с mod_php, mod_fcgid и PHP следующим образом:
yum -y install php php-devel php-gd php-imap php-ldap php-mysql php-odbc php-pear php-xml php-xmlrpc php-pecl-apc php-mbstring php-mcrypt php-mssql php-snmp php-soap php-tidy curl curl-devel perl-libwww-perl ImageMagick libxml2 libxml2-devel mod_fcgid php-cli httpd-devel php-fpm wgetДалее мы открываем /etc/php.ini…
nano /etc/php.ini… и изменяем отчет об ошибках (так, чтобы уведомления больше не отображались), устанавливаем часовой пояс и раскомментируем cgi.fix_pathinfo=1:
[...]
;error_reporting = E_ALL & ~E_DEPRECATED
error_reporting = E_ALL & ~E_NOTICE & ~E_DEPRECATED & ~E_STRICT
[...]
; cgi.fix_pathinfo обеспечивает *реальную* поддержку PATH_INFO/PATH_TRANSLATED для CGI. PHP's
; предыдущее поведение заключалось в том, чтобы установить PATH_TRANSLATED в SCRIPT_FILENAME и не понимать,
; что такое PATH_INFO. Для получения дополнительной информации о PAppp.tldTH_INFO смотрите спецификации cgi. Установка
; этого в 1 заставит PHP CGI исправить свои пути в соответствии со спецификацией. Установка
; нуля заставляет PHP вести себя как раньше. По умолчанию 1. Вы должны исправить свои скрипты
; чтобы использовать SCRIPT_FILENAME вместо PATH_TRANSLATED.
; http://www.php.net/manual/en/ini.core.php#ini.cgi.fix-pathinfo
cgi.fix_pathinfo=1
[...]
date.timezone = 'Europe/Berlin'
[...]Включите httpd и PHP-FPM, чтобы они запускались при загрузке, и запустите службу PHP-FPM.
systemctl start php-fpm.service
systemctl enable php-fpm.service
systemctl enable httpd.serviceНаконец, мы перезапускаем Apache:
systemctl restart httpd.serviceТеперь мы добавим поддержку Let’s encrypt.
mkdir /opt/certbot
cd /opt/certbot
wget https://dl.eff.org/certbot-auto
chmod a+x ./certbot-autoТеперь выполните команду certboot-auto, которая загрузит и установит программное обеспечение и его зависимости.
./certbot-autoКоманда затем сообщит вам, что “в ваших конфигурационных файлах не найдено имен” и спросит, следует ли продолжать, пожалуйста, выберите “c”, чтобы отменить здесь, так как сертификаты будут созданы ispconfig.

13 Установка mod_python
Модуль apache mod_python недоступен в виде RPM-пакета, поэтому мы скомпилируем его из исходников. Первый шаг - установить файлы разработки python и загрузить текущую версию mod_python в виде файла tar.gz
yum -y install python-develcd /usr/local/src/
wget http://dist.modpython.org/dist/mod_python-3.5.0.tgz
tar xfz mod_python-3.5.0.tgz
cd mod_python-3.5.0и затем настроить и скомпилировать модуль.
./configure
makeВ скомпилированном модуле есть ошибка, которая приведет к сбою установки с ошибкой “ version = “фатальная ошибка: не является репозиторием git (или любым из родительских каталогов): .git “. Чтобы исправить это, выполните эту команду sed (команда - одна строка!).
sed -e 's/(git describe --always)/(git describe --always 2>\/dev\/null)/g' -e 's/`git describe --always`/`git describe --always 2>\/dev\/null`/g' -i $( find . -type f -name Makefile\* -o -name version.sh )Затем установите модуль с помощью этой команды.
make installи включите модуль в Apache:
echo 'LoadModule python_module modules/mod_python.so' > /etc/httpd/conf.modules.d/10-python.conf
systemctl restart httpd.service14 Установка PureFTPd
PureFTPd можно установить с помощью следующей команды:
yum -y install pure-ftpdЗатем создайте ссылки для автозагрузки системы и запустите PureFTPd:
systemctl enable pure-ftpd.service
systemctl start pure-ftpd.serviceТеперь мы настраиваем PureFTPd для разрешения FTP и TLS-сессий. FTP - это очень небезопасный протокол, так как все пароли и все данные передаются в открытом виде. Используя TLS, всю связь можно зашифровать, что делает FTP гораздо более безопасным.
OpenSSL необходим для TLS; чтобы установить OpenSSL, мы просто выполняем:
yum install opensslОткройте /etc/pure-ftpd/pure-ftpd.conf…
nano /etc/pure-ftpd/pure-ftpd.confЕсли вы хотите разрешить FTP и TLS-сессии, установите TLS в 1, убрав # перед строкой TLS. Настоятельно рекомендуется включить TLS.
[...]
# Этот параметр может принимать три значения :
# 0 : отключить уровень шифрования SSL/TLS (по умолчанию).
# 1 : принимать как традиционные, так и зашифрованные сессии.
# 2 : отклонять соединения, которые не используют механизмы безопасности SSL/TLS,
# включая анонимные сессии.
# Не раскомментируйте это слепо. Убедитесь, что :
# 1) Ваш сервер был скомпилирован с поддержкой SSL/TLS (--with-tls),
# 2) У вас есть действующий сертификат,
# 3) Только совместимые клиенты смогут войти.
TLS 1
[...]Чтобы использовать TLS, мы должны создать SSL-сертификат. Я создаю его в /etc/ssl/private/, поэтому сначала создаю этот каталог:
mkdir -p /etc/ssl/private/После этого мы можем сгенерировать SSL-сертификат следующим образом:
openssl req -x509 -nodes -days 7300 -newkey rsa:2048 -keyout /etc/ssl/private/pure-ftpd.pem -out /etc/ssl/private/pure-ftpd.pemНазвание страны (2 буквы) [XX]: <– Введите название вашей страны (например, “DE”).
Название штата или провинции (полное название) []: <– Введите название вашего штата или провинции.
Название населенного пункта (например, город) [Default City]: <– Введите ваш город.
Название организации (например, компания) [Default Company Ltd]: <– Введите название вашей организации (например, название вашей компании).
Название подразделения (например, отдел) []: <– Введите название вашего подразделения (например, “IT Department”).
Общее название (например, ваше имя или имя хоста вашего сервера) []: <– Введите полное доменное имя системы (например, “server1.example.com”).
Адрес электронной почты []: <– Введите ваш адрес электронной почты.
Измените разрешения SSL-сертификата:
chmod 600 /etc/ssl/private/pure-ftpd.pemСоздайте файл DHParam:
openssl dhparam -out /etc/ssl/private/pure-ftpd-dhparams.pem 2048Наконец, перезапустите PureFTPd:
systemctl restart pure-ftpd.serviceВот и все. Теперь вы можете попробовать подключиться с помощью вашего FTP-клиента; однако вы должны настроить ваш FTP-клиент для использования TLS.
15 Установка BIND
Мы можем установить BIND следующим образом:
yum -y install bind bind-utils havegedСделайте резервную копию существующего файла /etc/named.conf и создайте новый следующим образом:
cp /etc/named.conf /etc/named.conf_bak
cat /dev/null > /etc/named.conf
nano /etc/named.conf// named.conf
//
// Предоставлено пакетом Red Hat bind для настройки ISC BIND named(8) DNS
// сервера как кэшируемого только nameserver (только как локальный DNS-резолвер).
//
// См. /usr/share/doc/bind*/sample/ для примеров конфигурационных файлов named.
//
options {
listen-on port 53 { any; };
listen-on-v6 port 53 { any; };
directory "/var/named";
dump-file "/var/named/data/cache_dump.db";
statistics-file "/var/named/data/named_stats.txt";
memstatistics-file "/var/named/data/named_mem_stats.txt";
allow-query { any; };
allow-recursion {"none";};
recursion no;
};
logging {
channel default_debug {
file "data/named.run";
severity dynamic;
};
};
zone "." IN {
type hint;
file "named.ca";
};
include "/etc/named.conf.local";Создайте файл /etc/named.conf.local, который включается в конце /etc/named.conf ( /etc/named.conf.local позже будет заполнен ISPConfig, если вы создадите DNS-зоны в ISPConfig):
touch /etc/named.conf.localЗатем создаем ссылки для автозагрузки и запускаем BIND:
systemctl enable named.service
systemctl start named.service
systemctl enable haveged.service
systemctl start haveged.service16 Установка Webalizer и AWStats
AWStats можно установить следующим образом:
yum -y install webalizer awstats perl-DateTime-Format-HTTP perl-DateTime-Format-BuilderОтредактируйте файл /etc/httpd/conf.d/awstats.conf:
nano /etc/httpd/conf.d/awstats.confи измените строку:
Require localна:
Require all grantedИ перезапустите apache:
systemctl restart httpd.service17 Установка Jailkit
Jailkit используется для chroot SSH пользователей и cronjobs. Его можно установить следующим образом (важно: Jailkit должен быть установлен до ISPConfig - его нельзя установить позже!):
cd /tmp
wget http://olivier.sessink.nl/jailkit/jailkit-2.19.tar.gz
tar xvfz jailkit-2.19.tar.gz
cd jailkit-2.19
./configure
make
make install
cd ..
rm -rf jailkit-2.19*18 Установка Fail2Ban
Это необязательно, но рекомендуется, потому что монитор ISPConfig пытается показать журнал.
yum -y install iptables-services fail2ban fail2ban-systemd
systemctl stop firewalld.service
systemctl mask firewalld.service
systemctl disable firewalld.service
systemctl stop firewalld.serviceЗатем создайте файл /etc/fail2ban/jail.local и включите мониторинг для ssh, email и ftp сервиса.
nano /etc/fail2ban/jail.localДобавьте следующий контент в файл jail.local:
[sshd]
enabled = true
action = iptables[name=sshd, port=ssh, protocol=tcp]
[pure-ftpd]
enabled = true
action = iptables[name=FTP, port=ftp, protocol=tcp]
maxretry = 3
[dovecot]
enabled = true
action = iptables-multiport[name=dovecot, port="pop3,pop3s,imap,imaps", protocol=tcp]
maxretry = 5
[postfix-sasl]
enabled = true
action = iptables-multiport[name=postfix-sasl, port="smtp,smtps,submission", protocol=tcp]
maxretry = 3Затем создайте ссылки для автозагрузки системы для fail2ban и запустите его:
mkdir /var/run/fail2ban
systemctl enable fail2ban.service
systemctl start fail2ban.service19 Установка rkhunter
rkhunter можно установить следующим образом:
yum -y install rkhunter20 Установка Mailman
Если вы хотите управлять почтовыми списками с помощью Mailman на вашем сервере, то установите mailman сейчас. Mailman поддерживается ISPConfig, поэтому вы сможете создавать новые почтовые списки через ISPConfig позже.
yum -y install mailmanПеред тем как мы сможем запустить Mailman, должен быть создан первый почтовый список под названием mailman:
touch /var/lib/mailman/data/aliases
postmap /var/lib/mailman/data/aliases
/usr/lib/mailman/bin/newlist mailman
ln -s /usr/lib/mailman/mail/mailman /usr/bin/mailman[root@server1 tmp]# /usr/lib/mailman/bin/newlist mailman
Введите email человека, управляющего списком: <– адрес электронной почты администратора, например [email protected]
Первоначальный пароль mailman: <– пароль администратора для списка mailman
Чтобы завершить создание вашего почтового списка, вы должны отредактировать ваш файл /etc/aliases (или
эквивалентный) файл, добавив следующие строки, и, возможно, запустив
программу newaliases:
почтовый список mailman
mailman: “|/usr/lib/mailman/mail/mailman post mailman”
mailman-admin: “|/usr/lib/mailman/mail/mailman admin mailman”
mailman-bounces: “|/usr/lib/mailman/mail/mailman bounces mailman”
mailman-confirm: “|/usr/lib/mailman/mail/mailman confirm mailman”
mailman-join: “|/usr/lib/mailman/mail/mailman join mailman”
mailman-leave: “|/usr/lib/mailman/mail/mailman leave mailman”
mailman-owner: “|/usr/lib/mailman/mail/mailman owner mailman”
mailman-request: “|/usr/lib/mailman/mail/mailman request mailman”
mailman-subscribe: “|/usr/lib/mailman/mail/mailman subscribe mailman”
mailman-unsubscribe: “|/usr/lib/mailman/mail/mailman unsubscribe mailman”
Нажмите Enter, чтобы уведомить владельца mailman… <– ENTER
[root@server1 tmp]#
Откройте /etc/aliases после этого…
nano /etc/aliases… и добавьте следующие строки:
[...]
mailman: "|/usr/lib/mailman/mail/mailman post mailman"
mailman-admin: "|/usr/lib/mailman/mail/mailman admin mailman"
mailman-bounces: "|/usr/lib/mailman/mail/mailman bounces mailman"
mailman-confirm: "|/usr/lib/mailman/mail/mailman confirm mailman"
mailman-join: "|/usr/lib/mailman/mail/mailman join mailman"
mailman-leave: "|/usr/lib/mailman/mail/mailman leave mailman"
mailman-owner: "|/usr/lib/mailman/mail/mailman owner mailman"
mailman-request: "|/usr/lib/mailman/mail/mailman request mailman"
mailman-subscribe: "|/usr/lib/mailman/mail/mailman subscribe mailman"
mailman-unsubscribe: "|/usr/lib/mailman/mail/mailman unsubscribe mailman"Запустите
newaliasesпосле этого и перезапустите Postfix:
systemctl restart postfix.serviceТеперь откройте файл конфигурации Apache Mailman /etc/httpd/conf.d/mailman.conf…
nano /etc/httpd/conf.d/mailman.conf… и добавьте строку ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/. Закомментируйте Alias /pipermail/ /var/lib/mailman/archives/public/ и добавьте строку Alias /pipermail /var/lib/mailman/archives/public/:
#
# настройки конфигурации httpd для использования с mailman.
#
ScriptAlias /mailman/ /usr/lib/mailman/cgi-bin/
ScriptAlias /cgi-bin/mailman/ /usr/lib/mailman/cgi-bin/
AllowOverride None
Options ExecCGI
Order allow,deny
Allow from all
#Alias /pipermail/ /var/lib/mailman/archives/public/
Alias /pipermail /var/lib/mailman/archives/public/
Options Indexes MultiViews FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
AddDefaultCharset Off
# Раскомментируйте следующую строку, чтобы перенаправить запросы на /mailman на страницу
# listinfo (рекомендуется).
# RedirectMatch ^/mailman[/]*$ /mailman/listinfoПерезапустите Apache:
systemctl restart httpd.serviceСоздайте ссылки для автозагрузки системы для Mailman и запустите его:
systemctl enable mailman.service
systemctl start mailman.serviceПосле установки ISPConfig 3 вы можете получить доступ к Mailman следующим образом:
Вы можете использовать псевдоним /cgi-bin/mailman для всех виртуальных хостов Apache (пожалуйста, обратите внимание, что suExec и CGI должны быть отключены для всех виртуальных хостов, из которых вы хотите получить доступ к Mailman!), что означает, что вы можете получить доступ к интерфейсу администратора Mailman для списка по адресу http://
По адресу http://
Get new posts in your inbox
No spam. Unsubscribe anytime.