Thay đổi máy chủ Apache httpd Apache: Tiêu đề HTTP HTTP


33

Một trong những tiêu đề HTTP mà Apachehttpd gửi lại với dữ liệu phản hồi là "Máy chủ". Ví dụ, máy chủ web của tôi tương đối cập nhật Arch Linux. Nó gửi lại các tiêu đề gần giống như sau:

HTTP/1.1 404 Not Found
Date: Thu, 10 Apr 2014 17:19:27 GMT
Server: Apache/2.4.9 (Unix)
Content-Length: 1149
Connection: close
Content-Type: text/html

Tôi có ServerSignature offtrong /etc/httpd/conf/httpd.conf, nhưng "Máy chủ:" tiêu đề vẫn xuất hiện. Tôi đã thử nghiệm với mod_headers . Tôi đã kích hoạt nó và tôi đã thử một vài điều:

<IfModule headers_module>
Header set ProcessingTime "%D"
Header set Server BigJohn
</IfModule>

Sau khi dừng và bắt đầu httpdvới cấu hình trên, các tiêu đề HTTP bao gồm một cái gì đó như ProcessingTime: 1523, nhưng dòng tiêu đề "Máy chủ:" vẫn không thay đổi. Vì vậy, tôi biết rằng "mod_headers" đã được cài đặt và kích hoạt, và hoạt động, nhưng không như tôi mong muốn.

Tôi thấy rằng một cái gì đó gọi là "mod_security" tuyên bố sẽ làm điều này, nhưng tôi không muốn tất cả phần còn lại của hành lý mà mod_security mang theo.

CẬP NHẬT:

Khi bạn mod_securityđã cài đặt, bạn chỉ cần một vài chỉ thị:

<IfModule security2_module>
SecRuleEngine on
ServerTokens Full
SecServerSignature "Microsoft-IIS/6.0"
</IfModule>

Đó là cho mod_security2.7.7


3
Bạn đã khởi động lại apache kể từ khi thay đổi tập tin conf? Ngoài ra, tôi chưa bao giờ thấy tệp có tên 'httpd.com', thông thường nó được gọi là 'httpd.conf'.
Michael Ozeryansky

@MichaelOzeryansky - cảm ơn vì đã bắt lỗi chính tả. Đó là "httpd.conf" Tôi dừng lại và bắt đầu httpd sau khi thay đổi httpd.conf.
Bruce Ediger

Câu trả lời:


12

Tiêu đề ID / mã thông báo máy chủ được điều khiển bởi chỉ thị " ServerTokens " (được cung cấp bởi mod_core). Ngoài việc sửa đổi mã nguồn HTTPD của Apache hoặc sử dụng mod_securitymô-đun, không có cách nào khác để triệt tiêu hoàn toàn tiêu đề ID máy chủ.

Với mod_securitycách tiếp cận, bạn có thể vô hiệu hóa tất cả các chỉ thị / chức năng của mô-đun trong modsecurity.conftệp và chỉ sử dụng chỉ thị ID tiêu đề máy chủ mà không cần thêm "hành lý".


Điều này không làm việc, cảm ơn bạn rất nhiều. Tôi phải lưu ý rằng mod_security không phải là một trong những gói thông thường của Arch Linux. Có một PKGBUILD trong AUR, nhưng nó chưa được cập nhật từ năm 2011 (kể từ ngày 12 tháng 4 năm 2014) và nó tham chiếu một phiên bản mod_security thực sự cũ. Như mọi khi, distro của bạn có thể thay đổi.
Bruce Ediger

25

mod_security là tuyệt vời, nhưng bạn không thực sự cần nó để đạt được mục tiêu của mình.

sau khi tất cả các mod đã được đưa vào, httpd.confbạn có thể đơn giản bỏ đặt các tiêu đề bạn chọn.

Header unset Server

ServerSignature Off
ServerTokens Prod

http://httpd.apache.org/docs/2.4/mod/core.html#serversignature


2
mod_sec là cần thiết cho một văn bản tùy chỉnh để ẩn hoàn toàn apache công việc nếu không giải pháp của bạn là tốt và đơn giản :)
intika

