Kaedah pertahanan menghidu permintaan HTTP dalam proksi terbalik Nginx

王林
Lepaskan: 2023-06-11 08:12:09
asal
1659 orang telah melayarinya

Dengan perkembangan Internet, pelayan web dan aplikasi telah menjadi lebih dan lebih kompleks, dan serangan keselamatan telah meningkat secara beransur-ansur Nginx ialah salah satu alat yang paling banyak digunakan dalam pelayan web dan teknologi pengimbangan beban. Mekanisme proksi terbalik Nginx boleh menjadikannya pelayan aplikasi yang boleh dipercayai, tetapi ia juga merupakan sasaran yang diserang secara meluas. Dalam artikel ini, kami akan meneroka cara untuk mempertahankan terhadap serangan menghidu permintaan HTTP dalam proksi terbalik Nginx.

Apakah itu serangan menghidu permintaan HTTP?

Serangan menghidu permintaan HTTP ialah kaedah serangan rangkaian biasa Penyerang memintas permintaan HTTP dalam paket data rangkaian dan menganalisis serta memproses data untuk mendapatkan maklumat sensitif tapak sasaran. Dalam erti kata lain, penyerang memintas permintaan HTTP yang dihantar oleh klien ke pelayan dan menganalisis pengepala dan parameter. Dengan menganalisis maklumat ini, penyerang boleh mendapatkan alamat IP sebenar pelayan, membuat kesimpulan pelayan aplikasi sebenar dan mendapatkan data sensitif penting yang mungkin termasuk kelayakan log masuk pengguna, data perniagaan, pengenalan sesi, dsb. Serangan menghidu permintaan HTTP juga boleh digunakan untuk mengenal pasti kelemahan dalam aplikasi web dan menyerang kelemahan ini.

Kaedah pertahanan serangan menghidu permintaan HTTP dalam proksi terbalik Nginx

1 Dayakan protokol HTTPS

Protokol HTTPS ialah protokol komunikasi yang disulitkan yang boleh menghalang permintaan HTTP serangan menghidu. Mendayakan protokol HTTPS memerlukan pemasangan sijil SSL yang sah Pada masa ini, sijil SSL yang lebih popular termasuk Let's Encrypt percuma dan Symantec, DigiCert, dsb. Mendayakan protokol HTTPS dalam proksi terbalik Nginx boleh dicapai melalui konfigurasi berikut:

server {
    listen 443;
    server_name example.com;
    ssl on;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Salin selepas log masuk

Konfigurasi di atas boleh mencapai serangan dengan merampas proses jabat tangan SSL dan memaksa pelanggan menurunkan taraf kepada protokol HTTP yang tidak disulitkan kaedah serangan dipanggil Untuk serangan pelucutan SSL, anda perlu mendayakan pengikatan sijil SSL dalam konfigurasi pelayan Nginx:

server {
    listen 80;
    server_name example.com;
    return 301 https://$server_name$request_uri;
}

server {
    listen 443 ssl;
    server_name example.com;
    ssl_certificate /path/to/cert.crt;
    ssl_certificate_key /path/to/cert.key;

    if ($ssl_protocol = "") {
        return 403;
    }

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Salin selepas log masuk

2. Tetapkan pengepala permintaan HTTP

Menetapkan beberapa pengepala permintaan HTTP dalam Pelayan Nginx boleh menghalang serangan menghidu Permintaan HTTP dengan berkesan. Menetapkan pengepala permintaan HTTP memerlukan mengubah suai fail konfigurasi pelayan Nginx Anda biasanya boleh menambah tetapan berikut dalam blok http fail konfigurasi Nginx:

add_header X-Frame-Options SAMEORIGIN;
add_header X-XSS-Protection "1; mode=block";
add_header X-Content-Type-Options nosniff;
Salin selepas log masuk

Konfigurasi di atas boleh menjadikan dasar CSP penyemak imbas lebih selamat dan akan. gesa penyemak imbas untuk tidak Menghuraikan respons kerana HTML harus dimuat turun, tetapi itu tidak menjadikannya mustahil untuk penyerang menghidu permintaan itu.

3. Gunakan Firewall dan Web Application Firewall

Firewall dan Web Application Firewall boleh memeriksa dan menapis permintaan untuk mengesan dan menghalang serangan menghidu permintaan HTTP. Firewall boleh mendayakan peraturan untuk keselamatan yang lebih besar, contohnya:

  • Hanya benarkan pelanggan menggunakan alamat IP tertentu atau perkhidmatan akses rangkaian
  • Sekat pengepala permintaan HTTP dengan permintaan yang berbeza atau tamat masa

4. Gunakan pengikatan IP/Port

Menggunakan pengikatan IP/Port ialah cara mudah untuk mengelakkan beban akibat serangan menghidu Kegagalan imbangan. Dalam konfigurasi penyeimbangan beban pelayan Nginx, alamat IP digunakan untuk mengehadkan akses klien Anda juga boleh menyekat akses klien ke port tertentu pada pelayan Nginx Contohnya:

upstream backend {
    ip_hash;
    server backend1.example.com:80;
    server backend2.example.com:80;
}

server {
    listen 192.0.2.1:80;
    server_name example.com;
    location / {
        proxy_pass http://backend;
        proxy_set_header Host $http_host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
Salin selepas log masuk

Konfigurasi di atas boleh membuat pelanggan hanya lulus 192.0 .2.1:80 untuk mengakses pelayan Nginx, dengan itu berkesan menghalang serangan menghidu.

Ringkasan

Serangan menghidu permintaan HTTP dalam proksi terbalik Nginx ialah kaedah serangan biasa, yang boleh dicapai dengan mendayakan protokol HTTPS, menetapkan pengepala permintaan HTTP, menggunakan Firewall dan Firewall Aplikasi Web firewall Dan IP /Pengikatan pelabuhan dan kaedah lain untuk pertahanan. Walaupun kaedah di atas boleh meningkatkan keselamatan aplikasi, dalam aplikasi sebenar, kaedah pertahanan yang lebih sesuai perlu dipilih berdasarkan situasi sebenar aplikasi untuk memastikan keselamatan dan kestabilan aplikasi.

Atas ialah kandungan terperinci Kaedah pertahanan menghidu permintaan HTTP dalam proksi terbalik Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan