Hôm nay, tôi sẽ hướng dẫn bạn làm thế nào để ẩn phiên bản hoặc tùy chỉnh Nginx server name, Tại sao là ẩn Nginx Name hoặc phiên bản là rất quan trọng? Như đã đề cập trước đó, điều này là không thực sự là một giải pháp an ninh tốt bởi vì chúng ta chỉ che giấu thông tin từ các header. Tuy nhiên, nó vẫn là quan trọng để ngăn chặn các cuộc tấn công khai thác lỗ hổng đặc biệt đối với các phiên bản Nginx cũ. Làm thế nào bạn có thể thiết lập một tên tuỳ chỉnh cho máy chủ Nginx của bạn? Điều này chỉ có thể được thực hiện bằng cách thay đổi mã nguồn của Nginx. Kiểm tra phiên bản Nginx hiện tại dùng lệnh sau: Mã: curl -I http://www.yoursite.com/ Mã: [my@shell ~]$ curl -I http://www.yoursite.com/ HTTP/1.1 200 OK Server: nginx/1.8.0 Vary: Accept-Encoding,Cookie X-Cacheable: SHORT Cache-Control: max-age=600, must-revalidate X-Cache: HIT: 114 Content-Type: text/html; charset=UTF-8 X-Cache-Group: normal Date: Thu, 30 Jul 2015 14:50:29 GMT X-Pingback: http://www.yoursite.com/xmlrpc.php Keep-Alive: timeout=20 X-Type: default Transfer-Encoding: chunked Connection: Keep-Alive Bạn có thể nhận được các chi tiết của server name và phiên bản với một lệnh đơn giản curl. Bây giờ, chúng ta tiến hành ẩn và đổi tên máy chủ của bạn đến một cái gì đó khác. Tải mã nguồn Nginx: Mã: wget http://nginx.org/download/nginx-1.8.0.tar.gz --> Tải mã nguồn về tar -xvpzf nginx-1.8.0.tar.gz -> Giải nén tập tin mới tải về cd nginx-* -->Điều hướng dến thư mục giải nén Chỉnh sửa tập tin này tại dòng # 49: src/http/ngx_http_header_filter_module.c Mã: nano -w +49 src/http/ngx_http_header_filter_module.c Tìm những dòng này: Mã: static char ngx_http_server_string[] = "Server: nginx" CRLF; static char ngx_http_server_full_string[] = "Server:" NGINX_VER CRLF; Sửa đổi để phù hợp với những dòng sau: Mã: static char ngx_http_server_string[] = "Server: YourCustomName" CRLF; static char ngx_http_server_full_string[] = "Server: YourCustomName" CRLF; Sửa đổi "YourCustomName" theo ý của bạn. Bạn có thể đặt bất cứ điều gì đó. Nó có thể là tên của trang web của bạn, sản phẩm, công ty, vv Biên dịch lại Nginx từ mã nguồn Sử dụng đoạn lệnh sau: Mã: ./configure --prefix=/etc/nginx --sbin-path=/usr/sbin/nginx --conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log --http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid --lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp --http-proxy-temp-path=/var/cache/nginx/proxy_temp --http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp --http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp --http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx --with-http_ssl_module --with-http_realip_module --with-http_addition_module --with-http_sub_module --with-http_dav_module --with-http_flv_module --with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module --with-http_random_index_module --with-http_secure_link_module --with-http_stub_status_module --with-http_auth_request_module --with-mail --with-mail_ssl_module --with-file-aio --with-ipv6 --with-http_spdy_module --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2 -fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic' Mã: make make install Khởi động lại Nginx: Mã: service nginx restart Bây giờ, sử dụng lệnh curl thêm một lần nữa Mã: [my@shell ~]$ curl -I http://www.yoursite.com/ HTTP/1.1 200 OK Server: MyServernginx/1.8.0 Vary: Accept-Encoding,Cookie X-Cacheable: SHORT Cache-Control: max-age=600, must-revalidate X-Cache: HIT: 114 Content-Type: text/html; charset=UTF-8 X-Cache-Group: normal Date: Thu, 30 Jul 2015 14:50:29 GMT X-Pingback: http://www.yoursite.com/xmlrpc.php Keep-Alive: timeout=20 X-Type: default Transfer-Encoding: chunked Connection: Keep-Alive Bây giờ, bạn sẽ thấy Server: MyServernginx / 1.8.0. Tuy nhiên, nó vẫn sẽ hiển thị các phiên bản Nginx. Nếu bạn cũng muốn giấu phiên bản Nginx của bạn, chỉ cần thêm dòng này trong khối http của bạn: Mã: nano -w /etc/nginx/nginx.conf Sau đó thiết lập: Mã: http { ... server_tokens off; .... } Khởi động lại Nginx để áp dụng thay đổi: Mã: service nginx restart