Điểm:0

Tiêu đề HTTP_HOST không hợp lệ. Cấu hình NGINX không ngăn chặn các tiêu đề không hợp lệ localhost từ máy quét cổng IP đánh django

lá cờ jm

Tôi nhận được thông báo lỗi tiêu đề Máy chủ không hợp lệ từ máy chủ của mình và tôi không biết cách giải quyết.

URL yêu cầu lỗi là https://127.0.0.1:8000 và gợi ý rõ ràng là thêm máy chủ cục bộ vào máy chủ ĐƯỢC PHÉP (sử dụng django) của tôi. Tuy nhiên, tôi đã đọc được rằng việc giữ máy chủ cục bộ trong các máy chủ được phép trong quá trình sản xuất là một cách làm không tốt và là một lỗ hổng bảo mật tiềm ẩn. Hiện tại, các máy chủ được phép của tôi trong prod bị giới hạn trong miền đã đăng ký của tôi.

Tôi đã thực hiện một số thao tác tìm hiểu và có vẻ như những yêu cầu này đến từ máy quét cổng IP. Trong báo cáo email, đôi khi tôi có thể thấy các liên kết GitHub trong HTTP_USER_AGENT tới các kho máy quét như vậy. Và HTTP_X_FORWARDED_FOR hầu như luôn là một số nhà cung cấp VPN hoặc nằm ở Moscow hoặc Bắc Kinh.

Đây là cấu hình nginx hiện tại của tôi. Tôi đã triển khai một vài đề xuất từ ​​các bài đăng khác như tùy chỉnh nếu lọc regex nhưng dường như nó không có tác dụng.

Ngoài vấn đề này, mọi thứ khác dường như đang hoạt động như dự định. Mọi sự trợ giúp sẽ rất được trân trọng. Lần đầu tiên thiết lập một cái gì đó như thế này, vì vậy vui lòng chỉ ra bất kỳ lỗi rõ ràng nào.

# Tệp: /etc/nginx/sites-available/app

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

người phục vụ {
    nghe 80 default_server;
    trả lại 444;
}

người phục vụ {
    server_name app.example.com;
    nghe 80;
    trả lại 301 https://$host$request_uri;
}

người phục vụ {

    # Câu lệnh regex if tùy chỉnh tới 444 bất kỳ tiêu đề máy chủ không mong muốn nào
    nếu ( $host !~* ^(app.example.com|example.com)$ ) {
        trả lại 444;
    }

    vị trí/tĩnh {
        tự động lập chỉ mục;
        bí danh/đường dẫn/đến/django/tệp tĩnh;
    }
    
    # Chuyển yêu cầu cho guinicorn nghe trên http://localhost:8000
    địa điểm / {
        proxy_pass http://localhost:8000;
        bao gồm /etc/nginx/proxy_params;
        proxy_redirect tắt;
    }

    nghe 443 ssl;
    server_name 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;
}
Điểm:1
lá cờ us

Bạn đang thiếu một default_server chặn cho HTTPS. Do đó, tất cả các yêu cầu đối với bất kỳ máy chủ nào qua HTTPS đều được chuyển vào ứng dụng.example.com người phục vụ khối (tôi đã đổi nó thành miền ví dụ).

Cấu hình của bạn sẽ giống như thế này cho máy chủ mặc định:

người phục vụ {
    nghe 80 default_server;
    nghe 443 default_server ssl;

    ssl_certificate /path/to/certificate.crt;
    ssl_certificate_key /path/to/certificate.key;

    trả lại 444;
}

Tôi sử dụng chứng chỉ/khóa tự ký của hệ thống trong khối này. Ví dụ, trong các hệ thống dựa trên Debian có /etc/ssl/private/ssl-cert-snakeoil.key/etc/ssl/certs/ssl-cert-snakeoil.pem.

Sau đó, bạn cần phải loại bỏ các nếu khối trong của bạn ứng dụng.example.com chặn.

Atayls avatar
lá cờ jm
Cảm ơn, tôi sẽ thử. Trên chứng chỉ SSL, tôi có thể sao chép đơn giản các dòng SSL hiện tại của mình nhưng trong khối máy chủ mặc định đã sửa đổi không. Không có vấn đề gì với việc có các dòng chứng chỉ hai lần trong hai khối riêng biệt?
lá cờ us
Đó là một lựa chọn.

Đă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.