Серверные настройки · 11 min read · Nov 01, 2025
Идеальный сервер CentOS 7.2 с 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Теперь создайте ссылки для автозагрузки системы и запустите 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
Новый пароль: <-- yourrootsqlpassword
Повторите новый пароль: <-- yourrootsqlpassword
Пароль успешно обновлен!
Перезагрузка таблиц привилегий..
... Успех!
По умолчанию установка 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
Чтобы установить 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Отредактируйте файл конфигурации freshclam /etc/freshclam.conf
nano /etc/freshclam.confи закомментируйте строку “Example”
[....]
# Example
[....]Затем мы запускаем freshclam, amavisd и clamd.amavisd:
sa-update
freshclam
systemctl enable amavisd.service
systemctl start amavisd.service
systemctl start [email protected]12 Установка Apache с mod_php, mod_fcgi/PHP5, PHP-FPM
ISPConfig 3 позволяет использовать mod_php, mod_fcgi/PHP5, cgi/PHP5 и suPHP на уровне каждого сайта.
Мы можем установить Apache2 с mod_php5, mod_fcgid и PHP5 следующим образом:
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
[...]
; 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Команда затем сообщит вам, что “в ваших конфигурационных файлах не найдено имен” и спросит, следует ли продолжать, пожалуйста, выберите “нет”, так как сертификаты будут созданы 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
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:
[...]
# Этот параметр может принимать три значения :
# 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.pemCountry Name (2 letter code) [XX]: <– Введите название вашей страны (например, “DE”).
State or Province Name (full name) []: <– Введите название вашего штата или провинции.
Locality Name (eg, city) [Default City]: <– Введите ваш город.
Organization Name (eg, company) [Default Company Ltd]: <– Введите название вашей организации (например, название вашей компании).
Organizational Unit Name (eg, section) []: <– Введите название вашего подразделения (например, “IT Department”).
Common Name (eg, your name or your server’s hostname) []: <– Введите полное доменное имя системы (например, “server1.example.com”).
Email Address []: <– Введите ваш адрес электронной почты.
Измените разрешения SSL-сертификата:
chmod 600 /etc/ssl/private/pure-ftpd.pemНаконец, перезапустите 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.service16 Установка Webalizer и AWStats
AWStats можно установить следующим образом:
yum -y install awstats perl-DateTime-Format-HTTP perl-DateTime-Format-BuilderWebalizer необходимо скомпилировать из исходников.
yum install -y libpng-devel gd-devel
cd /tmp
wget ftp://ftp.mrunix.net/pub/webalizer/webalizer-2.23-08-src.tgz
tar xvfz webalizer-2.23-08-src.tgz
cd webalizer-2.23-08
./configure
make
make install17 Установка 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 и запустите его:
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[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.