Điểm:0

Iredmail web presentation + mod security

lá cờ cn

Any one tried to implement iredmail with mod security? My English is also not so good, I hope you understand my reasons. Thanks for your help in advance.

I have installed iredmail + web presentation on nginx but i have problem with modsec rules. I used apache2 + mod sec before. I implemented custom rules like rbl or drop .php or .env request, for example. You can find my examples below, wich i used by apache2. Rbl rule

SecRule REMOTE_ADDR "@rbl sbl-xbl.spamhaus.org" "phase:1,id:171,t:none,pass,log,auditlog,msg:'RBL Match for SPAM Source',tag:'AUTOMATION/MALICIOUS',severity:'2',setvar:'tx.msg=%{rule.msg}',setvar:tx.automation_score=+%{tx.warning_anomaly_score},setvar:tx.an>
 setvar:tx.%{rule.id}-AUTOMATION/MALICIOUS-%{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,skipAfter:END_RBL_CHECK"

.php rule

SecRule REQUEST_LINE "@contains .php" "phase:1,id:150,drop,status:444,log,t:none,t:urlDecode,t:lowercase,t:normalizePath,msg:'Request contains .php file'"

.env rule

SecRule REQUEST_LINE "@contains .env" "phase:1,id:155,drop,status:444,log,t:none,t:urlDecode,t:lowercase,t:normalizePath,msg:'Request contains .env file'"

It is worked very good on apache, spamers kiss ..... :) but it is drop incorrectly on iredmail with nginx.

Rbl not drop at all. I tried RBL from projecthonejpot but it is the same. For example, if i try www.example.com/index.php so it dropping good but some request from spammers kill me. I don't know, from which it come but the request was killed on apache.

Below is access.log.

184.168.103.230 - - [08/Feb/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/Feb/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"

Below is error.log

2022/02/08 17:33:31 [error] 1036473#1036473: *232 FastCGI sent in stderr: "Primary script unknown" while reading response header 
from upstream, client: 184.168.103.230, server: domain.com, request: "GET /wp-login.php HTTP/1.1", upstream: 
"fastcgi://127.0.0.1:9999", host: "example.com", referrer: "http://example.com/wp-login.php"

Mod sec do not drop it by rule .php but if it was dropped the error log looks like below.

2022/02/08 18:28:29 [error] 1036473#1036473: *238 [client 173.212.214.140] ModSecurity: Access denied with code 444 (phase 1). 
Matched "Operator `Contains' with parameter `.php' against variable `REQUEST_LINE' (Value: `GET /wp-login.php HTTP/1.1' ) 
[file "/etc/nginx/modsecurity/modsecurity.conf"] [line "279"] [id "150"] [rev ""] [msg "Request contains .php file"] [data ""] 
[severity "0"] [ver ""] [maturity "0"] [accuracy "0"] [hostname "xxxx"] [uri "/wp-login.php"] [unique_id "1644341309"] 
[ref "o13,4v0,26t:urlDecode,t:lowercase,t:normalizePath"], client: 173.212.214.140, server: example.com, request: "GET /wp-login.php HTTP/1.1", 
host: "example.com", referrer: "http://example.com/wp-login.php"

On this situation, it was some time dropped but some times not. For example it was dropped all time on apache. Below is my nginx config. 00-default.conf:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
    listen server ip:80 default_server;
    listen [server ip6::1]:80 default_server;
    server_name _;

    return 444;

}

server {
    # Listen on ipv4
    listen server ip:80;
    listen [server ip::6]:80;
    server_name mail.example.com;

    root /var/www/html;
    index index.html robots.txt;

    # Redirect all insecure http:// requests to https://
    return 301 https://$host$request_uri;

    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    location / {
        try_files $uri $uri/ =404;
    }

    #Remove Unwanted HTTP Methods
    if ($request_method !~ ^(GET|POST)$) {
        return 444;
    }
}

00-default-ssl.conf:

server {
    listen 443 default_server;
    listen [::]:443 default_server;
    listen 1server ip:443 default_server;
    listen [server ip::6]:443 default_server;
    server_name _;

    ssl_certificate /etc/letsencrypt/live/mail.example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/mail.example.com/privkey.pem; # managed by Certbot

    return 444;

}

server {
    listen server ip:443 ssl http2;
    listen [server ip::6]:443 ssl http2;
    server_name mail.example.com;

    root /var/www/html;
    index index.php index.html;

    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    include /etc/nginx/templates/misc.tmpl;
    include /etc/nginx/templates/ssl.tmpl;
    include /etc/nginx/templates/iredadmin.tmpl;
    include /etc/nginx/templates/roundcube.tmpl;
    include /etc/nginx/templates/php-catchall.tmpl;

    #Remove Unwanted HTTP Methods
    if ($request_method !~ ^(GET|POST)$) {
        return 444;
    }

    location / {
        try_files $uri $uri/ =404;
    }
}

mydomaine.conf:

server {
    if ($host = www.example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    if ($host = example.com) {
        return 301 https://$host$request_uri;
    } # managed by Certbot


    listen 80;
    listen [::]:80;
    server_name example.com www.example.com;

      location / {
          return 444;
      }

}


server {
    listen server ip:443 ssl http2;
    listen [server ip::6]:443 ssl http2;
    root /var/www/html/example.com;
    index index.html robots.txt;
    server_name example.com www.example.com;

    ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem; # managed by Certbot
    ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem; # managed by Certbot
    ssl_dhparam /etc/letsencrypt/ssl-dhparams.pem; # managed by Certbot

    include /etc/nginx/templates/misc.tmpl;
    include /etc/nginx/templates/php-catchall.tmpl;
    include /etc/letsencrypt/options-ssl-nginx.conf; # managed by Certbot

    modsecurity on;
    modsecurity_rules_file /etc/nginx/modsecurity/modsecurity.conf;

    location / {
        try_files $uri $uri/ =404;
    }

        error_page 404 /404/index.html;

}

Maybe i do not understand iredmail conception, im not a redmail admin. Iredmail is good solutions but some time it use not profi :) as a result it is not drop request from spamers.

Thanks for your helps.

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.