Takip et

Ubuntu 22.04 Üzerinde Özel Bağlantılar İçin Dante Proxy Kurulumu ve Yapılandırması

Ubuntu 22.04 Üzerinde Özel Bağlantılar İçin Dante Proxy Kurulumu ve Yapılandırması Giriş Günümüzün karmaşık ağ ortamlarında, güven

Ubuntu 22.04 Üzerinde Özel Bağlantılar İçin Dante Proxy Kurulumu ve Yapılandırması

Giriş

Günümüzün karmaşık ağ ortamlarında, güvenli ve kontrollü bağlantı ihtiyacı giderek artmaktadır. Özellikle özel ağlar, hassas verilerin iletildiği veya belirli kaynaklara erişimin kısıtlandığı durumlarda, bu bağlantıların güvenliğini sağlamak büyük önem taşır. İşte bu noktada SOCKS (Socket Secure) protokolünü uygulayan proxy sunucuları devreye girer. SOCKS, istemci-sunucu uygulamaları için bir proxy protokolüdür ve TCP/IP katmanında çalışarak herhangi bir uygulama protokolünü (HTTP, FTP, SMTP vb.) tünelleyebilir. Bu özelliği sayesinde, istemcilerin bir güvenlik duvarının arkasındaki sunuculara veya kısıtlı ağlara güvenli bir şekilde erişmesini sağlar.

Dante Proxy, bu ihtiyacı karşılamak için geliştirilmiş, yüksek performanslı ve esnek bir SOCKS proxy sunucusudur. Hem SOCKS4 hem de SOCKS5 protokollerini destekler ve çeşitli kimlik doğrulama yöntemleri, gelişmiş erişim kontrol kuralları ve kapsamlı günlükleme yetenekleri sunar. Dante’nin esnekliği, onu hem basit ev ağı kullanımlarından hem de karmaşık kurumsal ağ altyapılarına kadar geniş bir yelpazede tercih edilen bir çözüm haline getirir. Özellikle “özel bağlantılar” senaryosunda, yani belirli bir iç ağa veya hassas bir kaynağa kontrollü erişim sağlamak istendiğinde, Dante Proxy güçlü bir kapı bekçisi görevi üstlenebilir.

Bu makalede, Ubuntu 22.04 işletim sistemi üzerinde Dante Proxy sunucusunun adım adım nasıl kurulacağını ve özel bağlantılar için nasıl yapılandırılacağını detaylı bir şekilde ele alacağız. Kurulumdan başlayarak, kimlik doğrulama, erişim kontrolü, güvenlik duvarı yapılandırması ve test süreçlerini kapsayacağız. Ayrıca, özel ağ ortamlarının gerektirdiği ek güvenlik önlemleri ve ileri düzey yapılandırma ipuçlarına da değineceğiz. Bu rehberin sonunda, kendi güvenli SOCKS5 proxy sunucunuzu başarıyla kurmuş ve yapılandırmış olacaksınız.

Ön Gereksinimler

Dante Proxy kurulumuna başlamadan önce, aşağıdaki ön gereksinimlerin karşılandığından emin olmanız önemlidir:

* Ubuntu 22.04 Sunucusu: Kurulumu yapacağınız, internete erişimi olan bir Ubuntu 22.04 sunucusuna ihtiyacınız var. Bu bir fiziksel sunucu, sanal makine (VM) veya bulut sunucusu (AWS EC2, Azure VM, Google Cloud Compute Engine vb.) olabilir.
* Root veya Sudo Ayrıcalıklarına Sahip Kullanıcı: Kurulum ve yapılandırma adımları için sudo komutunu kullanabilecek veya doğrudan root kullanıcısı olarak oturum açmış olmanız gerekmektedir. Güvenlik açısından sudo kullanılması önerilir.
* Temel Linux Komut Satırı Bilgisi: apt paket yöneticisi, dosya düzenleme (nano veya vim gibi), servis yönetimi (systemctl) gibi temel Linux komutlarına aşina olmanız, kurulum sürecini daha kolay hale getirecektir.
* Ağ Bilgisi: IP adresleri, alt ağ maskeleri, portlar ve temel ağ kavramları hakkında bilgi sahibi olmak, Dante yapılandırmasını anlamanıza ve doğru kuralları belirlemenize yardımcı olacaktır.
* Güvenlik Duvarı (UFW) Bilgisi: Ubuntu’da varsayılan olarak gelen UFW (Uncomplicated Firewall) hakkında temel bilgiye sahip olmak, sunucunuzun güvenliğini doğru bir şekilde yapılandırmanız için önemlidir.

