2016-10-14 28 views
6

Có thể chỉ cho phép một Cổng được sử dụng thông qua SSH Port Tunneling nếu người dùng nằm trong một Nhóm Thư mục Họat động cụ thể không?SSH Port Tunneling Với Autherization

Tôi có máy khách, Máy chủ Web Windows và Máy chủ Linux có cơ sở dữ liệu. Tôi muốn khách hàng có thể kết nối với cơ sở dữ liệu bằng SSH, nhưng chỉ khi họ ở trong một nhóm AD cụ thể.

Có cách nào để đạt được điều này không?

Trả lời

3

Về cơ bản: không. Bất kỳ người dùng nào có quyền truy cập shell đều có thể sử dụng giao nhận của riêng mình và truy cập vào cổng. Vì vậy, nếu bạn có người dùng root, bobdbtunnel trên máy Linux, cả ba có thể "xuất" quyền truy cập vào cơ sở dữ liệu.

Nhưng điều gì mà bạn thực sự là muốn làm gì? Bởi vì có vẻ như với tôi rằng bạn muốn mã hóa (có thể nén) kết nối cơ sở dữ liệu giữa máy chủ Web và cơ sở dữ liệu. Bạn có thể làm điều đó mà không cần SSH chút nào.

  • Những gì bạn có thể làm, với SSH, là vô hiệu hóa cổng chuyển tiếp vỏ hoàn toàn trừ cho rằng một nhóm. sshd_config allowgroups supports LDAP. Bạn sẽ hạn chế nghiêm trọng tất cả (hoặc hầu hết) người dùng trên máy Linux.

  • Một số cơ sở dữ liệu như MySQL offer native encryption, có thể không có hiệu suất cao nếu so sánh với giải pháp "sinh". MySQL cũng có giao thức máy khách/máy chủ nén (là bị tắt tốt nhất bất cứ khi nào sử dụng kết nối được mã hóa của bên thứ ba).

  • Bạn có thể thiết lập VPN và chỉ cho phép truy cập vào cổng 3306 từ giao diện VPN.

  • Ngoài ra, bạn có thể hạn chế kết nối (cả SSH và VPN) với những kết nối đến từ máy chủ web để giảm bề mặt tấn công của máy cơ sở dữ liệu.

  • Một giải pháp lạ mắt, ngay cả khi nó ít an toàn, là không có SSHd trên máy Linux, và thay vào đó có nó trên máy Windows. Sau đó, máy Linux có thể kết nối với máy khách autossh và chuyển tiếp cổng cục bộ 3306 của nó tới điều khiển từ xa. Bất kỳ ai trên máy Windows vẫn có thể kết nối với cơ sở dữ liệu. Và người dùng đường hầm thậm chí không cần tồn tại trên máy Linux. Sau đó, bạn có thể tắt quyền truy cập SSH cho tất cả người dùng ngoại trừ bob cho mục đích quản lý. Để mở đường hầm với auto-SSH từ Linux sang Windows, bạn sẽ cần một số SSH server hoặc other cho Windows.

Lý do VPN, iptables và đường hầm ngược lại tạo ra sự khác biệt nhỏ là, kẻ tấn công sẽ "xâm nhập" vào máy Windows như thế nào? Có lẽ anh ta sẽ khai thác máy chủ Web. Nhưng tại thời điểm đó, bất kỳ kết nối nào giữa máy chủ Web và cơ sở dữ liệu, kẻ tấn công sẽ có toàn quyền truy cập bất kể số là gì. Anh ta sẽ chỉ cằn nhằn về kết nối hiện tại.Vì vậy, các hạn chế IP tường lửa và các giải pháp ngược đường hầm không làm gì để nhận dạng người dùng, vì nó sẽ là moot anyway, nhưng thay vì loại bỏ các lỗ hổng của máy Linux có thể truy cập từ bên ngoài máy chủ Web bởi một người dùng không quản trị.

giải pháp Fancy (trong ví dụ này MySQL và cổng 3306; có thể là PostgreSQL và cổng 5432 chỉ là tốt)

  • cài đặt một máy chủ SSHd trên máy tính Windows trên một số cổng không chuẩn.
  • định cấu hình tường lửa Windows để chỉ cho phép kết nối với cổng đó nếu đến từ IP của máy Linux.
  • tạo người dùng (có giới hạn) trên máy Windows để cho phép Linux kết nối.
  • cài đặt kịch bản autossh (trên) trên máy Linux và định cấu hình để kết nối với máy chủ Windows, chuyển tiếp cổng 3306 cục bộ tới cổng 3306 nghe mới được kết nối với localhost (tùy chọn không có -g).
  • bảo với máy chủ web có một máy chủ MySQL tại cảng 127.0.0.1 địa chỉ 3306.

... và bạn đã hoàn tất.

Ai có thể kết nối với cơ sở dữ liệu ngay bây giờ?

  • bất kỳ người dùng nào trên máy Windows đó. Điều này chỉ có nghĩa là người dùng máy chủ Web (*).
  • bất kỳ người dùng quản trị nào có quyền truy cập SSH trên máy Linux (miễn là có quyền truy cập SSH vào máy Linux. Bạn có thể tắt tính năng này).
  • kẻ tấn công khai thác thành công máy chủ Web Windows: nhưng dù sao anh ta cũng có thể thực hiện nó vì máy chủ Web cần truy cập vào cơ sở dữ liệu.

(*) và bất kỳ người dùng khác có thể đã làm điều này cũng nếu cổng chuyển tiếp là LDAP hạn chế - họ đã có thể chỉ cần đợi cho đến khi kết nối được thực hiện bởi người sử dụng LDAP kích hoạt, sau đó họ có thể có piggybacked trên đó.

+0

Bạn có thể mở rộng giải pháp lạ mắt không? Tôi chỉ muốn chuyển tiếp kết nối tới cơ sở dữ liệu trên máy chủ Windows, nếu người dùng ở trong một nhóm cụ thể –