Рейтинг:0

Веб-презентация Iredmail + мод безопасности

флаг cn

Кто-нибудь пробовал реализовать iredmail с модом безопасности? Мой английский тоже не так хорош, надеюсь, вы понимаете мои причины. Заранее благодарны за Вашу помощь.

Я установил iredmail + веб-презентацию на nginx, но у меня проблема с правилами modsec. Раньше я использовал apache2 + mod sec. Например, я реализовал пользовательские правила, такие как запрос rbl или drop .php или .env. Ниже вы можете найти мои примеры, которые я использовал в apache2. Правило руб.

SecRule REMOTE_ADDR "@rbl sbl-xbl.spamhaus.org" "фаза:1,id:171,t:none,pass,log,auditlog,msg:'RBL Match for SPAM Source',tag:'АВТОМАТИЗАЦИЯ/ВРЕДОНОСНЫЙ', серьезность: '2', setvar: 'tx.msg=%{rule.msg}', setvar:tx.automation_score=+%{tx.warning_anomaly_score}, setvar:tx.an>
 setvar:tx.%{rule.id}-АВТОМАТИЗАЦИЯ/ВРЕДНО-%{matched_var_name}=%{matched_var},setvar:ip.spammer=1,expirevar:ip.spammer=86400,setvar:ip.previous_rbl_check=1,expirevar :ip.previous_rbl_check=86400,пропуститьПосле:END_RBL_CHECK"

.php правило

SecRule REQUEST_LINE "@contains .php" "фаза: 1, идентификатор: 150, удаление, статус: 444, журнал, t: нет, t: urlDecode, t: нижний регистр, t: normalizePath, msg: "Запрос содержит файл .php" "

.env правило

SecRule REQUEST_LINE "@contains .env" "фаза: 1, идентификатор: 155, удаление, статус: 444, журнал, t: нет, t: urlDecode, t: нижний регистр, t: normalizePath, msg: "Запрос содержит файл .env" "

На апаче работает очень хорошо, спамеры целуются..... :) но на iredmail с nginx дропается некорректно.

Рубль вообще не падает. Я пробовал RBL от projecthonejpot, но это то же самое. Например, если я попытаюсь www.example.com/index.php так что это хорошо, но некоторые запросы от спамеров меня убивают. Я не знаю, откуда он пришел, но запрос был убит на апаче.

Ниже приведен файл access.log.

184.168.103.230 - - [08/фев/2022:17:33:28 +0100] "GET /wp-login.php HTTP/1.1" 301 162 "-" "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv :62.0) Gecko/20100101 Firefox/62.0"
184.168.103.230 - - [08/фев/2022:17:33:31 +0100] "GET /wp-login.php HTTP/1.1" 404 47 "http://example.com/wp-login.php" " Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:62.0) Gecko/20100101 Firefox/62.0"

Ниже приведен файл error.log.

08.02.2022 17:33:31 [ошибка] 1036473#1036473: *232 FastCGI отправлено в stderr: «Первичный скрипт неизвестен» при чтении заголовка ответа 
из восходящего потока, клиент: 184.168.103.230, сервер: domain.com, запрос: "GET /wp-login.php HTTP/1.1", восходящий поток: 
"fastcgi://127.0.0.1:9999", хост: "example.com", реферер: "http://example.com/wp-login.php"

Mod sec не удаляет его по правилу .php, но если он был удален, журнал ошибок выглядит следующим образом.