Dante Proxy Kurulumu

Dante Proxy’nin kurulum süreci oldukça basittir ve Ubuntu’nun apt paket yöneticisi aracılığıyla gerçekleştirilir.

Sistem Güncellemesi

Herhangi bir yazılım kurulumuna başlamadan önce, sisteminizin paket listesini güncellemek ve mevcut paketleri yükseltmek iyi bir uygulamadır. Bu, en son güvenlik yamalarına sahip olmanızı ve olası bağımlılık sorunlarını gidermenizi sağlar.

sudo apt update
sudo apt upgrade -y

Bu komutlar, paket listesini günceller ve mevcut tüm paketleri onay isteği olmadan (-y) yükseltir.

Dante Sunucu Paketinin Kurulumu

Sisteminiz güncelledikten sonra, Dante sunucu paketini kurabilirsiniz. Dante istemci paketleri de mevcuttur, ancak biz bir proxy sunucusu kurduğumuz için dante-server paketine ihtiyacımız var.

sudo apt install dante-server -y

Bu komut, Dante sunucu yazılımını ve gerekli bağımlılıklarını sisteminize kuracaktır. Kurulum tamamlandığında, Dante servisi genellikle otomatik olarak başlamaz ve yapılandırma dosyasını düzenlemenizi bekler. Dante’nin ana yapılandırma dosyası /etc/dante.conf konumundadır. Servis ikilisi ise /usr/sbin/sockd yolunda bulunur.

Dante Proxy Yapılandırması

Dante Proxy’nin kalbi, yapılandırma dosyası olan /etc/dante.conf‘tur. Bu dosya, proxy’nin nasıl davranacağını, hangi portları dinleyeceğini, hangi kimlik doğrulama yöntemlerini kullanacağını ve kimlerin nereye erişebileceğini belirler. Özel bağlantılar için güvenli bir proxy oluşturmak amacıyla bu dosyayı dikkatlice düzenlememiz gerekmektedir.

Varsayılan Yapılandırma Dosyasının Yedeklenmesi

Herhangi bir yapılandırma değişikliği yapmadan önce, orijinal dosyayı yedeklemek her zaman iyi bir uygulamadır. Bu, herhangi bir sorun yaşamanız durumunda kolayca geri dönebilmenizi sağlar.

sudo cp /etc/dante.conf /etc/dante.conf.bak

Dante Yapılandırma Dosyasının Düzenlenmesi

Şimdi nano veya tercih ettiğiniz başka bir metin düzenleyici ile yapılandırma dosyasını açalım:

sudo nano /etc/dante.conf

Dosyayı açtığınızda muhtemelen içinde yorum satırları ve örnek yapılandırmalar bulacaksınız. Tüm içeriği silip aşağıdaki yapılandırmayı yapıştırarak başlayabilir veya mevcut içeriği düzenleyebilirsiniz. Aşağıdaki örnek yapılandırma, özel bağlantılar için güçlü bir temel sağlayacaktır.

logoutput: /var/log/sockd.log
internal: eth0 port = 1080
external: eth0

socksmethod: username
clientmethod: none

user.privileged: root
user.unprivileged: nobody

client pass {
    from: 192.168.1.0/24 to: 0.0.0.0/0
    log: error connect disconnect
}

client block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error connect disconnect
}

socks pass {
    from: 0.0.0.0/0 to: 192.168.1.100/32 port = 22,80,443
    from: 0.0.0.0/0 to: 192.168.1.0/24 port = 1024-65535
    socksmethod: username
    log: error connect disconnect
}

socks block {
    from: 0.0.0.0/0 to: 0.0.0.0/0
    log: error connect disconnect
}

Şimdi bu yapılandırma dosyasındaki her bir parametreyi ve özel bağlantılar için neden bu şekilde ayarlandığını detaylıca inceleyelim:

Ağ Arayüzleri Tanımlaması (internal/external)

