Điểm:0

OpenVPN: Only Allow Access Specific Client Network

lá cờ ro

OpenVPN: Limiting Client Access to Specific Destination Clients I have two OpenVPN client (ovpn_dest1, ovpn_dest2) which run continuously and have a private network (10.60.10.0/24 & 10.60.20.0/24) which I want to access from two Windows OpenVPN clients.

The windows OpenVPN clients (ovpn_user1, ovpn_user2) however should only be able to access their respective networks (either 10.60.10.0/24 or 10.60.20.0/24).

With ovpn_user1 access to ovpn_dest1 (10.60.10.0/24) and ovpn_user2 should only able to access ovpn_dest2 (10.60.20.0/24).

The current setup uses the client-to-client directive in the host OpenVPN server.conf file, which is needed to allow the Windows clients to talk to the ovpn_dest1/2 and their network devices (device1_1/device1_2/etc).

Unfortunately this client-to-client directive means that a Windows client can also access all ovpn_dest1/2 clients which is not wanted from a security point of view.

Network and IP designations:

ovpn_dest1 - 10.60.10.2
  device1_1  - 10.60.10.3
  device1_2  - 10.60.10.4
ovpn_dest2 - 10.60.20.2
  device2_1  - 10.60.20.3

ovpn_user1 - 10.60.10.0/24
ovpn_user2 - 10.60.20.0/24

/etc/openvpn/server/server.conf:

local 188.166.226.159
port 1194
proto udp
dev tun0
ca ca.crt
cert server.crt
key server.key
dh dh.pem
auth SHA512
tls-crypt tc.key
topology subnet
server 10.8.0.0 255.255.255.0
push "redirect-gateway def1 bypass-dhcp"
ifconfig-pool-persist ipp.txt
push "dhcp-option DNS 67.207.67.3"
push "dhcp-option DNS 67.207.67.2"
keepalive 10 120
cipher AES-256-CBC
user nobody
group nogroup
persist-key
persist-tun
verb 3
crl-verify crl.pem
explicit-exit-notify
log-append /var/log/openvpn.log

client-to-client
client-config-dir ccd

/etc/openvpn/server/ccd/ovpn_dest1

route 10.60.10.0 255.255.255.0
iroute 10.60.10.0 255.255.255.0
push "route 10.60.10.0 255.255.255.0"

/etc/openvpn/server/ccd/ovpn_dest2

route 10.60.20.0 255.255.255.0
iroute 10.60.20.0 255.255.255.0
push "route 10.60.20.0 255.255.255.0"

I can also connect to all of the following devices from any windows OpenVPN client (ovpn_user1/ovpn_user2):

http://10.8.0.2/   (ovpn_dest1)
http://10.8.0.3/   (ovpn_dest2)
http://10.60.10.2/ (ovpn_dest1)
http://10.60.20.2/ (ovpn_dest2)
10.60.10.3 (device1_1)

However I want to limit the access for windows clients such that a given client can only access its specific ovpn_destN network.

I have tried using iptables, however I am no expert in this, and it seems the client-to-client directive in the server.conf file effectively overrides anything attempted in iptables to block a route between a source and destination. (The directive "client to client networking will be done inside OpenVPN without reaching host layer"). It seems I might have to remove "client-to-client" from the server.conf to limit connections, but I have been unable to establish communications when this line is removed.

I have considered using multiple OpenVPN instances (one for each set of ovpn_destN, ovpn_userN) however with many dozens of instances this may not be ideal. Although multiple networks will likely not be accessed frequently concurrently.

What (and how) is the best way of limiting a Windows client to a specific destination network?

lá cờ us
Làm thế nào để khách hàng có được địa chỉ IP của họ?
vbscript avatar
lá cờ ro
@TeroKilkanen Xin lỗi, không chắc ý của bạn là gì. Tôi có một tệp ipp.txt được điền tự động khi khách hàng mới tham gia, nhưng tôi cho rằng điều này không thực sự liên quan.
Điểm:0
lá cờ us

Vì cấu hình của bạn chứa đẩy "chuyển hướng cổng def1 bỏ qua-dhcp", điều đó có nghĩa là các máy khách OpenVPN sẽ đặt cổng mặc định của chúng thành địa chỉ của máy chủ OpenVPN.

Điều này có nghĩa là tất cả lưu lượng của máy khách được chuyển tiếp đến máy chủ OpenVPN. Do đó ccd cấu hình là vô nghĩa, bởi vì những tuyến đường được bao phủ bởi tuyến đường mặc định.

Trước tiên, hãy đảm bảo rằng máy khách của bạn được gán địa chỉ IP tĩnh. Thêm dòng sau vào ovpn_dest1 tập tin trong máy chủ ccd thư mục cho khách hàng:

ifconfig-push 10.8.0.2 255.255.255.0

Và tương ứng với ovpn_dest2:

ifconfig-push 10.8.0.3 255.255.255.0

Sau đó cấu hình tường lửa trên máy chủ OpenVPN như sau:

iptables -I FORWARD -s 10.8.0.2 -d 10.60.20.2 -j DROP
iptables -I FORWARD -s 10.8.0.3 -d 10.60.10.2 -j DROP

Cái đầu tiên chặn lưu lượng từ máy khách 1 đến đích 2 và cái thứ hai từ máy khách 2 đến đích 1.

vbscript avatar
lá cờ ro
Xin lỗi vì sự nhầm lẫn của tôi, nhưng bạn đang nói thêm `ifconfig-push 10.8.0.2 255.255.255.0` vào tệp cấu hình .ovpn của máy khách hay tệp server.conf của máy chủ? Ngoài ra, có nên xóa dòng "client-to-client" khỏi tệp server.conf vì nếu không, điều này sẽ làm cho các quy tắc iptable có thể không có hiệu lực?
vbscript avatar
lá cờ ro
Chỉ cần làm rõ, ovpn_user1 và ovpn_user2 là những người dùng Windows có quyền truy cập vào các mạng 10.60.10.0/24 và 10.60.20.0/24 tương ứng.
lá cờ us
Những dòng này sẽ được thêm ở phía máy chủ vào các tệp trong thư mục `ccd`, vì vậy chúng là các cấu hình dành riêng cho máy khách.
vbscript avatar
lá cờ ro
Nên giữ lại các chỉ thị `push "redirect-gateway def1 bypass-dhcp"` và `client-to-client` hay cả hai nên bị xóa?
lá cờ us
Việc đẩy cổng mặc định ít nhất phải được loại bỏ.

Đă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.