Puncte:0

Antet HTTP_HOST nevalid. Configurația NGINX nu împiedică anteturile invalide localhost de la scanerele de porturi IP să lovească django

drapel jm

Primesc o eroare de antet gazdă nevalidă de la serverul meu și nu sunt sigur cum să o rezolv.

Adresa URL a solicitării de erori este https://127.0.0.1:8000 iar sugestia evidentă este să adăugați localhost la gazdele mele (folosind django) PERMISE. Cu toate acestea, am citit că păstrarea localhost în gazdele permise în producție este o practică proastă și o potențială defecțiune de securitate. Momentan, gazdele mele permise în prod sunt limitate la domeniul meu înregistrat.

Am făcut câteva săpături, se pare că aceste solicitări provin de la scanere de porturi IP. În raportul prin e-mail, pot vedea uneori linkuri GitHub în HTTP_USER_AGENT către astfel de depozite de scanare. Și HTTP_X_FORWARDED_FOR este aproape întotdeauna fie un furnizor VPN, fie se află în Moscova sau Beijing.

Iată configurația mea actuală nginx. Am implementat câteva sugestii de la alte postări, cum ar fi filtrarea personalizată dacă regex, dar nu pare să fi avut efect.

În afară de această problemă, totul pare să funcționeze conform intenției. Orice ajutor ar fi foarte apreciat. Prima dată când setați așa ceva, așa că vă rugăm să subliniați orice erori evidente.

# Fișier: /etc/nginx/sites-available/app

server_tokens dezactivat;
access_log /var/log/nginx/app.access.log;
error_log /var/log/nginx/app.error.log;

Server {
    asculta 80 default_server;
    întoarcere 444;
}

Server {
    nume_server app.example.com;
    asculta 80;
    returnează 301 https://$host$request_uri;
}

Server {

    # Personalizat regex if la 444 orice antet gazdă neașteptat
    dacă ( $gazdă !~* ^(app.example.com|example.com)$ ) {
        întoarcere 444;
    }

    locație /static {
        autoindex activat;
        alias /path/to/django/staticfiles;
    }
    
    # Transmite cererile către guinicorn care ascultă pe http://localhost:8000
    Locație / {
        proxy_pass http://localhost:8000;
        includ /etc/nginx/proxy_params;
        proxy_redirect dezactivat;
    }

    asculta 443 ssl;
    nume_server app.example.com;
    ssl_certificate /path/to/fullchain.pem;
    ssl_certificate_key /path/to/privkey.pem;
    ssl_protocols TLSv1.2 TLSv1.3;
    ssl_ciphers CIPHER;
}
Puncte:1
drapel us

Îți lipsește o implicit_server bloc pentru HTTPS. Prin urmare, toate solicitările pentru orice gazdă prin HTTPS sunt transmise către dvs app.example.com Server bloc (l-am schimbat la exemplu de domeniu).

Configurația dvs. ar trebui să arate astfel pentru serverul implicit:

Server {
    asculta 80 default_server;
    asculta 443 default_server ssl;

    ssl_certificate /cale/la/certificat.crt;
    ssl_certificate_key /path/to/certificate.key;

    întoarcere 444;
}

Folosesc certificatul/cheia autosemnată a sistemului în acest bloc. De exemplu, în sistemele bazate pe Debian există /etc/ssl/private/ssl-cert-snakeoil.key și /etc/ssl/certs/ssl-cert-snakeoil.pem.

Apoi trebuie să eliminați dacă blocați în dvs app.example.com bloc.

Atayls avatar
drapel jm
Mulțumesc, voi încerca. Pe certificatul SSL, pot să-mi dublez pur și simplu liniile SSL actuale, dar în blocul de server implicit modificat . Nu există nicio problemă în a avea liniile de certificat de două ori în două blocuri separate?
drapel us
Aceasta este o opțiune.

Postează un răspuns

Majoritatea oamenilor nu înțeleg că a pune multe întrebări deblochează învățarea și îmbunătățește legătura interpersonală. În studiile lui Alison, de exemplu, deși oamenii își puteau aminti cu exactitate câte întrebări au fost puse în conversațiile lor, ei nu au intuit legătura dintre întrebări și apreciere. În patru studii, în care participanții au fost implicați în conversații ei înșiși sau au citit transcrieri ale conversațiilor altora, oamenii au avut tendința să nu realizeze că întrebarea ar influența – sau ar fi influențat – nivelul de prietenie dintre conversatori.