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; } }
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; } }
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;
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:
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; } }
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!