Linux'ta Dante kullanarak SOCKS5 proxy sunucusu kurmak; dante-server paketini yüklemeyi, ağ arayüzlerini, kimlik doğrulama yöntemlerini ve erişim kurallarını tanımlamak için /etc/danted.conf dosyasını yapılandırmayı ve ardından danted servisini başlatmayı kapsar. Dante bir SOCKS sunucusu olarak çalışır; ağ trafiğini istemciler ile hedef adresler arasında yönlendirir, ağ güvenliğini artırır ve kısıtlı kaynaklara erişimi mümkün kılar.
Ön koşullar
Devam etmeden önce şunlardan emin olun:
- root veya sudo yetkisine sahip bir Linux sunucusu (örneğin Debian, Ubuntu, CentOS, RHEL, Fedora).
- Linux komut satırı ve temel ağ kavramları hakkında bilgi.
- Proxy'nin dinleyeceği bir ağ arayüzü (internal) ve giden bağlantılar için bir arayüz (external). Bunlar aynı arayüz olabilir.
Kurulum
Linux dağıtımınıza uygun Dante sunucu paketini yükleyin.
Debian/Ubuntu
sudo apt update
sudo apt install dante-server
RHEL/CentOS/Fedora
sudo dnf install dante-server # Fedora/RHEL 8+ için
# Ya da eski CentOS/RHEL 7 için:
sudo yum install dante-server
Yapılandırma
Dante'nin ana yapılandırma dosyası /etc/danted.conf dosyasıdır. Varsayılan dosya örnek yapılandırmalar içerebilir; genellikle en iyisi orijinalin yedeğini alıp minimal ve temiz bir yapılandırmayla başlamaktır.
sudo mv /etc/danted.conf /etc/danted.conf.bak
sudo nano /etc/danted.conf
Temel yapılandırma yapısı
Minimal bir danted.conf dosyası dinleme arayüzünü (internal), giden arayüzü (external) ve temel erişim kurallarını tanımlar.
logoutput: /var/log/danted.log
internal: 0.0.0.0 port=1080
external: eth0 # eth0 yerine sunucunuzun dış ağ arayüzünü yazın
socksmethod: none
user.privileged: root
user.notprivileged: nobody
client pass {
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: 0.0.0.0/0
log: error connect disconnect
}
Direktiflerin açıklaması:
logoutput: log dosyasının yolunu belirtir.internal: Dante'nin gelen istemci bağlantıları için dinlediği ağ arayüzünü ve portu tanımlar.0.0.0.0mevcut tüm ağ arayüzlerine bağlanır.port=1080standart SOCKS portudur.- Belirli bir IP adresi de belirtebilirsiniz (örneğin
internal: 192.168.1.10 port=1080).
external: Dante'nin hedeflere giden bağlantılar için kullandığı ağ arayüzünü tanımlar.eth0yerine sunucunuzun gerçek dışa dönük veya giden arayüzünü yazın (örneğinens3,enp0s3).socksmethod: SOCKS istemcilerinin kullanabileceği kimlik doğrulama yöntemlerini belirtir.none, kimlik doğrulama yok demektir.user.privileged: Dante'nin ayrıcalıklı işlemleri yaparken kullandığı kullanıcı (örneğin düşük portlara bağlanırken).user.notprivileged: Dante'nin başlatmadan sonra ayrıcalıksız işlemler için geçtiği kullanıcı.client passkuralları: hangi istemcilerin Dante sunucusuna bağlanabileceğini denetler.from: 0.0.0.0/0her IP adresinden bağlantıya izin verir. Güvenlik için bunu kısıtlayın.to: 0.0.0.0/0istemci bağlantılarının hedefini belirtir (bu bağlamda her zaman proxy'nin kendisi).
socks passkuralları: SOCKS istemcilerinin proxy üzerinden hangi hedeflere ulaşabileceğini denetler.from: 0.0.0.0/0, kimlik doğrulamayı başarıyla geçen veya istemci kurallarından geçen istemcileri ifade eder.to: 0.0.0.0/0her hedefe bağlantıya izin verir. Güvenlik için bunu kısıtlayın.log: error connect disconnectbağlantı olaylarının loglanmasını etkinleştirir.
Kimlik doğrulama yöntemleri
Dante çeşitli kimlik doğrulama yöntemlerini destekler. En yaygın olanları none (kimlik doğrulama yok) ve username (kullanıcı adı/parola) yöntemleridir.
1. Kimlik doğrulamasız (anonim)
Bu yöntem, tüm istemcilerin bilindiği ve proxy'yi açık kimlik bilgisi olmadan kullanmaya yetkili olduğu güvenilir özel ağlar için uygundur. İnternete açık proxy'ler için önerilmez.
# ... (temel yapılandırmanın geri kalanı)
socksmethod: none
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Belirli bir alt ağa kısıtla
log: error connect disconnect
}
socks pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Bu alt ağdaki istemciler her hedefe ulaşabilir
log: error connect disconnect
}
2. Kullanıcı adı/parola ile kimlik doğrulama
SOCKS5 proxy'ler için en yaygın ve önerilen yöntem budur; özellikle istemciler dışarıdaysa veya güvenilmiyorsa. Dante kimlik doğrulama için sistem kullanıcılarını kullanır.
Adımlar:
-
Proxy için bir sistem kullanıcısı oluşturun. Güvenlik açısından ana dizin oluşturmayın ve kabuk atamayın.
bash sudo useradd -r -s /bin/false proxyuser sudo passwd proxyuser # Güçlü bir parola girin ve doğrulayın
Gerekirse ek kullanıcılar için tekrarlayın. -
danted.confdosyasını düzenleyin:
```
logoutput: /var/log/danted.log
internal: 0.0.0.0 port=1080
external: eth0socksmethod: username # Kullanıcı adı/parola doğrulamasını etkinleştir
user.privileged: root
user.notprivileged: nobodyclient pass {
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: 0.0.0.0/0
socksmethod: username # SOCKS bağlantıları için kullanıcı adı/parola zorunlu
log: error connect disconnect
}
``socks passkuralındakisocksmethod: username` direktifi, proxy'yi yalnızca kimliği doğrulanmış kullanıcıların kullanabilmesini sağlar.
3. IP tabanlı kimlik doğrulama
Bu yöntem, belirli IP adreslerinin veya alt ağların proxy'yi kullanıcı adı/parola olmadan kullanmasına izin verir. username doğrulamasıyla birlikte kullanılabilir.
# ... (yapılandırmanın geri kalanı)
socksmethod: username # Kullanıcı adı/parolaya seçenek olarak izin ver
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Belirli alt ağa kimlik doğrulamasız izin ver
log: error connect disconnect
}
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 # Diğer tüm istemcilere izin ver, ancak kimlik doğrulama iste
socksmethod: username
log: error connect disconnect
}
socks pass {
from: 192.168.1.0/24 to: 0.0.0.0/0 # Bu alt ağdaki istemciler her hedefe ulaşabilir (doğrulama gerekmez)
log: error connect disconnect
}
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0 # Kimliği doğrulanmış istemciler her hedefe ulaşabilir
socksmethod: username
log: error connect disconnect
}
Bu kurulumda 192.168.1.0/24 alt ağındaki istemciler kimlik doğrulamaya ihtiyaç duymaz; diğer tüm istemciler ise kullanıcı adı ve parola vermek zorundadır.
Güvenlik duvarı yapılandırması
Dante'yi yapılandırdıktan sonra, gelen bağlantılara izin vermek için sisteminizin güvenlik duvarında SOCKS portunu (varsayılan 1080) açın.
Firewalld (CentOS/RHEL/Fedora)
sudo firewall-cmd --permanent --add-port=1080/tcp
sudo firewall-cmd --reload
UFW (Debian/Ubuntu)
sudo ufw allow 1080/tcp
sudo ufw enable # UFW zaten etkin değilse
Servis yönetimi
Yapılandırma ve güvenlik duvarı ayarlarından sonra Dante servisini başlatın ve etkinleştirin.
sudo systemctl start danted
sudo systemctl enable danted
sudo systemctl status danted
Servisin hatasız çalıştığından emin olmak için durumunu kontrol edin. Yapılandırma sorunları için /var/log/danted.log dosyasını inceleyin.
Proxy'yi test etme
SOCKS5 proxy'yi test etmek için bir istemci makine kullanın.
curl ile (kimlik doğrulamasız)
curl -x socks5://YOUR_SERVER_IP:1080 http://ifconfig.me/ip
Çıktı sunucunuzun genel IP adresi olmalıdır; bu, trafiğin proxy üzerinden geçtiğini gösterir.
curl ile (kullanıcı adı/parola doğrulamasıyla)
curl -x socks5://proxyuser:your_password@YOUR_SERVER_IP:1080 http://ifconfig.me/ip
proxyuser ve your_password yerine daha önce yapılandırdığınız kimlik bilgilerini yazın.
proxychains ile (Linux istemci aracı)
-
proxychainsyükleyin:
bash sudo apt install proxychains4 # Debian/Ubuntu sudo dnf install proxychains-ng # RHEL/CentOS/Fedora -
proxychains.confdosyasını yapılandırın:
/etc/proxychains.confveya~/.proxychains/proxychains.confdosyasını düzenleyin.
strict_chainsatırını yoruma alın,dynamic_chainsatırını yorumdan çıkarın.
Dosyanın sonuna proxy sunucunuzun bilgilerini ekleyin:```
... (diğer proxychains ayarları)
dynamic_chain
strict_chain
random_chain
round_robin_chain
dynamic_chain # Esneklik için dinamik zincir kullan
[ProxyList]
add proxy here ...
socks5 127.0.0.1 9050
socks5 YOUR_SERVER_IP 1080 proxyuser your_password # Kimlik doğrulamalı
Ya da kimlik doğrulamasız:
socks5 YOUR_SERVER_IP 1080
```
-
proxychainsile test edin:
bash proxychains curl http://ifconfig.me/ip
Çıktı, proxy sunucunuzun IP adresini göstermelidir.
Güvenlik için en iyi uygulamalar
- Erişimi kısıtlayın: proxy'nize hangi istemci IP adreslerinin bağlanabileceğini sınırlamak için
client passkurallarını kullanın. - Güçlü parolalar: kullanıcı adı/parola doğrulamasında tüm proxy kullanıcılarının güçlü ve benzersiz parolalara sahip olmasını sağlayın.
- En az yetki:
nobodykullanıcısına veya proxy kullanıcılarına gereksiz yetkiler vermeyin. - Düzenli güncelleme: güvenlik açıklarını kapatmak için Linux işletim sisteminizi ve Dante paketini güncel tutun.
- Loglama ve izleme: şüpheli etkinlik için Dante loglarını (
/var/log/danted.log) düzenli olarak inceleyin. Log izleme çözümleri kurun. - Güvenlik duvarı kuralları: güvenlik duvarınızı, SOCKS portuna (1080) yalnızca güvenilir IP aralıklarından bağlantı gelecek şekilde yapılandırın.
- Ayrı kullanıcı: proxy erişimi için mevcut kullanıcı hesapları yerine ayrılmış bir sistem kullanıcısı kullanın.
- Kullanılmayan yöntemleri kapatın: yalnızca kesinlikle gerekli olan
socksmethodseçeneklerini etkinleştirin.