Điều này đã không ảnh hưởng đến cho tôi sử dụng Apache 2.2 (vá) trên Centos 6.
JPH

1
Trong Apache 2.4, nó được báo cáo là Lỗi cú pháp: Lệnh 'Tiêu đề' không hợp lệ, có thể bị sai chính tả hoặc được xác định bởi một mô-đun không có trong cấu hình máy chủ
Raptor

3
@Raptor Bạn phải cài đặt mod_headers vớisudo a2enmod headers
Ortomala Lokni

1
Header unset Serverkhông hoạt động trong Apache 2.2 và 2.4. Tiêu đề phản hồi vẫn chứaServer: Apache
Maris B.

13

Chỉ cần cập nhật này cho những người vẫn đang tìm kiếm. Tôi đã gặp sự cố khi thay đổi dòng Máy chủ trong tiêu đề HTTP. Lời khuyên này nên hoạt động cho các bản phân phối chi nhánh Debian với systemd và Apache 2.4.7. Cụ thể, tôi đang sử dụng Ubuntu Server LTS 14.04.03. Một số lời khuyên tôi tìm thấy là làm

grep -Ri servertokens /etc/apache2

Điều này dẫn tôi đến /etc/apache2/conf-av Available / security.conf trong đó cả ServerTokens và ServerSignature đều được chỉ định. Do đó, bất kỳ thay đổi nào tôi đang thực hiện đối với /etc/apache2/apache2.conf đều bị ghi đè bởi các lệnh đã được chỉ định trong security.conf.

Tôi chỉ đơn giản là thay đổi các chỉ thị trong security.conf và Apache bắt đầu hoạt động như tôi muốn.

ServerTokens Prod
ServerSignature Off

Về chủ đề Máy chủ không đặt tiêu đề, tôi đã tìm thấy một báo cáo lỗi trong đó các nhà phát triển Apache nói rằng đó không phải là vấn đề khắc phục. Rõ ràng đối với họ đó là một vấn đề triết học, mặc dù đặc điểm kỹ thuật cho HTTP / 1.1, RFC 2616 được tác giả một phần bởi Tim Berners-Lee, nói rằng thẻ Máy chủ là tùy chọn.

Tôi thực sự muốn đặt thẻ Máy chủ thành "Không xác định" để quét Qualys của chúng tôi hài lòng. Vì vậy, tôi đã cài đặt mod_security, bây giờ được gọi là libapache2-modsecurity, theo hướng dẫn DigitalOcean này . Chúc may mắn, tôi hy vọng tôi đã giúp cho tất cả các bạn độc giả trong tương lai.


1

Tôi đã thử nghiệm một cái gì đó trên Oracle HTTP Server 11.1.1.9 (được xây dựng trên Apache 2.2.22), hoạt động ở một mức độ nào đó ..

Đặt "ServerTokens" thành "none" dường như loại bỏ giá trị tiêu đề "Máy chủ", mặc dù bản thân tiêu đề vẫn được gửi trong phản hồi, nhưng bây giờ nó có giá trị null.

ServerTokens không

Tiêu đề phản hồi sẽ như thế này:

HTTP / 1.1 200 OK

Ngày: Thứ Hai, ngày 28 tháng 12 năm 2015 07:02:45 GMT

Máy chủ:

Sửa đổi lần cuối: Chủ nhật, 27/12/2015 07:29:13 GMT

.

.


2
Trên kho Apache 2.2, từ repos của Centos 6, việc đặt giá trị "không" khiến Apache xuất ra tất cả dữ liệu. Ví dụ: "Máy chủ: Apache / 2.2.15 (CentOS) DAV / 2 PHP / 5.3.3 mod_ssl / 2.2.15 OpenSSL / 1.0.1e-fips Phusion_Pasbah / 4.0.59 mod_perl / 2.0.4 Perl / v5.10.1"
JPH

đồng ý, bạn không thể sử dụng nonetrên Apache mới nhất:ServerTokens takes 1 argument: 'Prod(uctOnly)', 'Major', 'Minor', 'Min(imal)', 'OS', or 'Full'
vladkras
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.