Ubuntu 20.04 Üzerinde Özel Bağlantılar İçin Dante Proxy Kurulumu
Bu makale, Ubuntu 20.04 işletim sistemi üzerinde Dante SOCKS proxy sunucusunun nasıl kurulacağını ve yapılandırılacağını ayrıntılı olarak açıklamaktadır. Özellikle dahili ağlar, güvenlik duvarı arkasındaki kaynaklara erişim veya belirli uygulamalar için gelişmiş gizlilik ve güvenlik sağlamak amacıyla özel bağlantılar kurmak isteyenler için adım adım bir rehber sunulmaktadır. Dante, esnekliği, performansı ve güvenlik özellikleri sayesinde bu tür senaryolar için güçlü bir çözümdür.
Giriş: Neden Bir SOCKS Proxy’ye İhtiyacınız Var?
İnternet dünyasında gezinirken veya ağ kaynaklarına erişirken, doğrudan bağlantılar her zaman ideal olmayabilir. Bazen belirli ağ segmentlerine erişim kısıtlı olabilir, güvenlik duvarları belirli portları engelleyebilir veya sadece çevrimiçi kimliğinizi veya konumunuzu belirli uygulamalar için gizlemek isteyebilirsiniz. İşte bu noktada bir proxy sunucusu devreye girer.
Proxy sunucuları, istemci ile hedef sunucu arasında bir aracı görevi görür. İstemci, isteğini doğrudan hedef sunucuya göndermek yerine, proxy sunucusuna gönderir. Proxy sunucusu bu isteği kendi adına hedef sunucuya iletir, cevabı alır ve ardından istemciye geri gönderir. Bu süreç, istemcinin gerçek IP adresini gizleyebilir, ağ trafiğini filtreleyebilir veya coğrafi kısıtlamaları aşmaya yardımcı olabilir.
SOCKS (Socket Secure) proxy, özellikle uygulama düzeyinde çalışan ve hem TCP hem de UDP bağlantılarını destekleyen genel amaçlı bir proxy protokolüdür. HTTP proxy’lerinin aksine, SOCKS proxy’leri protokol bağımsızdır; yani, web tarayıcılarından e-posta istemcilerine, dosya transferi programlarından oyunlara kadar çok çeşitli uygulamalarla kullanılabilirler. SOCKS5, kimlik doğrulama ve UDP desteği gibi gelişmiş özellikler sunarak SOCKS4’ten daha üstün bir seçenektir.
Dante, bu SOCKS protokolünü uygulayan, açık kaynaklı, yüksek performanslı ve güvenli bir SOCKS sunucusudur. Geniş yapılandırma seçenekleri sayesinde, belirli kullanıcılar, IP adresleri veya ağ arayüzleri için ayrıntılı erişim kontrol kuralları tanımlamanıza olanak tanır. Bu makalede, Ubuntu 20.04 üzerinde Dante’yi kurarak, özel ve güvenli bağlantılarınızı nasıl yöneteceğinizi öğreneceksiniz.
Ön Gereksinimler
Dante sunucusunu kurmaya başlamadan önce aşağıdaki ön gereksinimleri karşıladığınızdan emin olun:
* Ubuntu 20.04 Sunucusu: Temiz bir kurulum tavsiye edilir. Makaledeki komutlar bu sürüm için test edilmiştir.
* Sudo Ayrıcalıkları: Kurulum ve yapılandırma işlemleri için sudo yetkisine sahip bir kullanıcı hesabınız olmalıdır.
* Temel Linux Bilgisi: Komut satırı (CLI) kullanımı ve temel dosya sistemi navigasyonu hakkında bilgi sahibi olmanız faydalı olacaktır.
* Ağ Bilgisi: IP adresleri, alt ağlar ve temel ağ yapılandırması hakkında bilgi sahibi olmak, Dante’yi ağınıza doğru bir şekilde entegre etmenize yardımcı olacaktır.
* Güvenlik Duvarı (UFW) Bilgisi: Sunucunuzun güvenliğini sağlamak için UFW (Uncomplicated Firewall) yapılandırmasına aşina olmanız önemlidir.
SOCKS Protokolü ve Dante Sunucusu Anlayışı
Dante’nin kurulumuna geçmeden önce, SOCKS protokolünü ve Dante’nin bu protokolü nasıl uyguladığını anlamak önemlidir.
SOCKS Protokolü Detayları
SOCKS, OSI modelinin 5. katmanı olan oturum katmanında çalışan bir protokoldür. İki ana sürümü vardır:
* SOCKS4: Yalnızca TCP bağlantılarını destekler ve kimlik doğrulama özellikleri sınırlıdır. Genellikle hedef IP adresinin ve port numarasının iletilmesiyle çalışır.
* SOCKS5: Hem TCP hem de UDP bağlantılarını destekler. Bu, DNS sorguları, VoIP (Voice over IP) veya diğer UDP tabanlı uygulamalar için kritik öneme sahiptir. Ayrıca, kullanıcı adı/şifre tabanlı kimlik doğrulama gibi güçlü kimlik doğrulama mekanizmalarını da destekler. Bu makalede SOCKS5’e odaklanacağız çünkü daha modern ve güvenlidir.
Bir SOCKS5 bağlantısı genellikle şu adımları izler:
1. Bağlantı İsteği: İstemci, SOCKS proxy sunucusuna bir TCP bağlantısı kurar ve SOCKS5 protokol sürümünü belirtir.
2. Kimlik Doğrulama Yöntemleri: Proxy, desteklediği kimlik doğrulama yöntemlerini (örneğin, kimlik doğrulama yok, kullanıcı adı/şifre) istemciye bildirir.
3. Yöntem Seçimi: İstemci, proxy’nin sunduğu yöntemlerden birini seçer ve proxy’ye bildirir.
4. Kimlik Doğrulama (Gerekliyse): Eğer kullanıcı adı/şifre seçildiyse, istemci kimlik bilgilerini gönderir. Proxy bu bilgileri doğrular.
5. Hedef İsteği: Kimlik doğrulama başarılı olursa, istemci proxy’ye bağlanmak istediği hedef sunucunun IP adresini/alan adını ve port numarasını bildirir.
6. Bağlantı Kurulumu: Proxy, istemci adına hedef sunucuya bağlantı kurar.
7. Veri Aktarımı: Bağlantı kurulduktan sonra, istemci ve hedef sunucu arasındaki tüm veri trafiği proxy üzerinden akar.
Dante Server: Özellikleri ve Avantajları
Dante, SOCKS5 protokolünün tüm özelliklerini destekleyen ve çeşitli ağ ortamlarında yüksek performans sunan sağlam bir proxy sunucusudur. Temel avantajları şunlardır:
* Esneklik: Geniş yapılandırma seçenekleri sayesinde, belirli IP adresleri, ağ arayüzleri, portlar ve kullanıcılar için ayrıntılı erişim kontrol kuralları tanımlanabilir.
* Güvenlik: Kullanıcı adı/şifre kimlik doğrulaması ve IP tabanlı erişim kontrol listeleri (ACL) ile güçlü güvenlik sağlar.
* Performans: Yüksek trafik yüklerini yönetebilecek şekilde tasarlanmıştır.
* TCP ve UDP Desteği: SOCKS5’in temel bir özelliği olan hem TCP hem de UDP bağlantılarını destekler. Bu, DNS, VoIP ve diğer UDP tabanlı uygulamaların proxy üzerinden çalışmasına olanak tanır.
* IPv4 ve IPv6 Desteği: Hem eski hem de yeni nesil IP protokolleriyle uyumludur.
Dante’yi kullanarak, kurum içi ağınızdaki belirli sunuculara veya hizmetlere dışarıdan güvenli erişim sağlayabilir, belirli uygulamaların internet trafiğini merkezi bir noktadan yönetebilir veya hassas verilerin aktarımını belirli güvenlik politikalarına tabi tutabilirsiniz.
Dante Kurulumu ve Yapılandırması
Şimdi Dante sunucusunu Ubuntu 20.04 sistemimize kurmaya ve yapılandırmaya geçelim.
1. Sistemi Güncelleme
Kuruluma başlamadan önce, sisteminizin paket listesini güncellemek ve mevcut paketleri yükseltmek iyi bir uygulamadır:
sudo apt update
sudo apt upgrade -y
Bu komutlar, en son güvenlik yamalarını ve yazılım güncellemelerini almanızı sağlar.
2. Dante Sunucusunu Kurma
Dante sunucusu Ubuntu’nun varsayılan depolarında bulunur, bu yüzden kurulumu basittir:
sudo apt install dante-server -y
Bu komut, dante-server paketini ve bağımlılıklarını sisteminize yükleyecektir.
3. Dante Yapılandırma Dosyası (danted.conf) Oluşturma/Düzenleme
Dante’nin kalbi, /etc/danted.conf dosyasında yer alan yapılandırmasıdır. Varsayılan yapılandırma dosyası genellikle çok basittir veya yorum satırlarıyla doludur. En iyi uygulama, mevcut dosyayı yedekleyip yeni bir yapılandırma dosyası oluşturmaktır.
Önce mevcut yapılandırma dosyasını yedekleyelim:
sudo mv /etc/danted.conf /etc/danted.conf.bak
Şimdi yeni bir boş yapılandırma dosyası oluşturalım ve düzenlemeye başlayalım:
sudo nano /etc/danted.conf
Aşağıdaki örnek yapılandırma, hem güvenlik hem de işlevsellik açısından iyi bir başlangıç noktası sunar. Her bir bölümü ayrıntılı olarak açıklayacağız.
# Dante SOCKS Proxy Sunucusu Yapılandırması
Loglama ayarları:
Hatalar ve bağlantı bilgileri /var/log/syslog dosyasına yazılır.
logoutput: syslog
Dahili (Internal) Arayüz Ayarları:
Proxy sunucusunun hangi IP adresleri ve portlar üzerinden bağlantıları dinleyeceğini belirtir.
Bu örnekte, proxy sunucusu tüm arayüzlerdeki (0.0.0.0) 1080 numaralı TCP portunu dinleyecektir.
Eğer belirli bir IP adresine bağlamak isterseniz, 0.0.0.0 yerine sunucunuzun dahili IP adresini yazın.
internal: 0.0.0.0 port = 1080
Harici (External) Arayüz Ayarları:
Proxy sunucusunun dış dünyaya bağlanmak için kullanacağı IP adresini belirtir.
Genellikle sunucunuzun genel IP adresidir. Eğer birden fazla arayüzünüz varsa,
proxy'nin internete çıkarken hangi arayüzü kullanacağını buradan belirleyebilirsiniz.
Eğer tek bir arayüzünüz varsa, 'primary' ana arayüzü kullanır.
external: primary
Kimlik doğrulama yöntemleri:
Bu örnekte, hem 'username' (kullanıcı adı/şifre) hem de 'none' (kimlik doğrulama yok) yöntemleri desteklenmektedir.
Güvenlik için 'username' kullanılması şiddetle tavsiye edilir.
Eğer sadece kimlik doğrulama ile erişime izin vermek isterseniz, 'none' kısmını kaldırın.
socksmethod: username none
Ayrıcalıklı ve Ayrıcalıksız Kullanıcı Ayarları:
Dante, güvenlik nedeniyle ayrıcalıksız bir kullanıcı altında çalışır.
'user.privileged' genellikle root'tur.
'user.notprivileged' ise proxy işlemlerini yürüten kullanıcıdır.
Varsayılan olarak 'dante' kullanıcısı oluşturulur ve kullanılır.
user.privileged: root
user.notprivileged: dante
Erişim Kontrol Kuralları (ACL'ler):
1. İstemci (Client) Kuralları:
Kimlerin proxy sunucusuna bağlanabileceğini kontrol eder.
Örnek 1: Belirli bir alt ağdan gelen tüm bağlantılara izin ver.
from: 192.168.1.0/24 # Bu alt ağdan gelen istemciler
to: 0.0.0.0/0 # Herhangi bir hedefe
port: 1-65535 # Herhangi bir port üzerinden
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0
}
Örnek 2: Tüm IP adreslerinden gelen bağlantılara izin ver.
DİKKAT: Bu kural, proxy sunucunuzu internete açar.
Sadece güvenilir istemci IP'lerini belirtmek çok daha güvenlidir.
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username
}
Yukarıdaki kural, tüm IP'lerden gelen bağlantılara izin verir, ancak sadece 'username' metoduyla kimlik doğrulaması yapanlar için.
Eğer 'none' metodunu da kullanmak istiyorsanız ve belirli bir IP'den kimlik doğrulaması olmadan erişime izin vermek istiyorsanız:
client pass {
from: 192.168.1.100/32 to: 0.0.0.0/0
socksmethod: none
}
2. SOCKS Kuralları:
Proxy üzerinden bağlanan istemcilerin nereye gidebileceğini kontrol eder.
Örnek 1: Proxy üzerinden tüm hedeflere bağlantıya izin ver.
Bu kural, proxy'ye başarılı bir şekilde bağlanan herhangi bir istemcinin
internetteki herhangi bir IP adresine ve porta bağlanmasına izin verir.
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username
}
Yukarıdaki kural, tüm IP'lerden gelen ve 'username' ile kimlik doğrulaması yapan tüm istemcilerin
herhangi bir hedefe bağlanmasına izin verir.
Eğer 'none' metoduyla gelen istemciler için farklı kurallar tanımlamak isterseniz:
socks pass {
from: 192.168.1.100/32 to: 10.0.0.0/8
socksmethod: none
}
Bu, 192.168.1.100 IP'sinden kimlik doğrulaması olmadan gelenlerin sadece 10.0.0.0/8 ağına bağlanmasına izin verir.
Varsayılan olarak tüm reddetme kuralları
Yukarıdaki 'pass' kurallarıyla eşleşmeyen her şey reddedilecektir.
client block {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
socks block {
from: 0.0.0.0/0 to: 0.0.0.0/0
}
Yapılandırma Dosyasının Açıklaması:
* logoutput: syslog: Dante’nin tüm loglarını sistemin syslog servisine göndermesini sağlar. Bu, logları journalctl veya /var/log/syslog dosyası üzerinden kolayca izleyebileceğiniz anlamına gelir.
* internal: 0.0.0.0 port = 1080: Bu satır, Dante sunucusunun hangi IP adresleri ve portlar üzerinden gelen bağlantıları dinleyeceğini belirtir.
* 0.0.0.0: Sunucunun tüm ağ arayüzlerindeki bağlantıları dinlemesi anlamına gelir. Eğer proxy’yi yalnızca belirli bir dahili IP adresinde dinlemesini istiyorsanız (örneğin 192.168.1.5), 0.0.0.0 yerine o IP adresini yazmalısınız.
* port = 1080: SOCKS proxy’leri için standart port 1080’dir, ancak istediğiniz başka bir portu da kullanabilirsiniz.
* external: primary: Proxy sunucusunun dış dünyaya bağlanmak için hangi ağ arayüzünü kullanacağını belirtir. primary ana arayüzü ifade eder. Eğer belirli bir IP adresini kullanmasını istiyorsanız, primary yerine o IP adresini yazabilirsiniz (örneğin external: 198.51.100.1).
* socksmethod: username none: Desteklenen kimlik doğrulama yöntemlerini tanımlar.
* username: İstemcilerin kullanıcı adı ve şifre ile kimlik doğrulaması yapmasını gerektirir. Bu, güvenliği artırmak için şiddetle tavsiye edilir.
* none: Kimlik doğrulaması gerektirmez. Bu yöntemi kullanırken çok dikkatli olun ve sadece güvenli iç ağlarda veya belirli, güvenilir istemci IP’leri için kullanın.
* user.privileged: root: Dante servisinin başlangıçta kullanacağı ayrıcalıklı kullanıcıdır.
* user.notprivileged: dante: Dante servisinin proxy isteklerini işlerken kullanacağı ayrıcalıksız kullanıcıdır. Bu, güvenlik için önemlidir, çünkü proxy işlemleri root yetkileriyle çalışmaz. Dante kurulumu bu dante kullanıcısını otomatik olarak oluşturur.
* client pass kuralları: Bu kurallar, hangi istemcilerin Dante proxy sunucusuna bağlanmasına izin verildiğini belirler.
* from: 0.0.0.0/0: Herhangi bir IP adresinden gelen bağlantılar. Güvenlik için, burada sadece proxy’ye erişmesi gereken belirli IP adreslerini veya alt ağları (örneğin 192.168.1.0/24) belirtmeniz şiddetle tavsiye edilir.
* to: 0.0.0.0/0: İstemcinin proxy sunucusuna (yani internal IP’ye) bağlanmasını ifade eder.
* socksmethod: username: Bu kuralın sadece kullanıcı adı/şifre ile kimlik doğrulayan istemciler için geçerli olduğunu belirtir.
* socks pass kuralları: Bu kurallar, proxy’ye başarılı bir şekilde bağlanan istemcilerin proxy üzerinden hangi dış hedeflere bağlanabileceğini belirler.
* from: 0.0.0.0/0: Proxy’ye bağlanan herhangi bir istemci (bu, client pass kurallarına göre zaten filtrelenmiştir).
* to: 0.0.0.0/0: Herhangi bir dış hedefe (IP adresi ve port) bağlanmaya izin verir. Eğer belirli hedeflere kısıtlama getirmek isterseniz, burada belirli IP adresleri veya alt ağlar belirtebilirsiniz (örneğin to: 10.0.0.0/8).
* client block ve socks block: Bu bloklar, yukarıdaki pass kurallarıyla eşleşmeyen tüm bağlantıların varsayılan olarak reddedilmesini sağlar. Bu, “her şeyi reddet, izin verilenleri kabul et” güvenlik prensibini uygular.
Yapılandırma dosyasını kaydetmek için CTRL+X, ardından Y ve Enter tuşlarına basın.
4. Dante Servisini Başlatma ve Etkinleştirme
Yapılandırma dosyasını kaydettikten sonra, Dante servisini yeniden başlatmanız ve sistem başlangıcında otomatik olarak başlamasını sağlamanız gerekir.
sudo systemctl restart danted
sudo systemctl enable danted
Dante servisinin durumunu kontrol ederek doğru çalıştığından emin olun:
sudo systemctl status danted
Çıktıda active (running) ibaresini görmelisiniz. Herhangi bir hata varsa, journalctl -u danted komutuyla logları kontrol edebilirsiniz.
5. Güvenlik Duvarını (UFW) Yapılandırma
Dante sunucunuzun güvenliğini sağlamak için, yalnızca gerekli portların dışarıdan erişilebilir olduğundan emin olmalısınız. UFW (Uncomplicated Firewall), Ubuntu’da güvenlik duvarını yönetmek için kullanılan basit bir araçtır.
Öncelikle, Dante’nin dinlediği portu (örneğin 1080) açmanız gerekir. Eğer client pass kuralınızda belirli IP adresleri tanımladıysanız, UFW’de de aynı IP’lerden erişime izin vermelisiniz.
Tüm IP’lerden 1080 portuna erişime izin ver (DİKKAT! Sadece güvenli ortamlarda veya kimlik doğrulama ile kullanın):
sudo ufw allow 1080/tcp
Sadece belirli bir IP adresinden veya alt ağdan 1080 portuna erişime izin ver (Önerilen):
sudo ufw allow from 192.168.1.0/24 to any port 1080 proto tcp
Bu komut, yalnızca 192.168.1.0/24 alt ağındaki cihazların Dante proxy’sinin 1080 portuna TCP üzerinden bağlanmasına izin verir. Kendi ağ yapınıza göre bu IP aralığını değiştirmelisiniz.
UFW’nin etkin olduğundan ve kuralların uygulandığından emin olmak için:
sudo ufw enable # Eğer UFW daha önce etkinleştirilmediyse
sudo ufw status
status çıktısında, 1080 portuna yönelik izin verilen kuralı görmelisiniz.
6. Kimlik Doğrulama İçin Kullanıcı Oluşturma
Eğer danted.conf dosyanızda socksmethod: username seçeneğini etkinleştirdiyseniz, proxy’ye bağlanacak istemciler için bir kullanıcı adı ve şifre oluşturmanız gerekir. Bu kullanıcılar normal sistem kullanıcıları gibi davranmaz, sadece Dante proxy’si için kimlik doğrulama amacıyla kullanılırlar.
sudo adduser --no-create-home --shell /usr/sbin/nologin danteuser
* --no-create-home: Bu kullanıcı için bir ev dizini oluşturulmamasını sağlar.
* --shell /usr/sbin/nologin: Bu kullanıcının sisteme giriş yapmasını engeller, sadece proxy kimlik doğrulaması için kullanılabilir.
Kullanıcı için bir şifre belirleyin:
sudo passwd danteuser
Şifreyi iki kez girerek onaylayın. Artık danteuser kullanıcı adı ve belirlediğiniz şifre ile Dante proxy’sine bağlanabilirsiniz. İsterseniz birden fazla proxy kullanıcısı oluşturabilirsiniz.
Proxy Kullanım Örnekleri (İstemci Tarafı)
Dante sunucusunu başarıyla kurup yapılandırdıktan sonra, çeşitli istemci uygulamalarını bu proxy’yi kullanacak şekilde ayarlayabilirsiniz. İşte bazı yaygın örnekler:
1. Web Tarayıcıları (Firefox, Chrome)
Çoğu modern web tarayıcısı, SOCKS proxy ayarlarını destekler.
Mozilla Firefox:
1. Ayarlar (Preferences) menüsünü açın.
2. “Ağ Ayarları” (Network Settings) bölümüne gidin.
3. “Ayarlar…” (Settings...) düğmesine tıklayın.
4. “Manuel Proxy Yapılandırması” (Manual proxy configuration) seçeneğini işaretleyin.
5. “SOCKS Host” alanına Dante sunucunuzun IP adresini (veya alan adını) ve “Port” alanına 1080’i girin.
6. “SOCKS v5” seçeneğini işaretleyin.
7. “Uzak DNS’i SOCKS v5 üzerinden çöz” (Proxy DNS when using SOCKS v5) seçeneğini işaretlemeniz önerilir. Bu, DNS sorgularınızın da proxy üzerinden gitmesini sağlar.
8. Ayarları kaydedin. Tarayıcı sizden kullanıcı adı ve şifre isteyecektir (eğer kimlik doğrulama etkinse).
Google Chrome (ve Chromium tabanlı tarayıcılar):
Chrome, doğrudan tarayıcı içi SOCKS ayarları sunmaz; bunun yerine sistemin proxy ayarlarını kullanır. Linux’ta bu genellikle komut satırı argümanları ile yapılır veya sistem çapında bir proxy ayarı kullanılır.
Komut satırından başlatırken:
google-chrome --proxy-server="socks5://danteuser:password@YOUR_PROXY_IP:1080" --host-resolver-rules="MAP * 0.0.0.0 , EXCLUDE YOUR_PROXY_IP"
* danteuser:password: Proxy için oluşturduğunuz kullanıcı adı ve şifre.
* YOUR_PROXY_IP: Dante sunucunuzun IP adresi.
Bu yöntem, Chrome’u belirli bir proxy ile başlatmanın geçici bir yoludur. Kalıcı bir çözüm için, sisteminizin genel proxy ayarlarını yapılandırmanız gerekebilir.
2. Terminal Uygulamaları (curl, wget)
Birçok komut satırı aracı, proxy ortam değişkenlerini kullanarak proxy üzerinden bağlantı kurabilir.
# SOCKS proxy ortam değişkenini ayarlayın (kullanıcı adı ve şifre ile)
export SOCKS_SERVER="danteuser:password@YOUR_PROXY_IP:1080"
veya kimlik doğrulama yoksa
export SOCKS_SERVER="YOUR_PROXY_IP:1080"
curl ile proxy üzerinden bir istek yapın
curl --socks5-hostname "$SOCKS_SERVER" http://ipinfo.io/ip
wget ile proxy üzerinden bir dosya indirin
wget --socks-hostname="$SOCKS_SERVER" http://example.com/somefile.zip
Bu değişkenleri kalıcı hale getirmek için .bashrc veya .profile dosyanıza ekleyebilirsiniz.
3. APT Paket Yöneticisi
APT’nin proxy üzerinden çalışmasını sağlamak için /etc/apt/apt.conf.d/ dizininde bir yapılandırma dosyası oluşturabilirsiniz.
sudo nano /etc/apt/apt.conf.d/proxy.conf
Dosyaya aşağıdaki satırları ekleyin (kullanıcı adı ve şifre ile):
Acquire {
SOCKS5Proxy "socks5://danteuser:password@YOUR_PROXY_IP:1080";
};
Kimlik doğrulama yoksa:
Acquire {
SOCKS5Proxy "socks5://YOUR_PROXY_IP:1080";
};
Bu yapılandırmayı yaptıktan sonra, sudo apt update ve sudo apt install gibi komutlar proxy üzerinden çalışacaktır.
4. Diğer Uygulamalar (Telegram, Discord, vb.)
Birçok masaüstü ve mobil uygulama, kendi proxy ayarları bölümüne sahiptir. Örneğin:
* Telegram: Ayarlar -> Veri ve Depolama -> Proxy Ayarları -> SOCKS5 proxy ekle.
* Discord: Genellikle sistem proxy ayarlarını kullanır veya doğrudan proxy ayarı sunmaz.
Uygulamanızın belgelerini kontrol ederek proxy ayarlarının nerede bulunduğunu öğrenebilirsiniz.
5. SSH ile Port Yönlendirme (Dynamic Port Forwarding)
Dante’nin doğrudan bir alternatifi olmasa da, SSH’nin dinamik port yönlendirme özelliği (SOCKS proxy gibi çalışır) de özel bağlantılar için kullanılabilir.
ssh -D 1080 -N -f user@your_ssh_server_ip
Bu komut, yerel 1080 portunda bir SOCKS proxy başlatır ve tüm trafiği your_ssh_server_ip adresindeki SSH sunucusu üzerinden yönlendirir. Ancak, bu tek bir kullanıcı için kişisel bir çözümdür ve Dante gibi çok kullanıcılı, merkezi bir proxy sunucusu değildir.
Gelişmiş Yapılandırma ve İpuçları
Dante’nin esnekliği, daha karmaşık ağ senaryoları için detaylı yapılandırmalara olanak tanır.
Birden Fazla Arayüz/IP Kullanımı
Eğer sunucunuzda birden fazla ağ arayüzü veya IP adresi varsa, internal ve external kurallarını buna göre ayarlayabilirsiniz:
# Proxy 192.168.1.100 adresindeki 1080 portunu dinler
internal: 192.168.1.100 port = 1080
Proxy 10.0.0.50 adresindeki 1080 portunu dinler (ikinci bir giriş noktası)
internal: 10.0.0.50 port = 1080
Proxy dış dünyaya çıkarken 198.51.100.1 IP adresini kullanır
external: 198.51.100.1
Erişim Kontrolü Detayları
client pass, socks pass, client block ve socks block kuralları çok detaylı olabilir:
# Sadece 192.168.1.0/24 ağındaki istemcilerin proxy'ye bağlanmasına izin ver, kimlik doğrulaması zorunlu.
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0
socksmethod: username
}
Proxy'ye bağlanan istemcilerin sadece 172.16.0.0/16 ağına ve 80/443 portlarına erişmesine izin ver.
socks pass {
from: 0.0.0.0/0 to: 172.16.0.0/16 port 80,443
socksmethod: username
}
Belirli bir IP adresinin (192.168.1.5) proxy'ye bağlanmasını engelle.
client block {
from: 192.168.1.5/32 to: 0.0.0.0/0
}
Kurallar yukarıdan aşağıya doğru okunur ve ilk eşleşen kural uygulanır. Bu nedenle, daha spesifik kuralları daha genel kurallardan önce tanımlamanız önemlidir.
Günlükleme (Logging)
logoutput ayarı ile logların nereye yazılacağını kontrol edebilirsiniz:
* logoutput: syslog: Varsayılan ve önerilen. Loglar sistemin genel log dosyalarına (/var/log/syslog veya journalctl) gider.
* logoutput: /var/log/dante.log: Logları belirtilen bir dosyaya yazar. Bu durumda dosya izinlerini ve boyutunu manuel olarak yönetmeniz gerekebilir.
Logları izlemek için:
sudo journalctl -u danted -f
veya
sudo tail -f /var/log/syslog
Performans İpuçları
* timeout ayarları: danted.conf dosyasında timeout.connect, timeout.io, timeout.session gibi ayarlar yaparak bağlantı zaman aşımlarını yönetebilirsiniz. Bu, özellikle yavaş veya kararsız ağlarda performansı etkileyebilir.
* Donanım: Yüksek trafik bekliyorsanız, yeterli CPU, RAM ve ağ bant genişliğine sahip bir sunucu kullanın.
Güvenlik İpuçları
* En Az Ayrıcalık Prensibi: Dante’nin ayrıcalıksız bir kullanıcı altında çalışması (varsayılan olarak dante) zaten iyi bir güvenlik önlemidir.
* Güçlü Kimlik Doğrulama: Daima username kimlik doğrulamasını kullanın ve güçlü, tahmin edilemez şifreler belirleyin.
* Sıkı UFW Kuralları: Yalnızca güvenilir IP adreslerinin proxy portuna erişmesine izin verin. sudo ufw status ile kurallarınızı düzenli olarak kontrol edin.
* Sıkı ACL’ler: client pass ve socks pass kurallarını, proxy’ye kimlerin ve nereye erişebileceğini en az ayrıcalık ilkesine göre kısıtlayacak şekilde yapılandırın.
* Günlükleri İzleyin: Dante loglarını düzenli olarak kontrol ederek anormal aktivite veya yetkisiz erişim denemelerini tespit edin.
* TLS/SSL ile SOCKS: Eğer SOCKS trafiğinizin şifrelenmesini istiyorsanız, Dante doğrudan TLS/SSL şifrelemesi sağlamaz. Ancak, trafiği Stunnel gibi bir araçla şifreleyip ardından Dante’ye yönlendirebilirsiniz. Bu daha gelişmiş bir yapılandırmadır ve ek bir şifreleme katmanı sağlar.
Sorun Giderme (Troubleshooting)
Dante kurulumunuzda bir sorunla karşılaşırsanız, aşağıdaki adımları izleyerek sorunu teşhis edebilirsiniz:
1. Dante Servis Durumu:
sudo systemctl status danted
Servisin active (running) olup olmadığını kontrol edin. Eğer değilse, hata mesajını inceleyin.
2. Dante Logları:
sudo journalctl -u danted --since "5 minutes ago"
veya
sudo tail -f /var/log/syslog | grep danted
Hata mesajları, yapılandırma sorunları veya bağlantı denemeleri hakkında bilgi sağlayabilir.
3. Ağ Bağlantısı ve Port Dinleme:
Dante’nin yapılandırılan portu dinleyip dinlemediğini kontrol edin (varsayılan 1080):
sudo netstat -tulnp | grep 1080
Çıktıda tcp 0 0 0.0.0.0:1080 0.0.0.0:* LISTEN benzeri bir satır görmelisiniz. Eğer görmüyorsanız, Dante servisi doğru başlatılmamış veya yanlış portta yapılandırılmış olabilir.
4. Yapılandırma Dosyası (danted.conf) Hataları:
Yapılandırma dosyasında yazım hataları, yanlış sözdizimi veya eksik bölümler, Dante’nin başlamamasına neden olabilir. Herhangi bir değişiklik yaptıktan sonra servisi yeniden başlatmayı unutmayın.
5. Güvenlik Duvarı (UFW) Kuralları:
sudo ufw status verbose
Dante’nin dinlediği porta erişime izin veren bir kuralın olduğundan emin olun. Eğer UFW etkinse ve kural yoksa, bağlantılar reddedilecektir.
6. İstemci Yapılandırması:
İstemci tarafında (tarayıcı, terminal, vb.) proxy ayarlarını doğru girdiğinizden emin olun. IP adresi, port, SOCKS5 seçeneği ve kimlik bilgileri (varsa) doğru olmalıdır.
7. Kimlik Doğrulama Sorunları:
Eğer username kimlik doğrulamasını kullanıyorsanız, danteuser için belirlediğiniz şifrenin doğru olduğundan emin olun. sudo passwd danteuser komutuyla şifreyi yeniden ayarlayabilirsiniz.
Bu adımlar, çoğu Dante kurulum ve yapılandırma sorununu çözmenize yardımcı olacaktır.
Sonuç
Bu makalede, Ubuntu 20.04 üzerinde Dante SOCKS proxy sunucusunu özel bağlantılar için nasıl kuracağınızı ve yapılandıracağınızı ayrıntılı olarak ele aldık. Dante’nin esnekliği, güvenlik özellikleri ve TCP/UDP desteği sayesinde, ağ trafiğinizi yönetmek, belirli kaynaklara güvenli erişim sağlamak veya uygulamalarınız için gelişmiş gizlilik sunmak gibi çeşitli ihtiyaçlarınızı karşılayabilirsiniz.
Başarılı bir kurulum için sistem güncellemelerinden başlayarak, Dante sunucusunun kurulumuna, danted.conf dosyasının dikkatli bir şekilde yapılandırılmasına, güvenlik duvarı kurallarının ayarlanmasına ve isteğe bağlı olarak kimlik doğrulama için kullanıcı oluşturmaya kadar tüm adımları adım adım uyguladık. Ayrıca, web tarayıcıları ve terminal araçları gibi çeşitli istemcilerde proxy ayarlarının nasıl yapılacağını gösterdik.
Unutmayın ki bir proxy sunucusu kurarken güvenlik en önemli faktördür. Güçlü kimlik doğrulama yöntemleri kullanmak, erişim kontrol listelerini (ACL’ler) sıkı bir şekilde yapılandırmak ve güvenlik duvarı kurallarını en az ayrıcalık ilkesine göre uygulamak, proxy sunucunuzu yetkisiz erişimden korumanın anahtarıdır. Dante’nin loglarını düzenli olarak izlemek de olası güvenlik ihlallerini erken tespit etmenize yardımcı olacaktır.
Dante ile özel bağlantılarınız artık daha güvenli ve kontrol edilebilir bir yapıya kavuşmuştur. Bu rehberin, ağ altyapınızda Dante’yi etkili bir şekilde kullanmanız için size sağlam bir temel sağladığını umuyoruz.