Dengan peningkatan berterusan kaedah serangan rangkaian moden, kaedah pertahanan keselamatan tradisional tidak lagi dapat memenuhi keperluan keselamatan perusahaan. Semakin banyak perusahaan mula berubah kepada teknologi pertahanan keselamatan lapisan rangkaian Sebagai pelayan web berprestasi tinggi dan pelayan proksi terbalik, Nginx juga mempunyai keupayaan pertahanan lapisan rangkaian tertentu. Artikel ini akan memperkenalkan amalan terbaik untuk menggunakan Nginx untuk pertahanan keselamatan lapisan rangkaian.
Pertama, kita perlu mengkonfigurasi perlindungan asas untuk Nginx.
1.1 Mengehadkan kelajuan sambungan
Nginx boleh mengehadkan kelajuan sambungan pelanggan dan kadar permintaan melalui modul limit_conn_module dan modul limit_req_module. Ini amat penting untuk mempertahankan diri daripada beberapa serangan DoS. Contohnya, anda boleh mengehadkan pelanggan untuk menghantar 10 permintaan HTTP sesaat sahaja melalui konfigurasi berikut:
http { limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=10r/s; server { location / { limit_req zone=req_limit_per_ip burst=20 nodelay; } } }
1.2 Tolak permintaan tidak sah
Dalam Nginx, anda boleh menyemak permintaan akses tidak sah permintaan, yang membantu menghalang beberapa serangan terhadap pelayan web. Sebagai contoh, berikut ialah konfigurasi yang menolak permintaan yang tidak membawa maklumat pengepala Ejen Pengguna:
http { server { if ($http_user_agent ~ "") { return 444; } } }
Atas dasar perlindungan asas, kami perlu melakukan Konfigurasi Nginx untuk perlindungan lanjutan.
2.1 Pertahanan terhadap serangan DDoS
Nginx boleh bertahan daripada serangan DDoS melalui modul pihak ketiga ngx_http_limit_conn_module dan ngx_http_limit_req_module. Modul ini boleh mengehadkan bilangan sambungan dan permintaan sesaat untuk satu alamat IP. Sebagai contoh, berikut ialah konfigurasi yang mengehadkan bilangan sambungan kepada satu alamat IP kepada tidak lebih daripada 20:
http { limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m; server { location / { limit_conn conn_limit_per_ip 20; } } }
2.2 Pertahanan terhadap serangan suntikan SQL
Serangan suntikan SQL adalah salah satu daripada serangan yang paling biasa pada aplikasi web. Nginx boleh bertahan daripada serangan suntikan SQL dengan mengkonfigurasi pelayan proksi terbalik dan menggunakan modul pihak ketiga. Sebagai contoh, berikut ialah konfigurasi menggunakan modul ngx_http_auth_request_module untuk mempertahankan daripada serangan suntikan SQL:
http { server { location / { proxy_pass http://app_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; auth_request /auth; error_page 403 = @forbidden; } location /auth { internal; proxy_pass http://auth_server; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } location @forbidden { return 403; } } }
Nginx, sebagai pelayan web berprestasi tinggi dan sebaliknya pelayan proksi, mempunyai keupayaan pertahanan lapisan rangkaian tertentu. Melalui konfigurasi yang munasabah dan penggunaan modul pihak ketiga, Nginx boleh menjadi amalan terbaik untuk pertahanan keselamatan lapisan rangkaian. Pada masa yang sama, kami juga perlu terus belajar dan meneroka kaedah dan teknologi pertahanan keselamatan yang lebih maju untuk memastikan keselamatan rangkaian perusahaan.
Atas ialah kandungan terperinci Amalan terbaik untuk pertahanan keselamatan lapisan rangkaian menggunakan Nginx. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!