Điểm:0

Apache 2.4 không có cấu hình xác thực hoạt động trong Virtualhost

lá cờ cv

Tôi đang thiết lập một máy chủ hoàn toàn mới â Theo đúng nghĩa đen, tôi chỉ tạo ra một phiên bản AWS EC2, cài đặt apache và mod_ssl mới, đồng thời có cấu hình gần với cấu hình đơn giản nhất. Apache dường như bỏ qua mọi cấu hình xác thực (bao gồm Mức đăng nhập) Trong Máy chủ ảo khối.

Đây là với Apache 2.4.51 trên amzn2.x86_64 Linux.

Tôi đã bắt đầu bằng cách chuyển hướng HTTP sang HTTPS, sau đó làm theo các hướng dẫn cơ bản để Xác thực và ủy quyền Apache 2.4. Điều đó đã đưa tôi đến virtual.conf sau:

<VirtualHost _default_:80>
        DocumentRoot /var/www/html
        RewriteEngine On
        RewriteCond %{HTTPS} !=on
        RewriteCond %{HTTP_HOST} !^(localhost|127.0.0.1)
        RewriteRule ^/(.*) https://%{HTTP_HOST}/$1 [R,L]
</VirtualHost>

<VirtualHost *:443>
        LogLevel debug
        SSLEngine on
        SSLCertificateFile /etc/pki/tls/certs/ca.crt
        SSLCertificateKeyFile /etc/pki/tls/private/ca.key
        <Directory "/var/www/html">
                AllowOverride All
                Options Indexes FollowSymLinks
                AuthType Basic
                AuthName "Restricted Files"
                # (Following line optional)
                AuthBasicProvider file
                AuthUserFile "/mount/local/apache/passwd/passwords"
                Require user someuser
        </Directory>
        DocumentRoot /var/www/html
</VirtualHost>

Nói chung, những điều trên dường như đang hoạt động, ngoại trừ nội dung xác thực. Nếu tôi truy cập địa chỉ IP của mình trong trình duyệt web, nó sẽ chuyển hướng chính xác đến 443, nó cung cấp chứng chỉ từ đường dẫn (không chuẩn) đã chỉ định và tôi có thể thấy nó đang ghi nhật ký gỡ lỗi cấp hoạt động, ít nhất là cho mod_ssl. Tuy nhiên, nó chỉ phục vụ index.html này từ /var/www/html/ (NB: /var/www/html là một liên kết tượng trưng).

tôi đã tìm thấy câu hỏi khác này, khiến tôi tìm kiếm bất kỳ Yêu cầu tất cả cấp chỉ thị.

# pwd
/etc/httpd/conf.d
# grep Yêu cầu * 2>/dev/null
autoindex.conf:# Các mô-đun bắt buộc: mod_authz_core, mod_authz_host,
autoindex.conf: Yêu cầu tất cả được cấp
ssl.conf:# Với SSLRequire, bạn có thể thực hiện kiểm soát truy cập theo thư mục dựa trên
ssl.conf:#SSLRequire ( %{SSL_CIPHER} !~ m/^(EXP|NULL)/ \
ssl.conf:# o Yêu cầu nghiêm ngặt:
ssl.conf:# Điều này từ chối quyền truy cập khi áp dụng "SSLRequireSSL" hoặc "SSLRequire" ngay cả
ssl.conf:#SSLOptions +FakeBasicAuth +ExportCertData +StrictRequire
userdir.conf: Yêu cầu phương thức NHẬN TÙY CHỌN BÀI ĐĂNG
virtual.conf: Yêu cầu người dùng someuser
welcome.conf: Yêu cầu tất cả được cấp

một trong autoindex.conf là bên trong của một <Directory "/usr/share/httpd/icons"> khối, và một trong chào mừng.conf trong <Directory /usr/share/httpd/noindex>. Tôi đã làm tìm một trong /etc/httpd/conf/http.conf:

# Thoải mái hơn nữa khi truy cập vào thư mục gốc của tài liệu mặc định:
<Thư mục "/var/www/html">
    Tùy chọn Chỉ mục FollowSymLinks
    AllowOverride Không có
    Yêu cầu tất cả cấp
</Thư mục>