* logoutput: /var/log/sockd.log: Dante’nin tüm günlük mesajlarını bu dosyaya yazmasını sağlar. Sorun giderme ve güvenlik denetimi için bu çok önemlidir.
* internal: eth0 port = 1080: Bu parametre, Dante sunucusunun hangi ağ arayüzünde ve hangi portta gelen bağlantıları dinleyeceğini belirtir.
* eth0: Sunucunuzun ana ağ arayüzüdür. Kendi sunucunuzda ip a komutunu kullanarak doğru arayüz adını (örneğin, ens3, enp0s3 vb.) kontrol etmelisiniz.
* port = 1080: SOCKS protokolü için standart port 1080’dir. Farklı bir port kullanmak isterseniz değiştirebilirsiniz, ancak bu portun güvenlik duvarınızda da açık olduğundan emin olmalısınız.
* external: eth0: Bu parametre, Dante’nin dış dünyaya bağlantı kurarken hangi ağ arayüzünü kullanacağını belirtir. Genellikle internal ile aynı arayüzdür.

Kimlik Doğrulama Yöntemi (authentication)

* socksmethod: username: Bu, SOCKS istemcilerinin proxy üzerinden bağlantı kurarken kullanıcı adı ve parola ile kimlik doğrulaması yapmasını gerektirir. Özel bağlantılar için bu, güvenlik açısından en temel ve önemli adımdır. none olarak ayarlanırsa, herkes proxy’yi kullanabilir ki bu güvenliksiz bir durumdur.
* clientmethod: none: Bu parametre, Dante proxy’sine bağlanan istemcilerin kimlik doğrulama yöntemini belirler. none olarak ayarlanması, istemcinin kimlik doğrulaması yapmasına gerek olmadığı anlamına gelir. Ancak bu, client pass kurallarıyla birlikte ele alınmalıdır. Yani, proxy’ye kimlerin bağlanabileceği client pass kurallarıyla kontrol edilirken, socks pass kuralları proxy üzerinden dışarıya çıkarken kimlik doğrulamasını zorunlu kılar. Bu ayrım, özel ağ erişimlerinde esneklik sağlar.

Ayrıcalıklı ve Ayrıcalıksız Kullanıcılar

* user.privileged: root: Dante’nin başlatılması ve bazı sistem kaynaklarına erişmesi için root ayrıcalıklarını kullanacağını belirtir.
* user.unprivileged: nobody: Dante’nin ana proxy işlemlerini yürüteceği ayrıcalıksız kullanıcıyı belirtir. Güvenlik açısından, proxy servisinin mümkün olan en düşük ayrıcalıklarla çalışması önemlidir. nobody veya dante gibi özel olarak oluşturulmuş bir kullanıcı adı kullanılabilir.

Erişim Kuralları (rules)

Dante’nin erişim kontrol kuralları, client ve socks olmak üzere iki ana kategoriye ayrılır.

* client pass ve client block Kuralları: Bu kurallar, kimlerin Dante proxy sunucusuna bağlanabileceğini belirler.
* client pass { from: 192.168.1.0/24 to: 0.0.0.0/0 log: error connect disconnect }: Bu kural, sadece 192.168.1.0/24 alt ağından gelen istemcilerin Dante proxy’sine bağlanmasına izin verir. 0.0.0.0/0 hedefi, istemcinin proxy’ye bağlanma isteğini ifade eder, proxy üzerinden nereye gideceği ile ilgili değildir. Özel bağlantılar için bu kural çok önemlidir; sadece güvenilir ağlardaki istemcilerin proxy’ye erişmesine izin verirsiniz.
* client block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect }: Bu kural, yukarıdaki client pass kuralında belirtilmeyen tüm diğer istemcilerin proxy’ye bağlanmasını engeller. Kurallar yukarıdan aşağıya doğru işlendiği için, bu kural client pass kuralından sonra gelmelidir.
* socks pass ve socks block Kuralları: Bu kurallar, proxy’ye bağlanan kullanıcıların proxy üzerinden nereye bağlanabileceğini belirler.
* socks pass { from: 0.0.0.0/0 to: 192.168.1.100/32 port = 22,80,443 socksmethod: username log: error connect disconnect }: Bu kural, proxy üzerinden sadece 192.168.1.100 IP adresine (örneğin, özel ağınızdaki bir sunucu) ve sadece 22 (SSH), 80 (HTTP) ve 443 (HTTPS) portlarına bağlantıya izin verir. from: 0.0.0.0/0 burada proxy’ye bağlanan herhangi bir istemciyi ifade eder (zaten client pass ile filtrelenmişlerdir). socksmethod: username ise bu bağlantı için kullanıcı adı/parola doğrulaması yapılmasını zorunlu kılar. Bu kural, özel bağlantılarınızı sıkı bir şekilde kontrol etmek için kritik öneme sahiptir.
* socks pass { from: 0.0.0.0/0 to: 192.168.1.0/24 port = 1024-65535 socksmethod: username log: error connect disconnect }: Bu kural, proxy üzerinden 192.168.1.0/24 alt ağındaki tüm IP adreslerine (özel ağınızdaki diğer sunucular) ve 1024-65535 arasındaki tüm portlara bağlantıya izin verir. Bu, özel ağınızdaki genel erişim için kullanılabilir. Yine socksmethod: username ile kimlik doğrulaması zorunludur.
* socks block { from: 0.0.0.0/0 to: 0.0.0.0/0 log: error connect disconnect }: Bu kural, yukarıdaki socks pass kurallarıyla eşleşmeyen tüm diğer bağlantı isteklerini engeller. Bu, proxy üzerinden internete veya izin verilmeyen diğer ağlara erişimi tamamen keser ve proxy’yi sadece özel ağınızdaki kaynaklara erişim için bir geçit haline getirir.

