Настройка VPS-сервера Debian

  • в настройках php включаем
    -- CURL,
    -- display_errors,
    -- session.gc_maxlifetime = 10800,
    -- memory_limit =512

  • Отключаем IPV6, чтобы при отправке почты не было проблем с spf:
    файл /etc/exim4/exim4.conf.template
    в строке 55 (до строки "begin acl") добавляем параметр
    disable_ipv6 = true

  • Быстрое исправление DNS-резолвера

    debian-10
    systemctl stop systemd-resolved && systemctl disable systemd-resolved && rm -f /etc/resolv.conf && printf "nameserver 77.88.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf && chattr +i /etc/resolv.conf && host ya.ru && exim4 -qf -v

    debian-11
    systemctl stop systemd-resolved && systemctl disable systemd-resolved && rm -f /etc/resolv.conf && printf "nameserver 77.88.8.8\nnameserver 1.1.1.1\n" > /etc/resolv.conf && chattr +i /etc/resolv.conf && ping -c 2 ya.ru && exim4 -qf -v

  • Настройки PHPMyAdmin:
    файл /etc/phpmyadmin/config.inc.php
    Чтобы всегда работал на HTTPS в конец файла добавляем параметр
    $cfg['ForceSSL'] = true;

    Чтобы установить время жизни сессии PHPMyAdmin:
    Закомментировать в двух местах $cfg['Servers'][$i]['auth_type'] = 'cookie'; и дописать $cfg['Servers'][$i]['auth_type'] = 'http';
    в конец файла добавить
    $cfg['LoginCookieValidity'] = 10800;
    $cfg['PmaNoRelation_DisableWarning'] = true;
    $cfg['MaxNavigationItems'] = 250;
    $cfg['MaxRows'] = 100;
    $cfg['Import']['csv_terminated'] = ';';
    $cfg['Import']['csv_enclosed'] = '';
    $cfg['Import']['csv_escaped'] = '\\';
    $cfg['RowActionLinks'] = 'right';
    $cfg['Console']['Mode'] = 'collapse';
    $cfg['Export']['csv_separator'] = ';';

    $cfg['Export']['csv_enclosed'] = '';
    $cfg['Export']['csv_escaped'] = '\\';
    $cfg['Server']['hide_db'] = '';
    $cfg['Server']['only_db'] = '';
    $cfg['2fa'] = array (
    'type' => 'session',
    'backend' => '',
    'settings' =>
    array (
    ),
    );
    $cfg['lang'] = 'ru';
  • настроить загрузку файлов, превышающие размер 128КБ, если PHP включен в режиме FastCGI.
    Для этого нужно указать параметр
    FcgidMaxRequestLen 134217728,
    прописав его в файле /etc/apache2/mods-available/fcgid.conf
    <IfModule mod_fcgid.c>
      FcgidConnectTimeout 20
      FcgidMaxRequestLen 134217728
      <IfModule mod_mime.c>
        AddHandler fcgid-script .fcgi
      </IfModule>
    </IfModule>

  • под рутом создаем задание крону для очистки каталога сессий (если CMS использует сессии, то возможно переполнение):
    find /var/www/*/data/bin-tmp/ -name "sess_*" -exec rm {} \;
  • создаем задание для удаления замороженных сообщений из очереди exim4
    /usr/sbin/exim4 -bp | grep 'frozen' | awk '{print $3}' | xargs -r /usr/sbin/exim4 -Mrm

Защита и оптимизация Exim4 на Debian с ISPmanager

Применяется в случаях, когда почтовый сервер используется сайтами только для отправки уведомлений (через функцию PHP mail()) и внешняя авторизация через почтовые клиенты (Outlook, Thunderbird) не требуется.

Шаг 1. Очистка очереди от старого спама

Удаляем из очереди абсолютно все зависшие, замороженные и недоставленные технические письма, скопившиеся от бот-атак:

exiqgrep -i | xargs exim4 -Mrm

Шаг 2. Отключение модулей в панели ISPmanager

Поскольку сервер работает только на отправку, отключаем ресурсоемкие службы фильтрации входящего трафика:

  • Зайдите в веб-интерфейс ISPmanager.
  • Перейдите в раздел Настройки почты (или Конфигурация почтового сервера).
  • Снимите флаги (галочки) с пунктов SpamAssassin и Sieve.
  • Нажмите кнопку Сохранить. Панель сама корректно вырежет директивы из конфигов.

Шаг 3. Закрытие авторизации снаружи

Блокируем ботам саму возможность брутфорсить (подбирать пароли) к почтовым доменам:

  • Подключитесь к серверу по FTP/SFTP.
  • Откройте файл /etc/exim4/conf.d/auth/30_exim4-config_examples.
  • Полностью очистите всё содержимое этого файла (он должен стать абсолютно пустым, весить 0 байт) и сохраните его. Это перекроет стандартные аутентификаторы.

Шаг 4. Настройка жесткого бана в Fail2ban

Переводим систему защиты на уровень долгосрочной блокировки атакующих IP-адресов.

Узнайте точное имя джейла, под которым Fail2ban его видит прямо сейчас

fail2ban-client status

в выводе будут все активные jail.

  • Откройте файл /etc/fail2ban/jail.local (или найдите файл конфигурации, содержащий секцию [exim]).
  • Приведите секцию [exim] и  к следующему виду:
[exim]
enabled  = true
filter   = exim
mode     = normal
port     = smtp,465,submission
logpath  = %(exim_main_log)s
maxretry = 3
findtime = 10m
bantime  = 1d

[exim-spam]
enabled  = true
filter   = exim
mode     = aggressive
port     = smtp,465,submission
logpath  = %(exim_main_log)s
maxretry = 5
findtime = 10m
bantime  = 1d

Шаг 5. Применение изменений

Выполните в терминале команды для пересборки конфигурации и перезапуска служб:

update-exim4.conf
systemctl restart exim4
systemctl restart fail2ban
Как проверить успешность настройки?
  • exim4 -bp — команда должна выдать пустой ответ (очередь чиста).
  • fail2ban-client status exim — показывает статус активного джейла и список заблокированных IP.
  • tail -n 20 /var/log/exim4/mainlog — логи должны быть чистыми, без цикличных ошибок авторизации.

 

Перенести файлы с одного сервера на другой

  • удалить каталог с кэшем: rm -R /var/www/user/data/www/site.ru/image/cache
  • архивировать каталог сайта:
    cd /var/www/user/data/www/site.ru
    tar -cvzf site.tar.gz site.ru
  • на новом сервере прописать хост в файле /etc/hosts , затем закачать архив сайта и разархивировать:
    cd /var/www/user/data/www/
    wget https://site.ru/site.tar.gz (закачка)
    tar -xvf site.tar.gz (разархивация)
  • вернуть хост в файле /etc/hosts

 


 

Установить и настроить поддержку sieve для работы совместно с сервером dovecot, а также настроить ROUNDCUBE (клиент) для работы с правилами sieve

Что такое sieve

Sieve — это язык описания правил фильтрации почтовых сообщений. Язык достаточно старый (первая спецификация датируется январем 2001 года), но при этом он простой и гибкий. Спецификация несколько раз совершенствовалась, и ее последняя версия датируется 2008 годом. Есть отдельный вики-сайт, посвященный этому языку, на котором можно найти много информации о самом языке, а также о программном обеспечении, которое поддерживает этот язык, как о серверном, так и о клиентском.

Установка sieve-плагина для dovecot

Для поддержки правил фильтрации в dovecot необходимо установить пакеты dovecot-sieve и dovecot-managesieved.

apt-get install dovecot-sieve dovecot-managesieved

Затем правим конфиги dovecot. В первую очередь правим файл /etc/dovecot/conf.d/15-lda.conf. Меняем

protocol lda {
mail_plugins = $mail_plugins
}

на

protocol lda {
mail_plugins = $mail_plugins sieve
}

Следующий файл, который надо изменить — /etc/dovecot/conf.d/20-managesieve.conf. Раскомментируем там следующие строчки:

service managesieve-login {
inet_listener sieve {
port = 4190
}
}
service managesieve {
}
protocol sieve {
managesieve_max_line_length = 65536
}

Теперь закомментируем в файле /etc/dovecot/dovecot.conf строчку

!include_try /usr/share/dovecot/protocols.d/imapd.protocol

И добавим после нее строчку

protocols = $protocols imap sieve

После этого рестартуем dovecot

service dovecot restart

И проверяем, слушается ли порт 4190

netstat -npl | grep 4190
tcp   0      0 0.0.0.0:4190       0.0.0.0:*          LISTEN      15771/dovecot

Если порт слушается, значит мы теперь можем менять правила сортировки почты.

Если вы используете postfix, то вам нужно будет сделать еще одно изменение. В файле /etc/postfix/main.cf нужно изменить опцию mailbox_command, задав следующее значение:

mailbox_command = /usr/lib/dovecot/deliver -d $LOGNAME

Установка расширения для Thunderbird/Icedove

Для работы с правилами сортировки почты нужно установить расширение для почтового клиента с названием Sieve. После установки расширения вы можете увидеть его в списке установленных расширений (Tools -> Add-ons)

Редактирование правил

После установки плагина необходимо включить поддержку правил в настройках почтовой программы.

В появившемся окне нужно включить поддержку работы с правилами

И нажать кнопку «Редактировать фильтры» для редактирования правил сортировки. Вы увидите список фильтров. Каждый фильтр может включать несколько правил. В редакторе правил справа показывается помощь, а сам редактор может использовать два режима работы — визуальный и в виде исходного кода.

Исходный код правил выглядит примерно так:

# rule:[Jira]
if header :contains ["From"] "JIRA"
{
fileinto "INBOX/Jira";
stop;
}
# rule:[Confluence]
if header :contains ["From"] "Confluence"
{
fileinto "INBOX/Confluence";
stop;
}

В принципе, сразу понятно, что должно происходить с такими письмами. Если в заголовке «From» встречается «JIRA», то письмо кладется в папку «INBOX/Jira», если этот заголовок содержит «Confluence», то письмо кладется в папку «Confluence». На сайте, который я указывал выше, можно почитать более подробно, но, вполне возможно, вам хватит встроенной помощи плагина, поскольку сам язык sieve очень простой и логичный.


 

Установка расширения для RoundCube

 

уже на подходе