Ẩn danh OpenVPN Cho phép truy cập SSH vào Máy chủ nội bộ


10

Tôi đang sử dụng VPN ẩn danh, nhưng muốn truy cập SSH vào máy tính nội bộ.

Làm cách nào để truy cập vào máy tính nội bộ của tôi thông qua SSH? Khi tôi thực hiện ssh 98.123.45.6 , kết nối sẽ hết thời gian.

  • Địa chỉ IP từ nhà cung cấp cáp: 98.123.45.6
  • IP ẩn danh thông qua VPN: 50.1.2.3
  • Máy tính nội bộ: 192.168.1.123

Khi tìm kiếm xung quanh, tôi đã tìm thấy các đề xuất để thiết lập quy tắc iptables, quy tắc định tuyến hoặc để thêm ListenAddress vào sshd_config. Những điều này áp dụng cho trường hợp của tôi?

Đây là lộ trình của tôi :

Bảng định tuyến IP kernel
Cổng đích Genmask Flag Số liệu tham khảo sử dụng Iface
10.115.81.1 10.115.81.9 255.255.255.255 UGH 0 0 0 tun0
10.115.81.9 * 255.255.255.255 UH 0 0 0 tun0
50.1.2.3-sta ddwrt 255.255.255.255 UGH 0 0 0 eth0
192.168.1.0 * 255.255.255.0 U 202 0 0 eth0
169.254.0.0 * 255.255.0.0 U 204 0 0 vboxnet0
loopback * 255.0.0.0 U 0 0 0 lo
mặc định 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
128.0.0.0 10.115.81.9 128.0.0.0 UG 0 0 0 tun0
mặc định ddwrt 0.0.0.0 UG 202 0 0 eth0

Câu trả lời:


15

Để giải quyết vấn đề này, bạn sẽ cần thiết lập cả iptables và quy tắc định tuyến. Vấn đề cụ thể mà bạn gặp phải là các gói SSH gửi đi đang được định tuyến qua giao diện đường hầm VPN ẩn danh thay vì giao diện Ethernet của bạn. Điều này xảy ra vì phần mềm VPN của bạn thiết lập quy tắc định tuyến để gửi bất kỳ và tất cả lưu lượng chưa được xử lý thông qua giao diện đường hầm. Tốt để ẩn danh lưu lượng truy cập mạng của bạn; xấu khi thiết lập kết nối SSH với máy tính của bạn.

Có một vài cách để khắc phục vấn đề này, nhưng tôi sẽ chia sẻ với bạn cách khắc phục sự cố trong tình huống giống hệt tôi. Đây là những gì chúng ta cần làm:

  1. Tạo bảng quy tắc IP mới để xử lý lưu lượng không phải VPN
  2. Thêm quy tắc IP để tra cứu bảng không có VPN của chúng tôi cho bất kỳ gói tin nào được đánh dấu bằng mặt nạ bộ lọc mạng cụ thể
  3. Thêm tuyến IP chỉ đạo tất cả lưu lượng truy cập trong bảng không có VPN của chúng tôi để sử dụng giao diện Ethernet của bạn thay vì đường hầm
  4. Thêm quy tắc iptables để đánh dấu tất cả lưu lượng SSH bằng mặt nạ bộ lọc mạng được chỉ định của chúng tôi

Lưu ý: Tôi đã làm việc với Raspbian trong khi thực hiện các thao tác sau, vì vậy bạn có thể cần điều chỉnh các lệnh một chút để phù hợp với bản phân phối của mình.

Tạo bảng quy tắc IP mới

Bắt đầu bằng cách kiểm tra tệp định nghĩa bảng của iproute2. Chúng tôi muốn đảm bảo rằng chúng tôi không sử dụng tên hoặc số của bất kỳ bảng quy tắc hiện có nào.

cat /etc/iproute2/rt_tables

Bạn có thể sẽ thấy một cái gì đó dọc theo những dòng này:

# reserved values
255      local 
254      main
253      default   
0        unspec
#
# local
#
#1      inr.ruhep

Chọn một số và tên tùy ý cho bảng quy tắc mới của bạn - bất cứ điều gì không được sử dụng ở trên. Tôi sẽ sử dụng số 201 và tên novpncho phần còn lại của câu trả lời này.

Nối một định nghĩa trực tiếp vào tệp định nghĩa hoặc chỉnh sửa nó trong trình soạn thảo văn bản bạn chọn:

echo "201 novpn" >> /etc/iproute2/rt_tables

Thêm quy tắc IP mới để tra cứu bảng không có VPN

Kiểm tra mọi quy tắc ip hiện có liên quan đến mặt nạ netfilter:

ip rule show | grep fwmark

Nếu grep không có gì, bạn rõ ràng. Nếu nó in một số dòng, hãy lưu ý số thập lục phân ở bên phải của từ fwmarktrong mỗi dòng. Bạn sẽ cần chọn một số hiện không được sử dụng. Vì tôi không có quy tắc fwmark hiện có, tôi đã chọn số 65.

ip rule add fwmark 65 table novpn

Điều này không gây ra bất kỳ gói tin nào có mặt nạ netfilter 65 để tra cứu novpnbảng mới của chúng tôi để được hướng dẫn cách định tuyến các gói.

Chỉ đạo tất cả lưu lượng truy cập trong bảng mới của chúng tôi để sử dụng giao diện Ethernet

ip route add default via YOUR.GATEWAY.IP.HERE dev eth0 table novpn

Điều quan trọng cần lưu ý ở đây là dev eth0. Điều này buộc tất cả lưu lượng đi qua novpnbảng chỉ sử dụng giao diện Ethernet phần cứng, thay vì giao diện đường hầm ảo mà VPN của bạn tạo.

Bây giờ sẽ là thời điểm tốt để xóa bộ nhớ cache iproute của bạn, để đảm bảo các quy tắc và tuyến mới của bạn có hiệu lực ngay lập tức:

ip route flush cache

Hướng dẫn quy tắc tường lửa để đánh dấu tất cả lưu lượng SSH bằng mặt nạ bộ lọc mạng được chỉ định

iptables -t mangle -A OUTPUT -p tcp --sport 22 -j MARK --set-mark 65

Có quá nhiều lựa chọn ở đây để tôi giải thích ở bất kỳ chiều sâu tuyệt vời nào. Tôi đặc biệt khuyến khích bạn đọc trang hướng dẫn cho iptables để hiểu được những gì đang diễn ra ở đây:

man iptables

Tóm lại: chúng tôi đang nối thêm quy tắc đầu ra vào bảng mangle của tường lửa (để xử lý gói chuyên dụng) hướng dẫn nó đánh dấu bất kỳ gói TCP nào có nguồn gốc từ cổng nguồn 22 bằng mặt nạ bộ lọc mạng được chỉ định 65 của chúng tôi.

Tiếp theo là gì?

Tại thời điểm này, bạn nên sẵn sàng thử nghiệm SSH. Nếu mọi việc suôn sẻ, bạn sẽ được đáp ứng với lời nhắc "đăng nhập như" hạnh phúc.

Để bảo mật, tôi khuyên bạn nên hướng dẫn tường lửa của mình bỏ mọi yêu cầu SSH đến từ giao diện đường hầm:

iptables -A INPUT -i tun0 -p tcp -m tcp --dport 22 -j DROP

Lưu ý rằng tất cả các hướng dẫn ở trên là nhất thời (ngoại trừ việc tạo ID bảng quy tắc) - chúng sẽ xóa trong lần tiếp theo bạn khởi động lại máy tính. Làm cho chúng vĩnh viễn là một bài tập tôi để lại cho bạn.

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.