Yukarıdaki yapılandırma, Dante proxy’nizin sadece belirli bir iç ağdan gelen istemcilere belirli kullanıcı adları ve parolalarla özel ağınızdaki belirli IP adresleri ve portlara erişim sağlamasına olanak tanır. Bu, özel bağlantılar için oldukça güvenli bir yaklaşımdır.

Değişiklikleri kaydetmek için Ctrl+O, Enter ve Ctrl+X tuşlarına basın.

Dante Kullanıcılarının Oluşturulması

socksmethod: username kullandığımız için, Dante proxy’sine bağlanacak kullanıcıları sistemde oluşturmamız gerekmektedir. Bu kullanıcılar normal sistem kullanıcısı gibi davranacak, ancak bir kabuk erişimine sahip olmayacaklardır.

Örnek olarak danteuser1 adında bir kullanıcı oluşturalım:

sudo adduser --no-create-home --shell /usr/sbin/nologin danteuser1

* --no-create-home: Bu kullanıcı için bir ana dizin oluşturulmamasını sağlar.
* --shell /usr/sbin/nologin: Bu, kullanıcının sisteme SSH veya başka bir yolla giriş yapmasını engeller. Sadece Dante proxy kimlik doğrulaması için kullanılabilir.

Komutu çalıştırdıktan sonra, kullanıcı için bir parola belirlemeniz istenecektir. Güçlü bir parola seçtiğinizden emin olun. Diğer bilgileri boş bırakabilirsiniz.

Birden fazla kullanıcıya ihtiyacınız varsa, bu adımı her kullanıcı için tekrarlayın.

Güvenlik Duvarı Yapılandırması (UFW)

Dante proxy’nizi yapılandırdıktan sonra, sunucunuzun güvenlik duvarını (UFW) da doğru şekilde yapılandırmanız gerekmektedir. Aksi takdirde, proxy servisi çalışsa bile dışarıdan erişilemez olacaktır.

UFW’nin Etkinleştirilmesi

Eğer UFW henüz etkin değilse, etkinleştirin:

sudo ufw enable

Bu komut, güvenlik duvarını etkinleştirir ve varsayılan olarak tüm gelen bağlantıları engeller. Bu yüzden, izin vermek istediğiniz portları açıkça belirtmeniz gerekecektir.

SSH Portuna İzin Verme

Sunucunuza SSH ile erişmeye devam edebilmek için SSH portuna (varsayılan 22) izin vermeniz önemlidir:

sudo ufw allow ssh

veya

sudo ufw allow 22/tcp

Dante’nin Dinlediği Porta İzin Verme

Dante’nin dinlediği porta (yapılandırmamızda 1080/tcp) gelen bağlantılara izin vermelisiniz:

sudo ufw allow 1080/tcp

Durumu Kontrol Etme

Güvenlik duvarı kurallarınızın doğru bir şekilde uygulandığından emin olmak için UFW durumunu kontrol edebilirsiniz:

sudo ufw status verbose

Çıktıda, 22/tcp ve 1080/tcp portlarının ALLOW IN olarak listelendiğini görmelisiniz.

Dante Servisinin Yönetimi

