Gunakan CLI untuk memaparkan versi Nginx semasa
Nginx akan memaparkan versi pada halaman ralat dan dalam medan pengepala respons "Pelayan". Kita boleh mengesahkan ini menggunakan arahan berikut: Contoh output:
$ curl -I https://your-domain $ curl -I https://www.cyberciti.biz HTTP/2 200 server: nginx/1.17.10 (Ubuntu)date: Tue, 23 Jun 2020 09:36:49 GMTcontent-type: text/html; charset=UTF-8strict-transport-security: max-age=15768000x-whome: l-ncbz01-mg-wg
Ini adalah output halaman ralat HTTP/502 saya yang memaparkan maklumat:
Gunakan arahan server_tokens untuk menyembunyikan versi Nginx
Anda perlu mematikan server_tokens untuk menyembunyikan versi pelayan Nginx pada sistem seperti Linux dan Unix. Edit fail nginx.conf anda menggunakan editor teks seperti vim/nano:
Kami hanya boleh menetapkan server_tokens dalam konteks http, pelayan atau lokasi. Saya akan menambah pada bahagian http saya: Beginilah rupanya:
$ sudo vim /etc/nginx/nginx.confserver_tokens off; http { ## Basic Settings ## charset utf-8; sendfile on; tcp_nopush on; tcp_nodelay on; log_not_found off; keepalive_timeout 65; types_hash_max_size 2048; client_max_body_size 16M; include /etc/nginx/mime.types; default_type application/octet-stream; ## Hide Nginx version ## server_tokens off; ## Security headers for Nginx ## add_header Strict-Transport-Security "max-age=15768000" always; add_header X-Content-Type-Options "nosniff" always; add_header X-Frame-Options "SAMEORIGIN" always; add_header X-Xss-Protection "1; mode=block" always; add_header Referrer-Policy strict-origin-when-cross-origin; add_header Feature-policy "accelerometer 'none'; camera 'none'; geolocation 'none'; gyroscope 'none'; magnetometer 'none'; microphone 'none'; payment 'none'; usb 'none'"; add_header Content-Security-Policy "default-src 'self' http: https: data: blob: 'unsafe-inline'" always; ## SSL Settings ## ssl_protocols TLSv1.3; access_log /var/log/nginx/access.log; error_log /var/log/nginx/error.log; ## Virtual Host Configs ## include /etc/nginx/conf.d/*.conf; include /etc/nginx/sites-enabled/*;}
Mulakan semula atau muat semula pelayan Nginx seperti biasa:
sudo nginx -tsudo nginx -s reload
Sahkan sama ada versi Nginx disembunyikan
Gunakan arahan curl seperti di bawah: Lihat pelayan Nginx saya tidak menunjukkan sebarang versi:
$ curl -I https://your-domain-name-here $ curl -I https://www.cyberciti.biz HTTP/2 200 server: nginxdate: Tue, 23 Jun 2020 09:43:17 GMTcontent-type: text/html; charset=UTF-8strict-transport-security: max-age=15768000
Firefox juga mengesahkan bahawa saya juga berjaya menyembunyikan versi Nginx:
Sembunyikan nilai lain yang mungkin untuk versi Nginx
Sintaks adalah seperti berikut: Tetapan lalai pada Linux, *BSD dan Unix adalah seperti berikut:
server_tokens on | off | build | string; server_tokens on;
Alih keluar versi daripada pengepala pelayan dan halaman ralat
Kami boleh mendayakan atau melumpuhkan pemancaran versi nginx dengan menukar kepada nilai berikut:
on: Paparkan nombor versi.
mati: Matikan paparan nombor versi.
bina: Pastikan kami mengeluarkan nama binaan serta versi nginx. Anda mesti mempunyai Nginx versi 1.11.10.
rentetan: Tersedia untuk langganan komersial sahaja, bermula dalam versi 1.9.13, adalah mungkin untuk menggunakan rentetan dengan pembolehubah untuk memaparkan tandatangan dan nilai medan pengepala respons "pelayan" pada halaman ralat tetapan. Rentetan kosong melumpuhkan pemancaran medan "pelayan".
Tetapkan nombor versi tersuai dalam Nginx
Sebagai contoh, pengguna langganan komersial (Nginx Plus) boleh menetapkannya kepada versi pelayan palsu dan nama tersuai: Muat semula pelayan Nginx menggunakan arahan perkhidmatan atau perintah systemctl: Begitu juga, ujinya menggunakan arahan curl seperti berikut:
;$ service nginx reload$ curl -I http://127.0.0.1/
Versi tersembunyi selamat dalam ketidakjelasan
Ya, ia adalah keselamatan melalui fungsi terselindung. Ia merupakan salah satu kaedah pertahanan secara mendalam. Walau bagaimanapun, ia tidak sepatutnya menjadi bentuk pertahanan utama. Anda perlu menulis kod selamat. Pasang firewall, terutamanya WAF (Web Application Firewall). Tiada sebab untuk mendedahkan versi Nginx atau PHP atau Python kerana ia boleh menjadi maklumat berguna kepada penyerang. Perlu diingat bahawa sistem pengendalian Linux/Unix, aplikasi web/Nginx harus kekal selamat tanpa mengira sama ada versi Nginx adalah umum atau tidak. Walau bagaimanapun, kami tidak memberikan apa-apa faedah kepada penyerang dengan menerbitkan nombor versi.
Atas ialah kandungan terperinci Sembunyikan versi Nginx pada Linux dan Unix. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!