Lưu ý, trên bản cài đặt này (thông qua ngon trên Amazon Linux 2), tệp cấu hình chính là /etc/httpd/conf/http.conf. Dòng cuối cùng của tập tin đó là Bao gồmTùy chọn conf.d/*.conf. Cấu hình chính của tôi, tôi đã đăng ở trên là trong /etc/httpd/conf.d/virtual.conf.

Tôi đã cố gắng nhận xét rằng Yêu cầu tất cả cấp và khởi động lại máy chủ, nhưng không thay đổi. Đó là khi tôi nhận thấy rằng nó dường như không làm gì cả. Câu hỏi được đề cập trước đó cho thấy một số mục trong tệp nhật ký của anh ấy. Tuy nhiên, ngay cả mặc dù tôi có Gỡ lỗi LogLevel, tôi không thấy bất cứ điều gì liên quan đến authz_core trong các tệp nhật ký, như anh ấy đã từng. ¯_(ã)_/¯

Tại thời điểm này, tôi đã thử một số sửa đổi bên trong <VirtualHost> chặn:

  • Tôi đã cố gắng gói các dòng AuthType cơ bản xuyên qua Yêu cầu người dùng someuser trong một <RequireAll> chặn
  • Tôi đã thử thêm Yêu cầu tất cả bị từ chối trước yêu cầu người dùng
  • Tôi đã thử sử dụng một .htaccess tập tin có cùng cấu hình
  • Tôi đã thử thay đổi AllowOverride All đến AllowOverride All AuthConfig và sử dụng một .htaccess tập tin
  • Tôi đã thử mở rộng đăng nhập để Gỡ lỗi logLevel auth_basic:trace1 authz_core:trace1

Trong mọi trường hợp, không có thay đổi và cấu hình phân tích tốt. Máy chủ chỉ phục vụ trang và không có gì trong bất kỳ tệp nhật ký nào.

Tuy nhiên, nếu tôi thực hiện các thay đổi trong phần chính conf/httpd.conf tập tin bên trong của <Directory "/var/www/html"> block, mọi thứ hoạt động như mong đợi:

  • thay đổi Yêu cầu tất cả cấp đến Yêu cầu tất cả bị từ chối (thay vì bình luận nó ra) chặn tất cả quyền truy cập
  • thay đổi AllowOverride không có đến AllowOverride AuthConfig làm cho tôi .htaccess tệp có cùng cấu hình xác thực như trong <VirtualHost> chặn hoạt động như mong đợi – nó yêu cầu tên người dùng và mật khẩu
  • bật đăng nhập với Gỡ lỗi logLevel auth_basic:trace1 authz_core:trace1 giúp tôi đăng nhập rất nhiều

Vì vậy, để tóm tắt, mặc dù tôi <VirtualHost> config đang hoạt động nói chung (chuyển hướng, SSL, gỡ lỗi cho mọi thứ trừ auth), nó dường như âm thầm bỏ qua bất kỳ xác thực cấu hình, bao gồm Mức đăng nhập.

Trước mắt, tôi đã giải quyết vấn đề của mình bằng cách hoàn tác tất cả các thay đổi tôi đã thực hiện trong tệp cấu hình chính, để mọi thứ không bị ghi đè trong quá trình cập nhật phần mềm và đưa chúng vào conf/00-override.conf:

<Directory "/var/www/html">
    AllowOverride All
    AuthType Basic
    AuthName "Restricted Files"
    # (Following line optional)
    AuthBasicProvider file
    AuthUserFile "/mount/local/apache/passwd/passwords"
    Require user someuser
</Directory>

Tuy nhiên, sẽ rất tốt nếu có thể định cấu hình ủy quyền ở cấp máy chủ ảo. Bất kỳ ý tưởng?

Gerard H. Pille avatar
lá cờ in
Các mô-đun cần thiết đã được tải chưa? Bạn nhận được gì trong nhật ký lỗi khi khởi động lại Apache?
philolegein avatar
lá cờ cv
Tôi không hoàn toàn chắc chắn cái nào là "cần thiết", nhưng `apachectl -t -D DUMP_MODULES` _looks_ phù hợp với tôi. Trong nhật ký lỗi khi khởi động lại, các thông báo duy nhất là về màn hình nhịp tim và mpm không được hỗ trợ. Tôi có thể đặt toàn bộ nhật ký khởi động lại vào câu hỏi, nếu bạn nghĩ nó sẽ hữu ích.
Gerard H. Pille avatar
lá cờ in
Không có tệp .conf trong /etc/httpd chỉ định quy tắc truy cập cho /var/www và "không cho phép ghi đè"?
philolegein avatar
lá cờ cv
/etc/httpd/httpd.conf có `Yêu cầu tất cả được cấp` cho /var/www trước mục /var/www/html của nó, nhưng tôi cho rằng mục sau, cụ thể hơn được ưu tiên. Trong cùng một tệp /, /var/www và /var/www/html tất cả đều không có ghi đè.
Gerard H. Pille avatar
lá cờ in
Bạn đã đúng, "allowoverride" được tính cho .htaccess. Không có .htaccess trong /var/www/html? Bạn có hai cấu hình cho /var/www/html. Tôi tự hỏi thứ tự chúng được phân tích cú pháp.
Gerard H. Pille avatar
lá cờ in
Ngoài ra, đừng quên xóa bộ nhớ đệm của trình duyệt.
philolegein avatar
lá cờ cv
Điều duy nhất trong /var/www/html là một index.html có nội dung Xin chào thế giới. Theo https://httpd.Apache.org/docs/2.4/sections.html#merging "Các phần bên trong các phần được áp dụng sau các phần tương ứng bên ngoài định nghĩa máy chủ ảo. Điều này cho phép các máy chủ ảo ghi đè lên cấu hình máy chủ chính.", nên sẽ ổn thôi.Tôi không thể hình dung bộ nhớ đệm sẽ quan trọng như thế nào, vì tôi thấy yêu cầu trên máy chủ, nhưng dù sao thì tôi cũng đã xóa nó và hành vi vẫn như cũ.
philolegein avatar
lá cờ cv
Ngoài ra, tôi đã thử thêm `Yêu cầu tất cả bị từ chối` vào cấu hình vhost và vẫn có hành vi tương tự.
Gerard H. Pille avatar
lá cờ in
Thêm nhật ký riêng cho máy chủ đó để xem nó có đang được sử dụng không.
philolegein avatar
lá cờ cv
@GerardH.Pille â các chỉnh sửa đáng kể cho câu hỏi; bây giờ có vẻ như rõ ràng đó là sự cố bên trong khối máy chủ ảo.
Gerard H. Pille avatar
lá cờ in
Đã từng xảy ra trường hợp (tôi đã làm việc với Apache 1.4) rằng người ta phải kích hoạt việc sử dụng VirtualHost, nhưng tôi nghĩ điều đó không còn đúng nữa. Bạn đã thử nhật ký riêng cho máy chủ đó chưa? Bất kỳ cấu hình Virtualhost nào khác ngoài hai cấu hình bạn hiển thị?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.