Cách sử dụng đường hầm ssh trong Công cụ cơ sở dữ liệu có thể làm rò rỉ kết nối của bạn mãi mãi?

  1. Lập trình

Gần đây, trong khi phát triển

TablePlus
, chúng tôi đã nghiên cứu về công nghệ đường hầm SSH. Sau khi kiểm tra một số công cụ cơ sở dữ liệu hỗ trợ đường hầm ssh, chúng tôi phát hiện ra rằng kết nối của bạn có thể bị rò rỉ cho đến khi bạn ngắt kết nối Internet hoặc tắt máy của mình. Rò rỉ là do sử dụng open-ssh để tạo đường hầm. Vậy ssh tunneling là gì? Và tại sao chúng ta cần nó để kết nối với một cơ sở dữ liệu từ xa? Vui lòng xem sơ đồ dưới đây.

Vì lý do bảo mật, hầu như mọi máy chủ không cho phép khách hàng kết nối trực tiếp với cơ sở dữ liệu từ bên ngoài máy chủ. Đó là lý do tại sao các công cụ cơ sở dữ liệu cần tạo một đường hầm. Đường hầm hoạt động như một kho trung chuyển dữ liệu giữa máy khách và máy chủ qua ssh. Nó được mã hóa bằng khóa công khai hoặc riêng và an toàn.

Tuy nhiên, xây dựng một thời gian yêu cầu ssh lib và lập trình gọn gàng. Nhiều công cụ hiện có đang sử dụng open-ssh để tạo đường hầm.

Vấn đề là quá trình open-ssh không được quản lý bởi ứng dụng. Do đó, đôi khi ngay cả khi ứng dụng được đóng (bị rơi), đường hầm vẫn tồn tại. Điều này thực sự nguy hiểm vì người dùng không biết điều đó. Mọi thứ có thể tồi tệ hơn vì các ứng dụng khác có thể sử dụng đường hầm mà không có sự cho phép ứng dụng vì nó được tạo ra bên ứng dụng.

Vậy nguy hiểm đến mức nào? Tất nhiên kết nối vẫn còn trên máy tính của bạn, và bạn cần phải biết mật khẩu máy chủ để kết nối với cơ sở dữ liệu. Tuy nhiên, đôi khi máy chủ được cấu hình với một tùy chọn để chấp nhận kết nối bằng cách ngang hàng mà không cần mật khẩu. Hoặc một phần mềm độc hại trong máy tính của bạn có thể chỉ gây sức ép cho mật khẩu. Think about that.

Hãy để tôi tái tạo vấn đề. Hãy thử các bước trên cơ sở dữ liệu của bạn và bạn sẽ nhận được những gì tôi đang nói.

Bước 1: Sử dụng tính năng ssh trong PSEquel hoặc SequelPro để tạo đường hầm để kết nối với máy chủ.

Bước 2: Mở terminal và gõ “ps aux | grep ssh ”. Bạn sẽ thấy đường hầm như “/ usr / bin / ssh root @ <máy chủ ip> -vNL 58070:

localhost
: 5432 -p 22 -o ExitOnForwardFailure = yes -o ConnectTimeout = 30 -o TCPKeepAlive = no -o ServerAliveInterval = 60 ”



Bước 3: Buộc thoát ứng dụng (sử dụng lệnh + tùy chọn + esc).

Bước 4: Gõ “ps aux | grep ssh ”một lần nữa và bạn có thể thấy ssh vẫn tồn tại.

Hãy kết nối với máy chủ bằng cách sử dụng đường hầm:

Mở

TablePlus
và nhập thông tin máy chủ. Nhập cổng đang được hiển thị trong đường hầm ssh. Trong trường hợp của tôi, nó là 58070 (nhập mật khẩu nếu cần).

Nhấn nút kết nối và kết nối sẽ được thực hiện. Bạn có thể thấy ssh vẫn tồn tại trừ khi bạn giết nó hoặc internet bị ngắt kết nối.

Vậy làm cách nào để biết liệu một công cụ có đang sử dụng open-ssh không? Đơn giản chỉ cần gõ "ps aux | grep ssh ”khi bạn đang sử dụng một công cụ cơ sở dữ liệu và kết nối đến máy chủ với chế độ ssh.

Nhận thức được điều đó,

TablePlus
đã thực hiện nó với ssh lib với (
https://libssh.org
) và bảo vệ cổng. Đó là lý do tại sao bạn không thể nhìn thấy đường hầm ssh trong thiết bị đầu cuối. Bởi vì ssh tunneling là một phần của TablePlus, ứng dụng có thể kiểm soát số lượng kết nối mặc dù ssh. TablePlus chỉ chấp nhận các kết nối từ chính nó và cấm các kết nối từ bên ngoài. Đó là cách bạn có thể bảo vệ kết nối và bảo vệ cơ sở dữ liệu của mình.

Vậy làm cách nào để biết liệu một công cụ có đang sử dụng open-ssh không? Đơn giản chỉ cần gõ "ps aux | grep ssh ”khi bạn đang sử dụng một công cụ cơ sở dữ liệu và kết nối đến máy chủ với chế độ ssh.

Nhận thức được điều đó,

TablePlus
đã thực hiện nó với ssh lib với (
https://libssh.org
) và bảo vệ cổng. Đó là lý do tại sao bạn không thể nhìn thấy đường hầm ssh trong thiết bị đầu cuối. Bởi vì ssh tunneling là một phần của TablePlus, ứng dụng có thể kiểm soát số lượng kết nối mặc dù ssh. TablePlus chỉ chấp nhận các kết nối từ chính nó và cấm các kết nối từ bên ngoài. Đó là cách bạn có thể bảo vệ kết nối và bảo vệ cơ sở dữ liệu của mình.

---

Source:

medium.com/@huyphams

Từ khóa: 

,

lập trình