Chỉ cho phép truy cập vào máy chủ ảo Apache từ mạng cục bộ


19

Tôi có một trang web trên máy chủ Linux do tôi quản lý, chạy Apache 2.2. Máy chủ này hiển thị với thế giới bên ngoài đối với một số dịch vụ khác.

Tôi muốn định cấu hình Apache để một máy chủ ảo cụ thể chỉ hiển thị từ bên trong mạng cục bộ, vì vậy tôi có thể triển khai một ứng dụng web để nhận phản hồi từ những người khác trong tổ chức của mình. Tôi cho rằng điều này phải làm với chỉ thị Cho phép, nhưng các thử nghiệm của tôi không được tốt.

Làm thế nào tôi có thể thay đổi tập tin cấu hình của tôi để đạt được điều đó? Tôi có nên thay đổi cấu hình tường lửa không?


Bạn có đang sử dụng một địa chỉ IP riêng (không thể định tuyến) như 10.0.0.100 hoặc địa chỉ IP công cộng (có thể định tuyến) cho máy chủ của bạn không?
Closnoc

Máy chủ có một địa chỉ IP công cộng và tôi có thể kết nối với nó từ bên ngoài mạng làm việc - ví dụ như từ nhà. Tất cả các máy tính của đồng nghiệp đều có địa chỉ IP cục bộ thuộc loại 10. *. *. *.
Btz

Câu trả lời:


12

Dễ dàng. Chỉ cần đặt một cái gì đó như thế này trong cấu hình chính hoặc cấu hình ảo của bạn:

<Directory /var/www/path/to/your/web/documents>

  Order Deny,Allow
  Deny from all
  Allow from 127.0.0.1 ::1
  Allow from localhost
  Allow from 192.168
  Allow from 10
  Satisfy Any

</Directory>

Câu <Directory></Directory>lệnh về cơ bản nói rằng, sử dụng các quy tắc này cho bất cứ điều gì trong thư mục này. Và bởi thư mục này, thư mục này đề cập đến cái /var/www/path/to/your/web/documentsmà tôi đã đặt trong ví dụ này nhưng nên được thay đổi để phù hợp với đường dẫn thư mục cục bộ của trang web của bạn.

Tiếp theo trong <Directory></Directory>khu vực bạn đang thay đổi hành vi mặc định của Apache, Allowtất cả đều theo mặc định Order Deny,Allow. Tiếp theo, bạn đặt Deny from alltừ chối truy cập từ mọi người. Follwing là các Allow fromcâu lệnh cho phép truy cập từ 127.0.0.1 ::1(địa chỉ IP localhost), localhost(chính localhost). Đó là tất cả những thứ tiêu chuẩn. Vì truy cập từ localhostlà cần thiết cho nhiều quy trình hệ thống nội bộ.

Điều gì sau đây là những thứ quan trọng với bạn.

Các Allow fromcho 192.168cũng như 10sẽ cho phép truy cập từ bất kỳ / tất cả các địa chỉ mạng trong phạm vi mạng được bắt đầu bằng những con số.

Vì vậy, bằng cách chỉ ra 192.168rằng về cơ bản có nghĩa là nếu người dùng có một địa chỉ như thế 192.168.59.27hoặc 192.168.1.123họ sẽ có thể xem trang web.

Và tương tự bằng cách sử dụng Allow fromcho 10đảm bảo việc prefix rằng nếu ai đó có một địa chỉ IP của 10.0.1.2hoặc thậm chí 10.90.2.3họ sẽ có thể để xem nội dung.

Khá nhiều mạng nội bộ trên thế giới sử dụng 192.168phạm vi hoặc thứ gì đó trong 10phạm vi. Không có gì bên ngoài. Vì vậy, sử dụng kết hợp này sẽ đạt được mục tiêu chặn truy cập ra thế giới bên ngoài nhưng chỉ cho phép truy cập từ bên trong mạng cục bộ của bạn.


Phải Satisfy Anylàm gì trong trường hợp này? Tôi không biết gì về tất cả những điều này nhưng khi nó xuất hiện trong kịch bản của tôi, tôi có thể truy cập trang (tôi đã sử dụng <Location /path>) từ một mạng bên ngoài. Loại bỏ nó tuy nhiên đã khắc phục vấn đề của tôi. Thật tuyệt khi hiểu lý do tại sao lại như vậy vì nó hơi lo ngại rằng tôi có thể truy cập trang ngay cả với các quy tắc tại chỗ.
liamnichols

@ nénichols Như đã giải thích ở đây : Cho phép yêu cầu nếu có bất kỳ yêu cầu nào được đáp ứng (xác thực HOẶC truy cập)
.iết

14

