Tünel / Proxy
Tüneller, DBX arka ucunun çalıştığı yerde çalışır. Masaüstü'nde yerel yollar ve geçici dinleyiciler sizin bilgisayarınıza aittir. Docker/Web'de yollar, ağ çıkışı ve geçici dinleyiciler tarayıcının çalıştığı bilgisayara değil sunucuya ya da kapsayıcıya aittir.
DBX üç tünel / proxy türünü destekler:
| Tür | Ne zaman kullanılır |
|---|---|
| SSH tüneli | Bir bastion sunucusuna ya da veritabanı sunucusuna SSH erişiminiz varsa. |
| Proxy | Ağınız SOCKS5 ya da HTTP CONNECT proxy erişimi gerektiriyorsa. |
| HTTP tüneli | Veritabanına yalnızca bir web sunucusu erişebiliyorsa ve SSH/VPN kullanılamıyorsa. |
Ağ veritabanları için DBX, geçerli çalışma zamanında geçici bir port açar ve veritabanı sürücüsünü bu porta yönlendirir. Tünel / proxy katmanı protokol baytlarını gerçek hedefe iletir. Bir bağlantı birden çok taşıma katmanını birleştirebilir; DBX bunları bağlantı iletişim kutusunda gösterilen sırayla kurar.
Bağlantıya Özel ve Ortak Profiller
Bir katmanı doğrudan bağlantının Tünel / Proxy sekmesinden yapılandırın ya da Ayarlar → Tüneller altında yeniden kullanılabilir profiller oluşturun:
- Ortak profiller; SSH, SOCKS5 / HTTP CONNECT proxy'leri ve HTTP tünellerini destekler.
- Birden çok veritabanı bağlantısı aynı profile başvurabilir.
- Bir profili düzenlemek, ona başvuran her bağlantıyı bir sonraki bağlanışında etkiler.
- SSH testi erişilebilirliği ve kimlik doğrulamayı doğrular. Proxy testi bir proxy el sıkışması yapar ve isteğe bağlı bir hedef
sunucu:portkullanabilir. - HTTP tünelleri yalnızca gerçek hedef trafiği başladığında tembel olarak açılır, bu yüzden bağımsız bir HTTP tüneli profil testi yoktur.
Bir bağlantı farklı kimlik bilgilerine ya da özel bir katman sırasına ihtiyaç duyduğunda profili o bağlantıdan ayırın.
SSH Tüneli
SSH tünelleri yerleşiktir. Elle terminal port yönlendirmesi oluşturmanız gerekmez.
| Alan | Açıklama |
|---|---|
| SSH Sunucusu | SSH sunucusunun ana makine adı ya da IP'si |
| SSH Portu | SSH portu (varsayılan: 22) |
| SSH Kullanıcısı | SSH kimlik doğrulaması için kullanıcı adı |
| Bağlantı Zaman Aşımı | DBX'in SSH bağlantısını açarken bekleyeceği en uzun süre; varsayılan 5 saniyedir |
DBX arka ucunun okuyabileceği bir özel anahtar dosyası girin, örneğin ~/.ssh/id_rsa ya da ~/.ssh/id_ed25519:
- Anahtar Yolu — Masaüstü yerel dosyalara gözatabilir. Web, elle girilen bir sunucu ya da kapsayıcı yolunu gerektirir.
- Anahtar Parolası — Anahtarınız şifreliyse parolayı girin.
Anahtar kimlik doğrulaması parola kimlik doğrulamasından daha güvenlidir.
Birincil kimlik bilgisi olarak özel anahtarı, yedek olarak parolayı kullanın. DBX önce anahtar kimlik doğrulamasını dener; sunucu anahtarı reddeder ve parola kimlik doğrulamasını sunmayı sürdürürse otomatik olarak parolaya döner.
- Anahtar Yolu — Anahtar dosyanıza gözatıp seçin.
- Anahtar Parolası — Anahtarınız şifreliyse parolayı girin.
- Parola — Yedek olarak SSH parolanızı girin.
Bu; bir anahtarın geçici olarak geri alınmış olabileceği ya da çok atlamalı bir tünelde farklı atlamaların farklı yöntemler gerektirdiği durumlarda kullanışlıdır.
SSH parolanızı doğrudan girin. Bu, parola kimlik doğrulamasına izin veren sunucularda çalışır.
Yalnızca SSH none kimlik doğrulamasını kullanır; parola ya da özel anahtar göndermez. Kimlik bilgisiz girişe açıkça izin veren SSH proxy'leri ya da özel ağ geçitleri içindir. Reddedilme başka bir yönteme dönmez.
Sunucu Anahtarı Doğrulaması
DBX, bir kimlik bilgisi göndermeden önce SSH sunucu anahtarını doğrular. Güvenilen anahtarlar; sistemin known_hosts dosyalarından ve veri dizinindeki DBX'e ait known_hosts dosyasından gelir:
- Bilinmeyen bir sunucu, parmak izini incelemenizi ve açıkça kabul etmenizi ister.
- Yalnızca geçerli bağlantı için güvenebilir ya da DBX'in
known_hostsdosyasında hatırlayabilirsiniz. - DBX, daha önce bilinen bir sunucu için değişmiş bir anahtarı reddeder.
- Onay arayüzü kullanılamıyorsa, zaman aşımına uğrarsa ya da anahtar reddedilirse bağlantı parola veya özel anahtar gönderilmeden başarısız olur.
Tüneli Yerel Ağa Açma
127.0.0.1 yerine 0.0.0.0 yapar. Bu, DBX çalışma zamanının saldırı yüzeyini genişletir ve yalnızca uygun güvenlik duvarı kurallarıyla güvenilir ağlarda kullanılmalıdır.Masaüstü'nde bu, geçici portu bilgisayarınız üzerinden erişilebilir yapabilir. Docker/Web'de dinleyici sunucunun ya da kapsayıcının içindedir; dışarıdan erişilebilirlik yine yayımlanan portlara, kapsayıcı ağına ve ana makine güvenlik duvarına bağlıdır.
Proxy
Ortamınız SSH yerine giden bir proxy gerektirdiğinde proxy katmanını kullanın.
DBX şunları destekler:
- SOCKS5 proxy
- HTTP CONNECT proxy
- İsteğe bağlı proxy kullanıcı adı ve parolası
Ortak bir proxy profili mysql.internal:3306 gibi isteğe bağlı bir test hedefi içerebilir. Hedef verilmezse test yalnızca proxy uç noktasını ve kimlik bilgilerini doğrular. Rotanın tamamını doğrulamak için veritabanı bağlantı testini kullanın.
HTTP Tüneli
dbx_tunnel.php olduğu için dağıtım dosyası PHP'ye özgüdür, ancak DBX'teki bağlantı türü HTTP tünelidir.Veritabanı özel bir ağın içindeyken o ağdaki bir web sunucusu ona erişebiliyorsa HTTP tünelini kullanın. Bu; yalnızca HTTP/HTTPS'in kullanılabildiği, SSH tünel yetkilerinin fazla geniş ya da erişilemez olduğu ortamlara uyar.
Betiği Dağıtma
deploy/dbx_tunnel.php dosyasını, veritabanına erişebilen bir PHP web sunucusuna yükleyin.
PHP sunucusunda şu ortam değişkenlerini yapılandırın:
| Değişken | Zorunlu | Açıklama |
|---|---|---|
DBX_TUNNEL_TOKEN | Evet | Ortak belirteç. DBX'e aynı değeri girin. |
DBX_TUNNEL_ALLOWED_HOSTS | Hayır | Virgülle ayrılmış hedef sunucu izin listesi. Kesinlikle önerilir. |
DBX_TUNNEL_DIR | Hayır | Oturum kuyruğu dizini. Varsayılan olarak geçici bir dizindir. |
DBX_TUNNEL_MAX_SESSION_SECONDS | Hayır | En uzun oturum ömrü. Varsayılan 3600. |
DBX_TUNNEL_PHP | Hayır | PHP-FPM fastcgi_finish_request kullanılamadığında kullanılan PHP CLI yolu. |
DBX'te bir HTTP Tüneli katmanı ekleyin ve şunları doldurun:
| Alan | Açıklama |
|---|---|
| Tünel Betiği URL'si | dbx_tunnel.php adresinin URL'si, örneğin https://example.com/dbx_tunnel.php |
| Tünel Belirteci | DBX_TUNNEL_TOKEN değeri |
| Tünel Zaman Aşımı | HTTP tünelini ve hedef veritabanı bağlantısını açma zaman aşımı |
Veritabanı sunucusu ve portu, dizüstü bilgisayarınızdan değil PHP sunucusundan görüldüğü hâliyle girilmelidir.
HTTP Tüneli Akışı
DBX veritabanı sürücüsü
-> 127.0.0.1:<yerel geçici port>
-> DBX HTTP tünel istemcisi
-> HTTP POST istekleri
-> web sunucusundaki dbx_tunnel.php
-> PHP'den özel veritabanına TCP bağlantısı
-> veritabanıİstek protokolü kısa HTTP yoklamasıdır:
- DBX, geçerli çalışma zamanında bir TCP dinleyicisi başlatır.
- Veritabanı sürücüsü bu yerel porta bağlanır.
- DBX; oturum kimliği, hedef sunucu, hedef port ve bağlantı zaman aşımıyla
dbx_tunnel.phpadresineopengönderir. - PHP betiği belirteci ve izin listesini doğrular, ardından veritabanına TCP soketi açan bir işçi başlatır.
- Veritabanı sürücüsünden gelen baytlar betiğe
writeile gönderilir. - DBX betiği
readile yoklar; yanıt baytları yerel veritabanı sürücüsü bağlantısına geri yazılır. - Bağlantı bittiğinde DBX
closegönderir ve PHP işçisi veritabanı soketini kapatır.
Bu, DBX Web'i gerektirmez ve WebSocket kullanmaz.
Güvenlik ve Sınırlar
- Betik URL'si için HTTPS kullanın.
- Uzun ve rastgele bir
DBX_TUNNEL_TOKENbelirleyin. - Betiğin genel bir iç TCP aktarıcısına dönüşmemesi için
DBX_TUNNEL_ALLOWED_HOSTSayarlayın. - Mümkün olduğunda betik yoluna herkese açık erişimi kısıtlayın.
- HTTP tüneli kullanışlıdır, ancak baytları HTTP yoklaması ve sunucu tarafındaki bir kuyruk üzerinden ilettiği için genellikle doğrudan TCP, VPN ya da SSH'tan yavaştır.
- Diğer katmanlarla birleştirilirse HTTP tüneli ilk tünel / proxy katmanı olmalıdır, çünkü en dıştaki ağ sınırıdır.
- Betik, özel ağdan hedef sunuculara erişebilir. Onu Üretim Güvenliği sayfasındaki en az açıklık ve kimlik bilgisi yönergeleriyle dağıtın ve işletin.
Dosya Veritabanları
Access bağlantıları dosya tabanlıdır ve tünel / proxy katmanlarını kullanmaz. DuckDB de genellikle yerel bir dosya kullanır, bu yüzden tünel / proxy katmanlarını yalnızca seçili sürücü profili bir ağ uç noktası kullandığında yapılandırın.
SQLite de bir dosya veritabanıdır. Yerel bir SQLite dosyası yine TCP tüneli kullanmaz. Masaüstü uygulamasında, bir Linux amd64/arm64 makinesindeki uzak SQLite dosyasını açmak için bir SQLite bağlantısına SSH atlamaları ekleyebilirsiniz. DBX ardından son SSH atlamasında kısa ömürlü bir worker başlatır ve o worker ile konuşur; .db dosyasını dizüstü bilgisayarınıza kopyalamaz. Yol alanı, yerel bir dosya seçicisi değil, o dosya sunucusundaki mutlak bir yoldur.
Worker'ı yükleyecek olan ilk Test ya da Bağlan işlemi onay ister ve hedef yolu ile özeti gösterir. Worker'ı yalnızca oturum için tutabilir (bağlantıyı kestiğinizde silinir), ~/.cache/dbx/sqlite-worker/<digest> altında kalıcı kılabilir ya da önceden yerleştirilmiş bir ikili dosyayı gösterebilirsiniz. Masaüstü, SQLite SSH Worker'ı Sürücü Yöneticisi'nden hem Linux x64 hem Linux ARM64 ikili dosyalarını içeren tek bir paket olarak kurar, ardından dosya sunucusuna uyanı yükler. SQLCipher, yüklenebilir uzantılar ve eklenmiş veritabanları bu uzak yolda v1'de desteklenmez. Yedekleme, bir SQLite anlık görüntüsünü dizüstü bilgisayarınıza kaydeder; geri yükleme yerel bir SQLite dosyasını yükler ve dosya sunucusunda uygular.
Oracle TNS tanımlayıcıları birden çok yük devretme adresi içerebilir. DBX bu tanımlayıcıyı tek bir geçici uç nokta üzerinden yeniden yazmadığı için TNS modu SSH, proxy ya da HTTP tünel katmanlarıyla birleştirilemez. Tünel gerektiğinde Servis Adı ya da SID modunu kullanın.
Bağlantı Oluşturma
Veritabanı profilini, tünel / proxy katmanlarını, SSL'i ve bağlantı rengini birlikte yapılandırın.
Veritabanı Desteği
Hangi veritabanı profillerinin dosya tabanlı, yerel, uyumluluk tabanlı ya da eklenti destekli olduğunu denetleyin.
Üretim Güvenliği
En az yetkiyi, ağ açıklığını, salt okunur korumayı ve üretim yazmalarını planlayın.