Yapılandırma tamamlandıktan ve güvenlik duvarı ayarları yapıldıktan sonra, Dante servisini başlatma ve yönetme zamanı gelmiştir.

Yapılandırma Dosyasını Kontrol Etme

Dante servisini başlatmadan önce, yapılandırma dosyanızda herhangi bir sözdizimi hatası olup olmadığını kontrol etmek iyi bir fikirdir. Bu, servisin başlatılamaması gibi sorunları önler.

sudo /usr/sbin/sockd -V 2

veya daha detaylı hata kontrolü için:

sudo /usr/sbin/sockd -f /etc/dante.conf -check

Eğer herhangi bir hata yoksa, komut sessizce tamamlanacak veya “configuration file OK” gibi bir mesaj gösterecektir. Hata varsa, hatanın nerede olduğunu belirten bir mesaj alırsınız.

Servisi Başlatma

Dante servisini başlatmak için systemctl kullanın:

sudo systemctl start dante-server

Servisin Durumunu Kontrol Etme

Servisin başarılı bir şekilde çalışıp çalışmadığını kontrol etmek için:

sudo systemctl status dante-server

Çıktıda Active: active (running) ifadesini görmelisiniz. Herhangi bir hata durumunda, Journal veya Logs bölümünde daha fazla bilgi bulabilirsiniz. Ayrıca /var/log/sockd.log dosyasını da kontrol edin.

Servisi Yeniden Başlatma

Yapılandırma dosyasında bir değişiklik yaptığınızda, değişikliklerin etkili olması için servisi yeniden başlatmanız gerekir:

sudo systemctl restart dante-server

Sistemin Açılışında Otomatik Başlamasını Sağlama

Dante proxy’nizin sunucu yeniden başlatıldığında otomatik olarak başlamasını sağlamak için:

sudo systemctl enable dante-server

Dante Proxy’nin Test Edilmesi

Dante proxy’nizi kurup yapılandırdıktan sonra, doğru çalışıp çalışmadığını test etmek çok önemlidir. Bu, hem komut satırından hem de bir web tarayıcısı aracılığıyla yapılabilir.

Komut Satırından Test (curl ile)

curl aracı, SOCKS5 proxy üzerinden bağlantı kurmak için kullanılabilir. Bu, proxy’nin temel işlevselliğini test etmenin hızlı bir yoludur.

Öncelikle, proxy kullanmadan sunucunuzun dış IP adresini kontrol edin:

curl ifconfig.me

Bu komut, sunucunuzun genel IP adresini gösterecektir.

Şimdi, Dante proxy’nizi kullanarak aynı işlemi yapın. danteuser1 yerine oluşturduğunuz kullanıcı adını, password yerine belirlediğiniz parolayı ve PROXY_IP yerine Dante sunucunuzun IP adresini yazın:

curl -x socks5://danteuser1:password@PROXY_IP:1080 ifconfig.me

