Làm cách nào để yêu cầu dải IP thay vì 1 IP?


20

Các thay đổi IP của tôi thực hiện một lớp D khác, vì vậy tôi muốn đặt một phạm vi:

123.123.123.xxx trong đó đoạn cuối có thể là 0-255.

Ngay bây giờ, Apache nói:

<RequireAny>
   Require ip 127.0.0.1
   Require ip ::1
</RequireAny>

Câu trả lời:


22

Đầu tiên, tôi sẽ giả sử bạn có nghĩa là Apache 2.4 mặc dù thẻ "apache-2.2" vì cú pháp bạn đã đăng là từ 2.4.

Từ tài liệu Apache:

ip.address là một địa chỉ IP, một địa chỉ IP một phần, một cặp mạng / netmask hoặc một đặc tả CIDR của mạng / nnn.

Tôi giả sử bạn có nghĩa là bạn muốn cho phép a / 24 vì Lớp D là địa chỉ Multicast và mạng lớp đã chết trong những năm 90. Để cho phép a / 24, bạn có thể sử dụng bất kỳ cách nào sau đây:

Require ip 123.123.123
Require ip 123.123.123.0/255.255.255.0
Require ip 123.123.123.0/24

Cá nhân, tôi thấy cái cuối cùng ít mơ hồ hơn cái thứ nhất và dễ đọc hơn cái thứ hai.

Bạn có thể thấy phần tài liệu này hữu ích: http://httpd.apache.org/docs/2.4/howto/access.html#host


Vì vậy, điều này sẽ không hoạt động trên Apache 2.2? phpMyAdmin hoạt động trên cả 2.2 và 2.4 và tôi vừa kiểm tra xem máy chủ này đang chạy gì và nó là 2.2
user281497

Trừ khi một cái gì đó đã được nhập vào để kích hoạt nó, tôi chưa bao giờ thấy cú pháp đó trong các tệp cấu hình 2.2.
fukawi2

@ fukawi2 - Vâng, bạn tất nhiên là đúng. Đối với user281497: Mặc dù Requirecó hỗ trợ hạn chế trong Apache 2.2, Apache 2.2 không hỗ trợ Require iphoặc <RequireAny>. Như đã lưu ý trong Tổng quan về các tính năng mới trong Apache HTTP Server 2.4 , "Logic ủy quyền nâng cao hiện có thể được chỉ định bằng cách sử dụng lệnh Requirevà các chỉ thị vùng chứa có liên quan, chẳng hạn như <RequireAll>." Cái trước là một trong những cải tiến được thêm vào Apache 2.4.
Colt

14

Trong Apache 2.2 trở xuống, bạn có thể làm việc với:

Order deny,allow
Deny from all
Allow from 24.18    # allow access from home
Allow from 162.12   # allow access from work

trong .htacess của bạn, trực tiếp trên cấp cơ sở (không nằm trong bất kỳ <directive>).

Kể từ Apache 2.4 trở lên, ở đây bạn đi:

<RequireAny>
    #IPv4 range at my work
    Require ip 207.100
    #IPv4 range I usually get through my mobile provider
    Require ip 29.11
    #IPv6 from home
    Require ip 2a02:4126:2aa4::/48  
</RequireAny>

(tất cả các số hư cấu, không phải lo lắng ;-).

Tôi đang sử dụng điều này trong nhiều năm nay, để bảo vệ các thư mục phụ trợ của tôi chống lại 99% người dùng tiềm năng. .


Sự khác biệt giữa Require ip 2a02:4126:2aa4::/48và là Require ip 2a02:4126:2aa4::gì? Cả hai đều không tạo ra lỗi cú pháp cho tôi, nhưng chỉ các tác phẩm trước đây.
Geremia

3
Có phải vì 2a02: 4126: 2aa4 :: = 2a02: 4126: 2aa4: 0000: 0000: 0000: 0000: 0000, trong khi 2a02: 4126: 2aa4 :: / 48 khớp với tất cả các địa chỉ bắt đầu bằng 2a02: 4126: 2aa4?
Geremia

1

