Saya memerlukan solusi proxy terbalik untuk SSH

10

Hai di sini adalah situasi saya memiliki server di pusat data perusahaan untuk proyek. Saya memiliki akses SSH ke mesin ini di port 22. Ada beberapa mesin virtual yang berjalan di server ini dan kemudian di belakang setiap hal banyak sistem operasi lain bekerja. Sekarang Karena saya berada di belakang firewall pusat data, penyelia saya bertanya apakah saya dapat melakukan sesuatu yang dapat saya berikan kepada banyak orang di akses Internet ke mesin virtual ini secara langsung. Saya tahu jika saya diizinkan untuk mendapatkan lalu lintas di port selain 22 maka saya dapat melakukan penerusan port. Tetapi karena saya tidak diperbolehkan ini maka apa yang bisa menjadi solusi dalam hal ini. Orang-orang yang ingin terhubung mungkin benar-benar idiot. Yang mungkin senang hanya dengan membuka dempul di mesin mereka atau bahkan filezilla.

Saya tidak memiliki firewall di tangan saya atau port apa pun selain 22 terbuka dan bahkan jika saya meminta mereka tidak mengizinkan untuk membuka. 2 kali SSH bukan sesuatu yang diinginkan penyelia saya.

Obligasi
sumber
1
pertanyaan terkait dengan solusi hebat lainnya: serverfault.com/questions/361794/…
Kaii
SSH Reverse Proxy github.com/tg123/sshpiper
farmer1992
sshpiperd bekerja dengan sangat baik!
Király István

Jawaban:

5

Anda harus membuka ssh tunnel dari komputer Anda ke server di pusat data. Beri nama ini sebagai "server1". Jika Anda menggunakan openssh, Anda bisa menjalankannya

ssh -L0.0.0.0:8080:localhost:8080 you_username@server1

Ini akan membuka koneksi dari komputer Anda di port 8080 ke server, port 8080, melewatkan firewall di antaranya. Dengan asumsi apache Anda mendengarkan pada port 8080. Format port forward mendengarkan IP: port lokal: alamat jarak jauh: port jarak jauh. Tentu saja untuk server tunggal yang bisa Anda gunakan juga

ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1

Harap dicatat bahwa localhost di -L parameter relatif ke server1. Dengan kata lain, server melihat koneksi datang dari localhost, padahal sebenarnya itu datang dari komputer Anda melalui koneksi ssh.

Anda juga perlu parameter

AllowTcpForwarding yes

dalam konfigurasi ssh server (biasanya / etc / ssh / sshd_config).

Setelah ini, orang lain dapat terhubung ke komputer Anda pada port 8080 untuk mendapatkan koneksi melalui Apache Reverse Proxy. Jika Anda memerlukan proxy umum (agar pengguna dapat memilih alamat, bukan hanya alamat spesifik dalam konfigurasi Apache), Anda harus menginstal squid di server1 dan menggunakan ssh tunnel ke port squid.

Olli
sumber
Maksud Anda mengatakan ketika saya lakukan ssh -L0.0.0.0:8080:localhost:8080 you_username@server1 maka jika koneksi masih akan melalui port 22 firewall (karena jika itu tidak terjadi maka saya tidak bisa melakukan apa-apa) dan ssh tunnel akan dibuat antara mesin lokal dan mesin remote pada port yang ditentukan tetapi seluruh lalu lintas akan terjadi (port 22) di firewall.
Obligasi
Ketika Anda menjalankan ssh tunnel, lalu lintas itu (dari port 8080 ke port 8080) masuk ke dalam koneksi ssh, menggunakan port 22. Firewall melihat lalu lintas ke port 22, bukan 8080.
Olli
Ketika Anda memberikan perintah ini, ssh -L0.0.0.0:8080:remote_server_address:8080 you_username@server1 saya ingin tahu apa yang dapat dimasukkan sebagai remote_server_address adalah IP mesin internal yang ingin saya gunakan server1 sebagai perantara. Apakah saya mengerti ini dengan benar?
Obligasi
Bond: ya, itu benar. Anda juga dapat menentukan beberapa -L terowongan (dengan port sumber yang berbeda, tentu saja) untuk membuka koneksi ke beberapa mesin internal. Misalnya "-L0.0.0.0: 8080: remote_server1: 80 -L0.0.0.0: 8081: remote_server2: 80 -L0.0.0.0: 8082: remote_server2: 22" (tanpa tanda kutip).
Olli
Membuat solid ini diperlukan untuk mengatur server bertindak sebagai rebound di luar pusat data dan memungkinkan lalu lintas masuk. Tentu saja ssh tunnel ok sebagai solusi sementara, tetapi untuk sesuatu dalam produksi, saya akan menyarankan untuk menginstal proxy reverse nyata pada rebound, dan sesuaikan pengaturan firewall untuk memungkinkan 8080 koneksi hanya dari rebound itu. Ini mengatakan, lebih pintar untuk menempatkan proksi terbalik sebagai salah satu mesin virtual di dalam DC. Sehingga koneksi harus diamankan dengan SSL hanya ke mesin ini.
jmary
0

Mungkin Anda bisa menggunakan beberapa hal seperti SshMeIn . Ini adalah sistem web opensource yang akan membuat terowongan ssh melalui firewall, Anda bahkan tidak perlu membuka porta.

Belug
sumber