Bu komut, proxy üzerinden ifconfig.me adresine bağlanmaya çalışacak ve proxy’nin dış IP adresini (yani Dante sunucunuzun IP adresini) döndürecektir. Eğer proxy üzerinden özel ağınızdaki bir kaynağa erişimi test ediyorsanız, ifconfig.me yerine özel ağınızdaki bir sunucunun IP adresini veya alan adını kullanabilirsiniz (örneğin, curl -x socks5://danteuser1:password@PROXY_IP:1080 http://192.168.1.100).

Eğer proxy doğru çalışıyorsa ve kurallarınız buna izin veriyorsa, hedef sunucudan beklenen yanıtı almalısınız.

Web Tarayıcısında Test

Bir web tarayıcısı kullanarak da proxy’nizi test edebilirsiniz. Firefox veya Chrome gibi tarayıcılar SOCKS proxy ayarlarını destekler.

Firefox için:
1. Ayarlar’a gidin.
2. “Ağ Ayarları” veya “Proxy Ayarları”nı arayın.
3. “Ayarları Manuel Proxy Yapılandırması”nı seçin.
4. “SOCKS Host” alanına Dante sunucunuzun IP adresini girin.
5. “Port” alanına 1080 girin.
6. “SOCKS v5” seçeneğini işaretleyin.
7. “Uzak DNS’i SOCKS v5 üzerinden yap” seçeneğini işaretleyin (güvenlik ve gizlilik için önerilir).
8. Ayarları kaydedin.

Tarayıcınızda yeni bir sekme açın ve http://ipinfo.io/ip veya http://whatismyip.com gibi bir siteye gidin. Eğer proxy doğru çalışıyorsa, bu siteler Dante sunucunuzun IP adresini göstermelidir. Ayrıca, özel ağınızdaki bir web sunucusuna (yapılandırdığınız kurallar izin veriyorsa) erişmeyi deneyerek özel bağlantılarınızı test edebilirsiniz. Tarayıcı sizden Dante kullanıcınızın adını ve parolasını isteyecektir.

Özel Bağlantılar İçin İleri Düzey Yapılandırma ve Güvenlik İpuçları

Dante Proxy’nin temel kurulumu ve yapılandırması tamamlanmış olsa da, özel bağlantılar için daha yüksek güvenlik ve esneklik sağlamak amacıyla bazı ileri düzey ayarlamalar ve ipuçları mevcuttur.

IP Tabanlı Erişim Kontrolü

Yukarıdaki yapılandırmada client pass kuralıyla zaten bir IP tabanlı erişim kontrolü uyguladık. Ancak, bu kuralı daha da daraltabilir veya genişletebilirsiniz. Örneğin, sadece belirli bir VPN ağından veya belirli bir ofis IP’sinden gelen bağlantılara izin vermek isteyebilirsiniz.

client pass {
    from: 10.0.0.10/32 to: 0.0.0.0/0  # Sadece bu tek IP adresinden gelen bağlantılara izin ver
    log: error connect disconnect
}

Hedef IP ve Port Kısıtlamaları

socks pass kuralları, proxy üzerinden nereye erişilebileceğini kontrol etmenin en güçlü yoludur. Özel ağlarda, sadece belirli sunuculara (IP adresleri) ve belirli hizmet portlarına (22, 80, 443, 3306 vb.) erişime izin vermek, ağ segmentasyonunu ve güvenliği artırır.

* Belirli bir sunucuya belirli portlar:

socks pass {
        from: 0.0.0.0/0 to: 192.168.1.100/32 port = 22,80,443
        socksmethod: username
        log: error connect disconnect
    }

* Belirli bir alt ağa tüm portlar (veya belirli aralıklar):

socks pass {
        from: 0.0.0.0/0 to: 192.168.1.0/24 port = 1024-65535 # Sadece yüksek portlara izin ver
        socksmethod: username
        log: error connect disconnect
    }

* Tüm özel IP adres aralıklarına erişimi engelleme: Eğer proxy’nin özel ağınız dışındaki diğer özel IP aralıklarına (10.0.0.0/8, 172.16.0.0/12) erişmesini istemiyorsanız, socks block kuralları ekleyebilirsiniz. Ancak, genellikle socks pass ile beyaz liste oluşturmak daha güvenli bir yaklaşımdır.

Günlükleme (Logging)

Dante’nin günlükleme yeteneklerini tam olarak kullanmak, güvenlik denetimi ve sorun giderme için hayati öneme sahiptir.
* logoutput: /var/log/sockd.log: Günlüklerin merkezi bir yerde toplanmasını sağlar. Bu dosyayı düzenli olarak kontrol etmeli ve log toplama sistemlerine entegre etmelisiniz (örneğin, ELK Stack, Splunk).
* log: error connect disconnect: Her kuralın sonuna bu parametreyi eklemek, bağlantı hatalarını, başarılı bağlantıları ve bağlantı kesilmelerini günlüğe kaydetmeyi sağlar. Bu, kimin ne zaman, nereden ve nereye bağlandığını izlemenize olanak tanır.

Ayrıcalıksız Kullanıcılar

Dante’nin nobody veya özel olarak oluşturulmuş dante gibi ayrıcalıksız bir kullanıcı altında çalışmasını sağlamak, güvenlik açıklarının etkisini azaltır. Eğer Dante servisi tehlikeye atılırsa, saldırganın elde edeceği ayrıcalıklar sınırlı olacaktır.

user.privileged: root
user.unprivileged: nobody # veya dante

Eğer dante adında bir kullanıcı kullanmak isterseniz:

sudo useradd -r -s /usr/sbin/nologin dante

Ardından yapılandırma dosyasında user.unprivileged: dante olarak değiştirin.

TLS/SSL Tünelleme ve SSH Tüneli Üzerinden Dante

Dante’nin kendisi SOCKS5 seviyesinde şifreleme sağlamaz. Veriler proxy üzerinden şifresiz olarak geçer (eğer hedef hizmet HTTPS gibi şifreli değilse). Özel bağlantılarınızın uçtan uca şifreli olduğundan emin olmak için iki ana yaklaşım vardır:
1. Hedef hizmetlerin HTTPS/SSH kullanması: Eğer özel ağınızdaki sunuculara HTTPS (web sunucuları), SSH (uzak erişim), LDAPS (dizin hizmetleri) gibi zaten şifreli protokollerle bağlanıyorsanız, Dante üzerinden yapılan bağlantılar da şifreli olacaktır.
2. SSH Tüneli Üzerinden Dante’ye Bağlanma: En yüksek güvenlik için, Dante proxy sunucusuna bir SSH tüneli üzerinden bağlanabilirsiniz. Bu senaryoda, istemciniz önce Dante sunucusuna SSH tüneli kurar ve bu tünel üzerinden Dante proxy’sine bağlanır. Bu, tüm SOCKS trafiğinin SSH tüneli içinde şifrelenmesini sağlar.

* İstemci tarafında SSH tüneli oluşturma:

ssh -N -D 8080 user@PROXY_IP

Bu komut, yerel port 8080’i uzak proxy sunucusuna dinamik olarak iletir. Ardından tarayıcı veya uygulamanızda SOCKS proxy ayarını localhost:8080 olarak yapılandırırsınız. Bu durumda, Dante’ye bağlanmak için SSH kullanıcınızın kimlik bilgileri kullanılır, Dante’nin kendi kullanıcı adı/parola doğrulaması ikinci bir katman olur.

Yüksek Erişilebilirlik (HA) ve Yük Dengeleme

Kritik özel bağlantılar için tek bir Dante proxy sunucusu bir hata noktası olabilir. Yüksek erişilebilirlik sağlamak için birden fazla Dante sunucusu kurabilir ve bunları bir yük dengeleyici (örneğin, HAProxy, Nginx Stream modülü veya DNS tabanlı yük dengeleme) arkasına yerleştirebilirsiniz. Bu, bir proxy sunucusunun arızalanması durumunda bile hizmetin devam etmesini sağlar.

Performans Ayarları

Dante yapılandırmasında bağlantı limitleri, zaman aşımları gibi performansla ilgili parametreler de ayarlanabilir. Özellikle yüksek trafik beklenen ortamlarda bu ayarlar önemlidir.

* timeout.connect: Bağlantı kurma zaman aşımı.
* timeout.io: Girdi/çıktı işlemleri için zaman aşımı.
* limit.nproc: Dante’nin oluşturabileceği maksimum işlem sayısı.
* limit.nofile: Dante’nin açabileceği maksimum dosya sayısı.

Bu ayarlar, sunucunuzun kaynaklarını verimli kullanmasına ve DDoS saldırılarına karşı daha dirençli olmasına yardımcı olabilir.

Sorun Giderme (Troubleshooting)

Kurulum ve yapılandırma sırasında veya sonrasında sorunlarla karşılaşmanız olasıdır. İşte yaygın sorunlar ve çözüm adımları:

1. Dante servisi başlamıyor:
* sudo systemctl status dante-server komutunu çalıştırın ve çıktıyı dikkatlice inceleyin. Hata mesajları genellikle sorunun kökenini gösterir.
* Yapılandırma dosyasını kontrol edin: sudo /usr/sbin/sockd -f /etc/dante.conf -check. Sözdizimi hataları genellikle servisin başlamasını engeller.
* /var/log/sockd.log dosyasını kontrol edin. Bu dosya, Dante’nin kendi günlüklerini içerir ve genellikle daha detaylı hata bilgisi sağlar.
* sudo journalctl -u dante-server komutu ile sistem günlüklerini kontrol edin.

2. Proxy’ye bağlanılamıyor (bağlantı reddedildi/zaman aşımı):
* Güvenlik duvarı (UFW): sudo ufw status verbose komutu ile Dante’nin dinlediği portun (varsayılan 1080/tcp) açık olduğundan emin olun. Eğer kapalıysa, sudo ufw allow 1080/tcp ile izin verin.
* Dante servisi çalışıyor mu? sudo systemctl status dante-server ile kontrol edin.
* Ağ arayüzü: internal ve external parametrelerinde doğru ağ arayüzünü (örn. eth0, ens3) kullandığınızdan emin olun. ip a komutu ile kontrol edebilirsiniz.
* Port çakışması: Başka bir servisin 1080 portunu kullanıp kullanmadığını kontrol edin: sudo netstat -tulpn | grep 1080.

3. Proxy’ye bağlanılıyor ama hedef sunucuya erişilemiyor:
* Dante yapılandırma kuralları (socks pass/socks block): Yapılandırma dosyasındaki socks pass kurallarınızın, erişmek istediğiniz hedef IP adresi ve port için izin verdiğinden emin olun. socks block kuralının yanlışlıkla erişimi engellemediğinden emin olun.
* Kimlik doğrulama: socksmethod: username kullanıyorsanız, istemcinin doğru kullanıcı adı ve parolayı kullandığından emin olun. /var/log/sockd.log dosyasında kimlik doğrulama hatalarını arayın.
* Hedef sunucuya ağ erişimi: Dante sunucusundan hedef özel IP adresine ping atarak veya telnet ile ilgili porta bağlanmaya çalışarak, Dante sunucusunun hedef sunucuya erişebildiğinden emin olun. ping 192.168.1.100 veya telnet 192.168.1.100 22.

4. Kullanıcı adı/parola hataları:
* Kullanıcı adının ve parolanın doğru olduğundan emin olun.
* Kullanıcının gerçekten sistemde var olduğunu doğrulayın: cat /etc/passwd | grep danteuser1.
* Parolayı sıfırlayın: sudo passwd danteuser1.

5. Günlüklerde hata mesajları:
* /var/log/sockd.log dosyasındaki hata mesajlarını Google’da arayın. Genellikle bu, sorunun nedenini ve olası çözümleri bulmanıza yardımcı olur.

Bu sorun giderme adımları, Dante proxy kurulumunuzla ilgili çoğu yaygın sorunu çözmenize yardımcı olacaktır.

Sonuç

Bu makalede, Ubuntu 22.04 işletim sistemi üzerinde Dante Proxy sunucusunun özel bağlantılar için nasıl kurulacağını ve yapılandırılacağını kapsamlı bir şekilde inceledik. Dante’nin SOCKS5 protokolü desteği, esnek kimlik doğrulama seçenekleri ve güçlü erişim kontrol kuralları sayesinde, ağ güvenliğinizi artırmak ve hassas kaynaklara kontrollü erişim sağlamak için güçlü bir araç olduğunu gördük.

Adım adım kurulum sürecinden, dante.conf dosyasının detaylı yapılandırmasına, güvenlik duvarı ayarlarından, kullanıcı oluşturmaya ve servisin yönetimine kadar her aşamayı ele aldık. Özellikle, client pass ve socks pass kurallarını kullanarak kimlerin proxy’ye bağlanabileceğini ve proxy üzerinden nereye erişebileceğini sıkı bir şekilde kontrol etmenin, özel bağlantılar için ne kadar kritik olduğunu vurguladık. Ayrıca, SSH tünellemesi, detaylı günlükleme ve ayrıcalıksız kullanıcı kullanımı gibi ileri düzey güvenlik ipuçlarıyla Dante kurulumunuzu daha da sağlam hale getirebileceğinizi gösterdik.

Dante Proxy, doğru yapılandırıldığında, ağınızdaki güvenlik ve gizliliği önemli ölçüde artırabilir. Ancak, herhangi bir güvenlik çözümünde olduğu gibi, yapılandırmanın sürekli olarak gözden geçirilmesi, güncel tutulması ve güvenlik duvarı kuralları gibi diğer güvenlik önlemleriyle birlikte kullanılması esastır. Bu rehber, kendi güvenli SOCKS5 proxy sunucunuzu oluşturmanız için sağlam bir temel sağlamaktadır. Artık özel ağlarınızdaki kaynaklara güvenli ve kontrollü bir şekilde erişmek için güçlü bir araca sahipsiniz.

Yorumlar
İçeriği beğendiniz mi? Bir tartışma başlatın veya görüşlerinizi paylaşın.
Yorum Yaz

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

E-posta Bülteni
Yazılım Topluluğuna Katılın
En son güncellemeleri, yaratıcı ipuçlarını ve özel kaynakları doğrudan e-posta kutunuza alın. Tasarım ve inovasyonun geleceğini birlikte keşfedelim.