Kendi proxy sunucunuzu kurmak için genellikle bir Linux sunucusunda dinleme portlarını, erişim denetimlerini ve kimlik doğrulama mekanizmalarını tanımlayarak HTTP/HTTPS önbelleklemesi için Squid, hafif HTTP/SOCKS için 3proxy veya güçlü SOCKS5 için Dante gibi özel bir proxy yazılımı kurar ve yapılandırırsınız.
Kendi barındırdığınız bir proxy sunucusu; ağ trafiği üzerinde denetim, gizlilik, coğrafi kısıtlamalı içeriğe erişim veya iç ağlar için güçlendirilmiş güvenlik sağlar. Yazılım seçimi; protokol desteği (HTTP, HTTPS, SOCKS), önbellekleme ihtiyaçları ve istenen karmaşıklık düzeyi gibi belirli gereksinimlere bağlıdır.
Genel ön koşullar
Herhangi bir proxy'yi yapılandırmadan önce sunucunuzun şu temel gereksinimleri karşıladığından emin olun:
* İşletim sistemi: Yaygın olarak bir Linux dağıtımı kullanılır (örneğin Ubuntu, Debian, CentOS).
* Ağ erişimi: Dışarıdan erişim gerekiyorsa sunucunun uygun ağ bağlantısına ve genel bir IP adresine sahip olması gerekir.
* Güvenlik duvarı yapılandırması: Sunucunuzun güvenlik duvarında (örneğin ufw, firewalld) gerekli portları açın (örneğin HTTP için 3128, SOCKS için 1080).
Squid proxy sunucusu
Squid; HTTP, HTTPS, FTP ve diğer protokolleri destekleyen, web istemcileri için güçlü ve tam donanımlı bir önbellekleme proxy'sidir. Sık erişilen içeriği önbelleğe almada, bant genişliği kullanımını azaltmada ve yanıt sürelerini iyileştirmede öne çıkar.
Kurulum (Debian/Ubuntu)
sudo apt update
sudo apt install squid
CentOS/RHEL üzerinde: sudo yum install squid veya sudo dnf install squid.
Temel yapılandırma
Ana yapılandırma dosyası genellikle /etc/squid/squid.conf konumundadır.
1. Dinleme portunu tanımlayın:
http_port yönergesini bulun veya ekleyin.
http_port 3128
2. Erişim denetim listeleri (ACL):
Squid, ağ segmentlerini, kullanıcıları veya diğer ölçütleri tanımlamak için ACL'leri, eylemleri uygulamak için ise http_access kurallarını kullanır.
```
# Yerel ağ ACL'si tanımlayın (sunucunuzun yerel alt ağı veya istemcinin IP'si ile değiştirin)
acl localnet src 192.168.1.0/24 # Örnek: bu alt ağdaki istemcilere izin ver
acl localhost src 127.0.0.1/32
# Tanımlı ACL'ler için erişime izin ver
http_access allow localhost
http_access allow localnet
# Diğer tüm erişimi reddet
http_access deny all
```
Herhangi bir IP adresinden erişime izin vermek için (daha az güvenlidir; dikkatli ve kimlik doğrulamayla kullanın):
```
acl all src 0.0.0.0/0
http_access allow all
```
- Squid'i yeniden başlatın:
bash sudo systemctl restart squid sudo systemctl enable squid sudo systemctl status squid
Kullanıcı kimlik doğrulaması (Basic Auth)
Daha yüksek güvenlik için temel kullanıcı adı/parola kimlik doğrulamasını devreye alın.
1. Apache araçlarını kurun (htpasswd için):
bash
sudo apt install apache2-utils
2. Parola dosyasını oluşturun:
bash
sudo htpasswd -c /etc/squid/passwd yourusername
# Parolayı girin ve doğrulayın. Daha fazla kullanıcı eklemek için -c parametresini kullanmayın:
# sudo htpasswd /etc/squid/passwd anotheruser
3. Squid'i kimlik doğrulama için yapılandırın:
Şu satırları squid.conf dosyasına ekleyin (örneğin en üste ya da AUTH bölümüne):
```
auth_param basic program /usr/lib/squid/basic_ncsa_auth /etc/squid/passwd
auth_param basic children 5 startup=5 idle=1
auth_param basic realm "Squid Proxy Authentication"
auth_param basic credentialsttl 2 hours
acl authenticated proxy_auth REQUIRED
http_access allow authenticated
http_access deny all
```
`http_access allow authenticated` satırının, kimliği doğrulanmış kullanıcıları engelleyecek her `http_access deny all` kuralından *önce* geldiğinden emin olun.
- Squid'i yeniden başlatın.
HTTPS araya girme (şeffaf proxy)
Squid, HTTPS trafiğini araya girip şifresini çözebilir; bu, istemci makinelerde özel bir SSL sertifikasının üretilmesini ve güvenilir kabul edilmesini gerektirir. Bu, temel olarak kurumsal ortamlarda içerik filtreleme ve izleme için kullanılan karmaşık bir yapılandırmadır ve güvenlik ile gizlilik açısından doğurduğu sonuçlar nedeniyle kişisel kullanım için genellikle önerilmez.
3proxy proxy sunucusu
3proxy; HTTP, HTTPS (CONNECT), SOCKS4/5, FTP ve diğer protokolleri destekleyen hafif ve çok yönlü bir proxy sunucusudur. Küçük kaynak tüketimi ve esnek yapılandırmasıyla bilinir.
Kurulum (kaynaktan derleme)
3proxy, en güncel sürüm ve azami denetim için genellikle kaynaktan derlenir.
1. Derleme araçlarını kurun:
bash
sudo apt update
sudo apt install build-essential git
2. İndirin ve derleyin:
bash
git clone https://github.com/z3APA3A/3proxy.git
cd 3proxy
make -f Makefile.Linux
sudo make -f Makefile.Linux install
İkili dosyalar genellikle /usr/local/bin/3proxy konumuna kurulur.
Temel yapılandırma
Bir yapılandırma dosyası oluşturun, örneğin /etc/3proxy/3proxy.cfg.
1. DNS çözümleyici:
nserver 8.8.8.8 # Google DNS
nserver 1.1.1.1 # Cloudflare DNS
2. Kimlik doğrulama (isteğe bağlı):
auth strong
users yourusername:CL:yourpassword # CL düz metin içindir, üretimde hash kullanın
3. Proxy'leri tanımlayın:
* HTTP proxy:
proxy -p3128
* SOCKS5 proxy:
socks -p1080
* HTTP ve SOCKS birlikte:
proxy -p3128
socks -p1080
4. Erişim denetimi:
users satırlarından sonra, proxy/socks satırlarından önce:
allow yourusername # Yalnızca belirtilen kullanıcıya izin ver
# Ya da kimliği doğrulanmış tüm kullanıcılara izin vermek için:
# allow *
# Ya da belirli bir IP'den izin vermek için:
# allow 192.168.1.0/24
Herkesin her yerden bağlanmasına izin veren temel ve daha az güvenli bir yapılandırma:
allow * *
proxy -p3128
socks -p1080
5. 3proxy'yi başlatın:
bash
/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Arka planda çalıştırmak için yapılandırma dosyasının içinde start 3proxy /etc/3proxy/3proxy.cfg kullanın veya düzgün servis yönetimi için systemd tercih edin.
Systemd servisi (isteğe bağlı)
/etc/systemd/system/3proxy.service dosyasını oluşturun:
[Unit]
Description=3proxy Proxy Server
After=network.target
[Service]
ExecStart=/usr/local/bin/3proxy /etc/3proxy/3proxy.cfg
Restart=always
User=nobody # Ayrıcalıksız bir kullanıcı olarak çalıştır
[Install]
WantedBy=multi-user.target
Ardından:
sudo systemctl daemon-reload
sudo systemctl enable 3proxy
sudo systemctl start 3proxy
sudo systemctl status 3proxy
Dante SOCKS sunucusu
Dante, temel olarak SOCKS4 ve SOCKS5 destekleyen güçlü bir SOCKS proxy sunucusudur. Kararlılığı ve performansıyla bilinir; bu da onu yüksek trafikli SOCKS tünellemesi için uygun kılar.
Kurulum (Debian/Ubuntu)
sudo apt update
sudo apt install dante-server
CentOS/RHEL üzerinde: sudo yum install dante-server veya sudo dnf install dante-server.
Temel yapılandırma
Ana yapılandırma dosyası /etc/danted.conf dosyasıdır.
1. Ağ arayüzlerini ve portları tanımlayın:
logoutput: stderr
internal: eth0 port = 1080 # eth0 yerine sunucunuzun iç arayüz adını yazın
external: eth0 # eth0 yerine sunucunuzun dış arayüz adını yazın
Yalnızca tek bir arayüzünüz varsa onu hem internal hem de external için kullanın.
2. Kullanıcı ayrıcalıkları:
user.privileged: root
user.notprivileged: nobody
3. Kimlik doğrulama yöntemleri:
Kullanıcı adı/parola kimlik doğrulaması için Dante, sistem kullanıcılarını kullanır.
socksmethod: username none
username istemci kimlik doğrulaması ister, none ise kimlik doğrulamasız erişime izin verir.
4. Erişim kuralları:
client kurallarını (proxy'ye kimlerin bağlanabileceği) ve socks kurallarını (proxy'nin hangi trafiği ileteceği) tanımlayın.
```
# İstemci kuralı: herkesin proxy'ye bağlanmasına izin ver
client pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username none # Yukarıda tanımlanan kimlik doğrulama yöntemlerini uygular
}
# SOCKS kuralı: proxy'nin trafiği her yere iletmesine izin ver
socks pass {
from: 0.0.0.0/0 to: 0.0.0.0/0
socksmethod: username none
}
```
İstemci erişimini belirli bir IP aralığıyla sınırlamak için:
```
client pass {
from: 192.168.1.0/24 to: 0.0.0.0/0
socksmethod: username none
}
```
- Kimlik doğrulama için sistem kullanıcısı oluşturun:
socksmethod: usernamekullanılıyorsa bir sistem kullanıcısı oluşturun (güvenlik için ev dizini ve kabuk erişimi olmadan).
bash sudo adduser --no-create-home --shell /usr/sbin/nologin proxyuser # proxyuser için güçlü bir parola belirleyin - Dante'yi yeniden başlatın:
bash sudo systemctl restart danted sudo systemctl enable danted sudo systemctl status danted
Karşılaştırma tablosu: Squid, 3proxy ve Dante
| Özellik | Squid | 3proxy | Dante SOCKS sunucusu |
|---|---|---|---|
| Tür | HTTP/HTTPS, önbellekleme, ileri/ters | HTTP, HTTPS (CONNECT), SOCKS4/5, FTP | SOCKS4/5 |
| Karmaşıklık | Orta-yüksek (kapsamlı özellikler nedeniyle) | Düşük-orta (derli toplu yapılandırma) | Orta (güçlü SOCKS uygulaması) |
| Başlıca kullanım | Web önbellekleme, içerik filtreleme, erişim denetimi | Hafif proxy, SOCKS ağ geçidi, çok yönlü | Yüksek performanslı SOCKS proxy, tünelleme |
| Performans | Yüksek (özellikle önbelleklemeyle) | Çok hafif, verimli | Yüksek, SOCKS trafiği için optimize |
| Kimlik doğrulama | Basic, Digest, NTLM, harici yardımcılar | Basic, NTLM, IP tabanlı, harici yardımcılar | Kullanıcı adı/parola (sistem kullanıcıları), IP tabanlı |
| İşletim sistemi desteği | Linux, FreeBSD, Windows (Cygwin ile) | Linux, Windows, BSD, macOS | Linux, FreeBSD, Solaris, macOS |
| Yapılandırma | Kapsamlı, ayrıntılı, metin tabanlı | Derli toplu, script benzeri, metin tabanlı | Metin tabanlı, net bölümler |
Genel güvenlik ve performans notları
- Güvenlik duvarı: Sunucunuzun güvenlik duvarını (örneğin
ufw,firewalld) proxy portlarına gelen bağlantılara yalnızca güvenilir IP'lerden veya IP aralıklarından izin verecek şekilde daima yapılandırın. - Kimlik doğrulama: Proxy kimlik doğrulaması için güçlü ve benzersiz parolalar kullanın. Herkese açık proxy'lerde kimlik doğrulamayı daima etkinleştirin.
- En az ayrıcalık: Bir ele geçirilme durumunda olası zararı sınırlamak için proxy servislerini adanmış ve ayrıcalıksız bir kullanıcıyla (örneğin
nobodyveya özel bir kullanıcı) çalıştırın. - İzleme: Olağan dışı etkinlik için proxy günlüklerini düzenli olarak inceleyin ve performans darboğazlarını ya da olası saldırıları tespit etmek için sunucu kaynaklarını (CPU, RAM, ağ G/Ç) izleyin.
- Güncellemeler: Güvenlik açıklarının kapatılması için proxy yazılımınızı ve işletim sisteminizi güncel tutun.
- Donanım: Sunucunun beklenen yük için yeterli CPU, RAM ve ağ bant genişliğine sahip olduğundan emin olun. Yoğun önbellekleme yapan Squid için SSD depolama avantaj sağlar.
