Làm thế nào để xác định cổng được phân bổ trên máy chủ cho một đường hầm đảo ngược opensh bị ràng buộc động?


16

Khi tạo các đường hầm ngược trên các phiên bản gần đây của OpenSSH, một cổng 0 từ xa có thể được cung cấp để liên kết bất kỳ cổng có sẵn nào:

-R [bind_address:] port: host: hostport

...

Nếu đối số cổng là `0 ', cổng nghe sẽ được phân bổ động trên máy chủ và được báo cáo cho máy khách khi chạy.

trang chủ của ssh openssh

Câu hỏi của tôi là làm thế nào tôi có thể (theo cách tự động) xác định phân bổ cổng này trên máy chủ. Có vẻ như không hữu ích khi nó được báo cáo cho máy chủ đang chạy ứng dụng khách ssh - nhưng không phải với mục tiêu, họ sẽ muốn thực hiện kết nối với cổng này để truy cập dịch vụ trên máy khách.

Hai tùy chọn tương tự tôi có thể nghĩ là đang chạy

# netstat -ntlp

trên máy chủ và tìm kiếm các cổng nghi ngờ bị ràng buộc trên 127.0.0.1 bởi sshd hoặc bằng cách nhìn vào đầu ra của

# lsof -p $PPID | grep TCP | grep LISTEN

Nhưng cả hai điều này đều không dễ chịu theo quan điểm tự động hóa, và không có cách nào buộc các cổng động trở lại cổng dịch vụ gốc nếu có nhiều hơn một đường hầm như vậy được tạo ra.

Có bất cứ điều gì tôi thiếu để có được một danh sách các đường hầm hoạt động (cả số cổng cục bộ và từ xa) một cách hiệu quả ở phía máy chủ sshd, giống như biến môi trường SSH_CONNMENT, nhưng đối với các đường hầm hoạt động không?

Đối với một số bối cảnh, tôi đang cố gắng tạo ra rất nhiều đường hầm đảo ngược đồng thời cho một máy chủ, đường hầm trở lại cùng một số cổng trên nhiều máy chủ khác nhau. Có ngăn xếp TCP tự động quản lý nhóm cổng có vẻ như là cách hiệu quả nhất để làm việc này.


Khi sử dụng cú pháp "-R 0: xxxx: y", ssh sẽ xuất ra "Cổng được phân bổ 49488 cho điều khiển từ xa tới xxxx: y trên stderr.
BlakBat

Vâng, vấn đề là làm thế nào để đưa thông tin đó đến phía máy chủ - nơi nó sẽ hữu ích hơn rất nhiều ...
cấu trúc mã hóa

Câu trả lời:


1

Nếu bạn đặt 'LogLevel' trong tệp cấu hình sshd_config thành DEBUG1 (hoặc bất kỳ cấp DEBUG nào), thì sshd sẽ ghi lại số cổng trong /var/log/auth.log.

Hãy nhớ rằng, sử dụng LogLevel của DEBUG hoặc cao hơn có thể là một rủi ro riêng tư, vì nhiều thứ được ghi lại.

(từ /var/log/auth.log, đã xóa một vài dòng để hiển thị thông tin liên quan)

Jun 24 06:18:24 radon sshd[9334]: Connection from 192.168.13.10 port 39193
Jun 24 06:18:24 radon sshd[9334]: Accepted publickey for lornix from 192.168.13.10 port 39193 ssh2
Jun 24 06:18:24 radon sshd[9334]: pam_unix(sshd:session): session opened for user lornix by (uid=0)
Jun 24 06:18:24 radon sshd[9334]: User child is on pid 9339
Jun 24 06:18:24 radon sshd[9339]: debug1: Local forwarding listening on 0.0.0.0 port 0.
Jun 24 06:18:24 radon sshd[9339]: debug1: Allocated listen port 39813
Jun 24 06:18:24 radon sshd[9339]: debug1: channel 0: new [port listener]
Jun 24 06:18:24 radon sshd[9339]: debug1: Local forwarding listening on :: port 39813.
Jun 24 06:18:24 radon sshd[9339]: debug1: channel 1: new [port listener]
Jun 24 06:18:27 radon sshd[9339]: Received disconnect from 192.168.13.10: 11: disconnected by user

Nếu bạn theo dõi thông qua, bạn có thể thấy nơi bạn có thể phân tích thông tin kết nối và sau đó là cổng được chuyển tiếp (39813 trong trường hợp này)

Tôi đã sử dụng dòng lệnh này giữa hai máy của mình, tôi đã thiết lập đăng nhập khóa ssh, do đó không có thông báo nhắc hoặc trì hoãn mật khẩu

-xenon- lornix:~> ssh -R "*:0:radon:22" -N -T radon
Allocated port 39813 for remote forward to radon:22

-N chỉ định không có lệnh nào được đưa ra và -T dừng phân bổ tty cho kết nối này.

Một cách khác để phổ biến thông tin kết nối cổng là phân tích thông tin từ phía khách hàng và gửi email, jabber, tin nhắn văn bản, tín hiệu khói hoặc chim bồ câu để mang cổng # cho bất kỳ ai cần.


0

Bạn có thể chuyển stderr của sshchương trình mở kết nối đến máy chủ trên máy đích và báo cáo tên máy / địa chỉ IP / số sê-ri / bất cứ điều gì cùng với số cổng. Kiểu như thế này:

% ssh -R "*:0:radon:22" -N -T radon 2>&1 | sed "s/^/`uname -n` /" | netcat radon 3743
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.