Terminal qoşulur, prompt görünür və hamı SSH girişinin işlədiyi ilə razılaşır. Sonra noutbukdakı verilənlər bazası müştərisi hələ də şəxsi hosta çata bilmir və günah sessiyanın üzərinə atılır. Qurulan şey qabıq idi və bu, SSH-ın təklif edə biləcəyi dörd tamamilə fərqli interfeysdən biridir. Əvvəlcə interfeysi adlandırın, sonra tətbiqin ondan həqiqətən istifadə etdiyini yoxlayın. Sıra vacibdir, çünki hər interfeys öz qaydasında uğursuz olur.

Heç nəyi müqayisə etməzdən əvvəl interfeysi adlandırın

OpenSSH müştəri təlimatı bir-birinə qarışdırılması asan olan dörd mexanizmi fərqləndirir. Qabıq və ya uzaq əmr SSH hostunda icra olunur. Yerli yönləndirmə müştəridə dinləyən soket açır və sonrakı bağlantını uzaq tərəfdən qurur. Uzaq yönləndirmə bunun əksini edir və server tərəfində dinləyir. Dinamik yönləndirmə isə SOCKS-dən istifadə etməyi bilən proqramlar üçün SOCKS son nöqtəsi təqdim edir.

  • Qabıq: proqram uzaq maşında işləyir, yerli olaraq heç nə dinləmir.
  • Yerli yönləndirmə: noutbukunuzda port var, xaricə bağlantını uzaq host qurur.
  • Uzaq yönləndirmə: uzaq tərəfdə port var, trafik sizə tərəf qayıdır.
  • Dinamik: müştəridə SOCKS proksisi, yalnız proksisi tanıyan tətbiqlər istifadə edir.

Bunların heç biri marşrut quraşdırmır. Proksi parametrlərini görməzdən gələn, UDP danışan və ya adları özü həll edən proqram, aktiv SSH sessiyasından təsirlənmir. Bu SSH-da xəta deyil; seçdiyiniz interfeysin əhatə dairəsidir.

Yerli, uzaq və dinamik yönləndirmələr kimin dinləməsi ilə fərqlənir

Əksər halları həll edən fərq dinləyən soketin kimə aid olmasıdır. Yerli yönləndirmədə müştəri dinləyir və uzaq uc hədəfi yığır, buna görə də hədəf ünvanı serverin baxış bucağından həll olunur. Uzaq yönləndirmədə isə server dinləyir və bağlantı sizin tərəfə geri daşınır, yerli xidməti birbaşa dərc etmədən belə ifşa edirsiniz.

ssh -N -L 5432:db.internal.example:5432 [email protected]
ssh -N -D 1080 [email protected]
ss -ltnp | grep -E '5432|1080'

Birinci əmr noutbukda 5432 portunu bağlayır və onu bastiondan göründüyü kimi verilənlər bazasına yönləndirir. İkinci əmr 1080 portunda SOCKS proksisi yaradır. Üçüncü əmr hansı proseslərin həqiqətən dinlədiyini təsdiqləyir və bu, yönləndirmənin port toqquşması səbəbindən səssizcə uğursuz olmasından fərqli olaraq mövcud olduğunun yeganə sübutudur.

Dinamik yönləndirmə öz xəbərdarlığına layiqdir: yalnız SOCKS-ə hörmət edən tətbiqləri əhatə edir. Brauzeri ona yönəltmək olar, əmr sətri alətinə ondan istifadə etmək deyilə bilər, öz bağlantı yığınına malik verilənlər bazası drayveri isə adətən bacarmaz. Maşındakı hər proqramın artıq tuneldən istifadə etdiyini güman etmək bu sahədə ən geniş yayılmış səhvdir.

Tunel-cihaz rejimi yeganə həqiqi şəbəkə istisnasıdır

OpenSSH həmçinin -w tunel-cihaz yönləndirməsini dəstəkləyir və bu, TCP dinləyicisi əvəzinə nöqtədən nöqtəyə interfeys ötürür. Bu, həqiqi şəbəkə tunelidir və qəsdən konfiqurasiya olunur, qabıq açmağın yan təsiri deyil.

sudo ssh -w 0:0 [email protected]
ip addr show tun0

Bu, hər iki tərəfdə mövcud olan uyğun interfeys nömrələrini, serverdə düzgün konfiqurasiyanı və cihazı yaratmaq üçün müştəridə kifayət qədər imtiyazı tələb edir. O, həmçinin ünvanlama və marşrutlaşdırma planı tələb edir, çünki sadə interfeys hansı hədəflərin ondan istifadə etməli olduğuna dair heç bir siyasət daşımır.

Hətta o zaman tunel uzaq hostda bitir. SSH nəqliyyatının verdiyi qoruma orada sona çatır və sonrakı bağlantı ayrı bir hopdur. VPN şlüzünün sərhədi də eyni formadadır, buna görə müqayisə hansı alətin daha güclü olmasından deyil, əhatə dairəsindən və sonlanmadan ibarət olmalıdır. Bu sərhədi yüksək səslə adlandırmaq tunelin «hər şeyi şifrələdiyini» iddia edən mübahisəni də həll edir, çünki açıq şəkildə şifrələmir.

Tətbiqinizin qurduğunuz interfeysdən istifadə etdiyini yoxlayın

Yoxlama sessiya üzrə deyil, tətbiq üzrə aparılır. İşləyən yönləndirmə portun bağlandığını və uzaq tərəfin yığa bildiyini sübut edir; sizin üçün vacib olan proqramın onun vasitəsilə qoşulduğunu sübut etmir.

curl -sS --socks5-hostname 127.0.0.1:1080 -o /dev/null -w '%{http_code}\n' https://app.internal.example/health
psql "host=127.0.0.1 port=5432 dbname=app sslmode=require" -c 'select 1'

Birinci əmr host adı uzaqda həll olunmaqla SOCKS son nöqtəsi vasitəsilə sorğu göndərir, ikincisi isə TLS hələ tələb olunarkən yönləndirilmiş verilənlər bazası portunu işlədir. Yönləndirmə dayandırılmış halda eyni testləri keçirin ki, uğursuz olduqlarını təsdiqləyəsiniz, çünki hər iki halda keçən test heç vaxt tuneldən istifadə etməmişdir.

Sonra marşrutlaşdırılmış VPN ilə yalnız vacib ölçülərdə müqayisə edin: hansı hədəflər əhatə olunur, hansı protokollar işləyir, qoruma harada bitir və girişi kim təsdiqləməlidir. Tək xidmət üçün yönləndirmə daha dar və daha yaxşı cavab ola bilər, bir çox tətbiq eyni şəbəkə yoluna ehtiyac duyduqda isə VPN düzgün formadır. Heç biri uzaq son nöqtəsindən çatan hər şeyi vermir.

Əlaqəli məqalələr