08.02.2022 18:28:29 [ошибка] 1036473#1036473: *238 [клиент 173.212.214.140] ModSecurity: доступ запрещен с кодом 444 (фаза 1). 
Сопоставлен "Оператор `Contains' с параметром `.php' для переменной `REQUEST_LINE' (значение: `GET /wp-login.php HTTP/1.1') 
[файл "/etc/nginx/modsecurity/modsecurity.conf"] [строка "279"] [id "150"] [версия ""] [msg "Запрос содержит файл .php"] [данные ""] 
[серьезность "0"] [версия ""] [зрелость "0"] [точность "0"] [имя хоста "xxxx"] [uri "/wp-login.php"] [unique_id "1644341309"] 
[ссылка "o13,4v0,26t:urlDecode,t:нижний регистр,t:normalizePath"], клиент: 173.212.214.140, сервер: example.com, запрос: "GET /wp-login.php HTTP/1.1", 
хост: «example.com», реферер: «http://example.com/wp-login.php»

В этой ситуации это было некоторое время сброшено, но иногда нет. Например, он все время сбрасывался на apache. Ниже мой конфиг nginx. 00-default.conf:

сервер {
    слушать 80 default_server;
    слушать [::]:80 default_server;
    IP-адрес сервера прослушивания: 80 default_server;
    слушать [сервер ip6::1]:80 default_server;
    имя сервера _;

    вернуть 444;

}

сервер {
    # Слушаем по ipv4
    IP-адрес сервера прослушивания: 80;
    слушать [ip сервера::6]:80;
    имя_сервера mail.example.com;

    корень /var/www/html;
    индекс index.html robots.txt;

    # Перенаправляем все небезопасные http:// запросы на https://
    вернуть 301 https://$host$request_uri;

    модбезопасность включена;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    место расположения / {
        try_files $uri $uri/ =404;
    }

    #Удалить нежелательные методы HTTP
    если ($request_method !~ ^(GET|POST)$) {
        вернуть 444;
    }
}

00-по умолчанию-ssl.conf:

сервер {
    слушать 443 default_server;
    слушать [::]:443 default_server;
    слушать 1 сервер ip: 443 default_server;
    слушать [IP-адрес сервера::6]:443 default_server;
    имя сервера _;

    ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem; # под управлением Certbot

    вернуть 444;

}

сервер {
    IP-адрес сервера прослушивания: 443 ssl http2;
    слушать [IP-адрес сервера::6]:443 ssl http2;
    имя_сервера mail.example.com;

    корень /var/www/html;
    индекс index.php index.html;

    модбезопасность включена;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    включить /etc/nginx/templates/misc.tmpl;
    включить /etc/nginx/templates/ssl.tmpl;
    включить /etc/nginx/templates/iredadmin.tmpl;
    включить /etc/nginx/templates/roundcube.tmpl;
    включить /etc/nginx/templates/php-catchall.tmpl;

    #Удалить нежелательные методы HTTP
    если ($request_method !~ ^(GET|POST)$) {
        вернуть 444;
    }

    место расположения / {
        try_files $uri $uri/ =404;
    }
}

мойдомен.conf:

сервер {
    если ($host = www.example.com) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


    если ($host = example.com) {
        вернуть 301 https://$host$request_uri;
    } # управляется Certbot


    слушать 80;
    слушать [::]:80;
    имя_сервера example.com www.example.com;

      место расположения / {
          вернуть 444;
      }

}


сервер {
    IP-адрес сервера прослушивания: 443 ssl http2;
    слушать [IP-адрес сервера::6]:443 ssl http2;
    корень /var/www/html/example.com;
    индекс index.html robots.txt;
    имя_сервера example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # под управлением Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # под управлением Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # под управлением Certbot

    включить /etc/nginx/templates/misc.tmpl;
    включить /etc/nginx/templates/php-catchall.tmpl;
    включить /etc/letsencrypt/options-ssl-nginx.conf; # под управлением Certbot

    модбезопасность включена;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    место расположения / {
        try_files $uri $uri/ =404;
    }

        страница_ошибки 404 /404/index.html;

}

Может быть, я не понимаю концепцию iredmail, я не админ redmail. Iredmail - хорошее решение, но какое-то время им пользовались не профи :) в результате это не дроп-запрос от спамеров.

Спасибо за вашу помощь.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.