Mọi người hạ cánh trong câu trả lời này, xin lưu ý rằng điều này là cụ thể cho Apache 2.2.

Apache 2.4 đã không chấp nhận các chỉ thị này.

Cách mới là sử dụng mô-đun mod_authz_hostvà các Requirechỉ thị. ( liên kết )

Trong Apache 2.4, bạn nên làm

<Directory /var/www/ncp-web/>
  Require host localhost
  Require ip 127.0.0.1
  Require ip 192.168
  Require ip 10
</Directory>

và xóa tất cả các lệnh cho phép.


5

Thêm phần này trong chỉ thị máy chủ ảo của bạn:

<Location /mypathurl>
    Order deny,allow
    Deny from all
    Allow from 192.168.1.10
</Location>

Thay thế IP của bạn ở trên. Điều này không nên được sử dụng cho an ninh cấp tài chính, FYI.


-1

Tôi không biết làm thế nào bạn có thiết lập mạng của bạn, tuy nhiên, tôi giả sử đôi khi sẽ thử và đưa ra câu trả lời tốt hơn.

Giả sử bạn có một văn phòng nhỏ có kết nối DSL. Bạn sẽ có một địa chỉ IP công cộng tĩnh hoặc một khối địa chỉ được gán cho đường dây của bạn, modem DSL và tường lửa. Không đi sâu vào chi tiết về việc này xảy ra như thế nào, tôi sẽ đến phần quan trọng.

Bạn nên sử dụng NAT (dịch địa chỉ mạng). Điều này cho phép các địa chỉ IP công cộng cư trú ở phía mạng LAN (Internet) của mạng của bạn và sử dụng các địa chỉ IP riêng (như 10.0.0.100) trong mạng ở phía mạng LAN. Đây là quy trình hoạt động tiêu chuẩn. Nếu bạn lưu trữ một máy chủ web trong mạng của mình, thì bạn sẽ sử dụng chuyển tiếp cổng hoặc cơ chế tương tự khác) để trỏ bất kỳ lưu lượng truy cập web nào đến máy chủ web của bạn.

Trong kịch bản tiêu chuẩn này, tất cả các máy tính nội bộ của bạn sẽ sử dụng các địa chỉ IP riêng.

Giả sử rằng bạn có một thiết lập mạng tiêu chuẩn tương tự, bạn sẽ thay đổi địa chỉ IP máy tính của mình từ địa chỉ IP công cộng thành địa chỉ IP riêng. Mạng của bạn có thể có thiết lập DHCP trong đó máy tính của bạn có thể yêu cầu địa chỉ IP khả dụng. Điều này có nghĩa là thay vì chỉ định địa chỉ IP, bạn chọn sử dụng DHCP và địa chỉ IP sẽ được chỉ định. Nếu DHCP không có sẵn, thì bạn sẽ phải kiểm tra một số máy tính khác để biết không gian địa chỉ IP riêng có thể được sử dụng và chọn địa chỉ IP trong không gian không được sử dụng. Bạn có thể chỉ định địa chỉ IP không sử dụng này trong thiết lập mạng của bạn. Điều này sẽ giữ cho hệ thống của bạn không bị nhìn thấy trên Internet.


Tôi nghĩ về nó, nhưng nó không phải là một giải pháp thực tế. Có những dịch vụ trên máy đó vẫn phải hiển thị bên ngoài và trong mọi trường hợp tôi dự định làm cho ứng dụng web hiển thị lại sau vài ngày - không có gì phải cách mạng hóa bố cục mạng chỉ trong vài ngày. Tuy nhiên, những gì tôi có thể làm việc là những thứ như cấu hình Apache.
Btz

Nếu bạn có tường lửa, thì bạn có thể đóng một số cổng vào địa chỉ IP đó.
Closnoc 20/03/2016

Cài đặt tường lửa có thể được sử dụng, nhưng điều đó thực sự quá mức cần thiết. Apache đã tích hợp sẵn chức năng để từ chối hoặc cho phép dựa trên địa chỉ IP và các tiêu chí liên quan khác. Xem câu trả lời của tôi để biết thêm chi tiết.
JakeGould

@JakeGould Tường lửa không nhất thiết là một giải pháp quá mức. Tôi biết Apache thực sự rất tốt. Tuy nhiên, có các tùy chọn lọc HTTP trong hầu hết các tường lửa tốt giúp mà không cần tải trên máy chủ. Đồng thời, trong khi Apache là tuyệt vời, nó không phải là không có lỗi. Đồng thời, các truy cập cổng bao gồm các truy cập cổng thay thế có thể được thao tác bằng tường lửa để một số dịch vụ web vẫn ở chế độ công khai và các dịch vụ khác chỉ có thể truy cập trong mạng LAN.
Closnoc
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.