Lưu ý rằng bạn đã xác nhận bằng Apache 2.2 , Apache 2.2 không hỗ trợ Require iphoặc <RequireAny>. Như đã lưu ý trong Tổng quan về các tính năng mới trong Apache HTTP Server 2.4 , "Logic ủy quyền nâng cao hiện có thể được chỉ định bằng cách sử dụng lệnh Requirevà các chỉ thị vùng chứa có liên quan, chẳng hạn như <RequireAll>." Cái trước là một trong những cải tiến được thêm vào Apache 2.4.

Để giải quyết vấn đề này trong Apache 2.2, có lẽ bạn sẽ cần phải làm một cái gì đó như:

Order allow,deny
Allow from 123.123.123    

sẽ nhận được toàn bộ phạm vi được chỉ định.


1

Lưu ý: Tôi sẽ để nó ở đây vì những người khác có thể được hưởng lợi từ nó; nó không phải là một câu trả lời trực tiếp cho câu hỏi

Ví dụ:

Yêu cầu ip 192.168.100.0/22

hoạt động, trong khi

Yêu cầu ip 192.168.100.0/22 ​​#localnetwork

thất bại

Khởi động lại đầu ra httpd:

Công việc cho httpd.service không thành công vì quá trình kiểm soát đã thoát với mã lỗi. Xem "trạng thái systemctl httpd.service" và "Tạp chí -xe" để biết chi tiết.

Vì vậy, dường như không có bình luận nào được cho phép trên dòng đó .


1
Nhận xét không được phép ở bất cứ đâu trong dòng cấu hình, xem httpd.apache.org/docs/2.4/configuring.html : "Các dòng bắt đầu bằng ký tự băm" # "được coi là nhận xét và bị bỏ qua. cùng dòng với chỉ thị cấu hình. "
Patrick Mevzek

0

Chỉ thị Yêu cầu của Apache được sử dụng trong giai đoạn ủy quyền để đảm bảo rằng người dùng được phép hoặc từ chối truy cập vào tài nguyên. mod_authz_host mở rộng các loại ủy quyền với ip, host, Forward-dns và local. Các loại ủy quyền khác cũng có thể được sử dụng nhưng có thể yêu cầu các mô đun ủy quyền bổ sung được tải.

Các nhà cung cấp ủy quyền này ảnh hưởng đến máy chủ nào có thể truy cập vào một khu vực của máy chủ. Quyền truy cập có thể được kiểm soát bởi tên máy chủ, Địa chỉ IP hoặc phạm vi Địa chỉ IP.

Kể từ v2.4.8, các biểu thức được hỗ trợ trong máy chủ yêu cầu các lệnh. Yêu cầu ip

Nhà cung cấp ip cho phép truy cập vào máy chủ được kiểm soát dựa trên địa chỉ IP của máy khách từ xa. Khi Yêu cầu địa chỉ IP được chỉ định, thì yêu cầu được phép truy cập nếu địa chỉ IP khớp.

Địa chỉ IP đầy đủ:

Require ip 10.1.2.3
Require ip 192.168.1.104 192.168.1.205

Địa chỉ IP của máy chủ được phép truy cập

Địa chỉ IP một phần:

Require ip 10.1
Require ip 10 172.20 192.168.2

1 đến 3 byte đầu tiên của một địa chỉ IP, để hạn chế mạng con.

Một cặp mạng / netmask:

Require ip 10.1.0.0/255.255.0.0

Một abcd mạng và một netmask wxyz Để hạn chế mạng con chi tiết hơn.

Một đặc tả CIDR của mạng / nnn:

Require ip 10.1.0.0/16

Tương tự như trường hợp trước, ngoại trừ netmask bao gồm 1 bit thứ tự cao nnn.

Lưu ý rằng ba ví dụ cuối cùng ở trên khớp chính xác cùng một bộ máy chủ.

Địa chỉ IPv6 và mạng con IPv6 có thể được chỉ định như dưới đây:

Require ip 2001:db8::a00:20ff:fea7:ccea
Require ip 2001:db8:1:1::a
Require ip 2001:db8:2:1::/64
Require ip 2001:db8:3::/48

Lưu ý: Vì các địa chỉ IP được phân tích cú pháp khi khởi động, các biểu thức không được đánh giá tại thời điểm yêu cầu.

Nguồn: https://httpd.apache.org/docs/trunk/mod/mod_authz_host.html


5
Xin đừng chỉ sao chép và dán những người khác làm việc. Điều này được gọi là đạo văn.
Gerald Schneider
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.