Proxy kimlik doğrulaması, bir proxy sunucusuna erişim verilmeden önce kullanıcının kimliğinin kullanıcı adı ve parola ile doğrulanmasıdır; böylece ağ kaynakları denetimli ve güvenli biçimde kullanılır.
Proxy kimlik doğrulaması, proxy sunucusuna erişimi kısıtlamaya, yetkisiz kullanımı engellemeye, bant genişliğini yönetmeye ve kullanımı belirli kullanıcılara veya uygulamalara atfetmeye yarar. Bu, bir kurum içinde ya da ticari proxy hizmetlerinde güvenliği korumak, kullanım politikalarını uygulamak ve etkinliği izlemek için kritik önemdedir.
Proxy kimlik doğrulaması nasıl çalışır
Bir istemci, kimlik doğrulamalı bir proxy üzerinden bir kaynağa bağlanmaya çalıştığında, proxy sunucusu istemciden kimlik bilgilerini ister. Genellikle bir tarayıcı veya uygulama olan istemci, ardından gelen istekte kullanıcı adını ve parolayı gönderir.
Olayların sırası genelde şöyledir:
1. İstemci proxy'ye bir istek gönderir (örneğin GET /resource HTTP/1.1).
2. Proxy, 407 Proxy Authentication Required durum koduyla ve desteklenen kimlik doğrulama şemalarını belirten bir Proxy-Authenticate başlığıyla yanıt verir (örneğin Basic realm="Proxy Realm").
3. İstemci bu talebi alır. Kimlik bilgileriyle yapılandırılmışsa, belirtilen şemaya göre kodlanmış kullanıcı adı ve parolayı içeren bir Proxy-Authorization başlığıyla birlikte özgün isteği yeniden gönderir.
4. Proxy kimlik bilgilerini doğrular. Geçerliyse istemcinin isteğini hedef kaynağa iletir ve yanıtı istemciye aktarır. Geçersizse yeniden 407 durumu döndürür.
Proxy kimlik doğrulaması türleri
HTTP Basic Authentication
HTTP Basic Authentication, proxy kimlik doğrulamasının en yaygın ve en basit biçimidir. İstemci, kimlik bilgilerini (kullanıcı adı ve parola) Base64 ile kodlayarak Proxy-Authorization başlığında gönderir.
Örnek Proxy-Authorization başlığı:
Proxy-Authorization: Basic dXNlcm5hbWU6cGFzc3dvcmQ= (burada dXNlcm5hbWU6cGFzc3dvcmQ=, username:password ifadesinin Base64 karşılığıdır).
Özellikleri:
* Basitlik: hem istemci hem sunucu tarafında uygulaması kolaydır.
* Güvenlik: kimlik bilgileri şifrelenmez, yalnızca Base64 ile kodlanır. Yani ele geçirilirse kolayca çözülebilir. Bu nedenle Basic Authentication tercihen şifreli bir tünel (HTTPS) üzerinden ya da istemci ile proxy arasındaki ağ yolunun güvenilir olduğu durumlarda kullanılmalıdır.
* Durumsuz: her istek kimlik bilgilerini taşır.
HTTP Digest Authentication
HTTP Digest Authentication, Basic Authentication'a göre daha güvenli bir alternatiftir. Parolanın doğrudan ağ üzerinden iletilmesini önleyen bir talep-yanıt (challenge-response) mekanizması kullanır. Bunun yerine kullanıcı adının, parolanın, bir nonce değerinin (sunucunun ürettiği benzersiz bir dize) ve diğer istek ayrıntılarının özeti (hash) gönderilir.
Özellikleri:
* Güvenlik: parolalar düz metin olarak ya da kolayca geri çevrilebilir bir kodlamayla gönderilmez. Yeniden oynatma (replay) saldırılarını bir ölçüde azaltır.
* Karmaşıklık: Basic Authentication'a göre uygulaması daha karmaşıktır.
* Daha az yaygın: daha güvenli olmasına rağmen, proxy hizmetleri ve istemci uygulamaları tarafından Basic Authentication kadar geniş desteklenmez.
SOCKS5 kimlik doğrulaması
SOCKS5, HTTP'den daha alt bir katmanda çalışan bir proxy protokolüdür. Her tür ağ trafiğini (TCP ve UDP) taşıyabilir. SOCKS5 proxy'ler kullanıcı adı/parola ile kimlik doğrulama yöntemini destekler.
Özellikleri:
* Protokolden bağımsızlık: yalnızca HTTP değil, herhangi bir TCP/UDP trafiğini taşıyabilir.
* Kimlik doğrulama: kullanıcı adı/parola doğrulamasını destekler; kimlik bilgileri SOCKS el sıkışmasının (handshake) parçası olarak gönderilir.
* Güvenlik: SOCKS bağlantısının kendisi güvenli bir bağlantı üzerinden (örneğin SSH) tünellenmediği sürece kimlik bilgileri el sıkışma sırasında şifresiz gönderilir.
IP beyaz listesi (tamamlayıcı yöntem)
IP beyaz listesi kendi başına bir kimlik doğrulama yöntemi değil, bir erişim denetimi mekanizmasıdır. Proxy sunucusuna yalnızca önceden tanımlanmış güvenilir IP adresleri listesinden erişime izin verir. Her istekte kullanıcı adı/parola gerektirmese de, kimlik bilgisine dayalı doğrulamayla birlikte kullanılabilir ya da istemci IP adreslerinin sabit ve bilinen olduğu belirli senaryolarda alternatif olabilir.
Proxy kimlik doğrulamasını kurma
Proxy kimlik doğrulamasının kurulumu iki temel adımdan oluşur: kimlik bilgilerini proxy sağlayıcınızda yönetmek ve istemci uygulamalarınızı bu bilgileri kullanacak şekilde yapılandırmak.
Kimlik bilgilerini proxy sağlayıcınızda yönetme
Ticari bir proxy hizmetinde kimlik bilgisi yönetimi genellikle sağlayıcının web tabanlı kontrol panelinden veya API üzerinden yapılır.
- Kontrol paneline girin: proxy sağlayıcınızın paneline veya yönetim portalına giriş yapın.
- Kullanıcı/kimlik bilgisi bölümü: proxy kullanıcıları, kimlik bilgileri veya erişim yönetimine ayrılmış bölüme gidin.
- Kimlik bilgisi oluşturun/düzenleyin:
- Kullanıcı adı: benzersiz bir kullanıcı adı belirleyin.
- Parola: güçlü ve benzersiz bir parola belirleyin. Bazı sağlayıcılar parolayı otomatik üretebilir.
- Proxy ataması: hizmet modeline göre bu kimlik bilgilerini belirli proxy sunucularına, havuzlara veya bant genişliği kotalarına bağlayın.
Örnek (kimlik bilgisi oluşturmak için kavramsal API çağrısı):
Gelişmiş proxy hizmetlerinin çoğu, kimlik bilgilerinin programatik yönetimi için bir API sunar.
POST /api/v1/users
Content-Type: application/json
Authorization: Bearer YOUR_API_KEY
{
"username": "my_proxy_user",
"password": "StrongPassword123!",
"assigned_proxy_group": "datacenter_proxies_us"
}
Bu API çağrısı, belirtilen parolaya sahip my_proxy_user adlı yeni bir kullanıcı oluşturur ve onu belirli bir proxy grubuna atar.
İstemci uygulamalarını kimlik bilgilerini kullanacak şekilde yapılandırma
Kimlik bilgileri proxy hizmetinizde oluşturulduktan sonra, istemci uygulamalarınızı proxy üzerinden bağlanırken bu bilgileri iletecek şekilde yapılandırmalısınız.
Web tarayıcıları
Tarayıcılar genellikle sistem genelindeki proxy ayarlarını ya da özel eklentileri kullanır.
-
Sistem proxy ayarları:
- Windows:
Ayarlar > Ağ ve İnternet > Proxy > El ile proxy kurulumu. Proxy adresini ve bağlantı noktasını girin, ardından "Yerel adresler için proxy sunucusu kullanma" seçeneğini etkinleştirin. Tarayıcı, kimlik doğrulamalı bir proxy ile ilk karşılaştığında kimlik bilgilerini soracaktır. - macOS:
Sistem Ayarları > Ağ > Wi-Fi/Ethernet > Ayrıntılar... > Proxy'ler.Web Proxy (HTTP)veSecure Web Proxy (HTTPS)ayarlarını yapın. "Proxy sunucusu parola gerektiriyor" kutusunu işaretleyip kimlik bilgilerini girin ya da istem alması için işaretsiz bırakın. - Linux (GNOME/KDE):
Ayarlar > Ağ > Ağ Proxy'si. HTTP ve HTTPS proxy'yi yapılandırın. Kimlik bilgileri masaüstü ortamı tarafından sorulur.
- Windows:
-
Tarayıcı eklentileri (örneğin FoxyProxy, SwitchyOmega):
Bu eklentiler ayrıntılı denetim sağlar; farklı URL'ler veya kalıplar için farklı proxy'ler tanımlayabilirsiniz.- Eklentiyi kurun.
- Yeni bir proxy yapılandırması ekleyin.
- Proxy
HostvePortbilgisini girin. HTTPveyaSOCKStürünü seçin.- "Kimlik doğrulama gerekli" kutusunu işaretleyip
UsernamevePasswordbilgilerinizi girin. - Proxy'yi etkinleştirecek URL kalıplarını tanımlayın.
Komut satırı araçları
-
curl:
bash curl -x http://username:[email protected]:8080 http://target.com
Alternatif olarak ayrı seçenekler kullanın:
bash curl --proxy http://proxy.example.com:8080 --proxy-user username:password http://target.com -
wget:
bash wget -e use_proxy=yes -e http_proxy=http://username:[email protected]:8080 http://target.com
Programlama dilleri/kütüphaneler
-
Python (
requestskütüphanesi):
```python
import requestsproxy_host = "proxy.example.com"
proxy_port = 8080
proxy_user = "username"
proxy_pass = "password"proxies = {
"http": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}",
"https": f"http://{proxy_user}:{proxy_pass}@{proxy_host}:{proxy_port}"
}try:
response = requests.get("http://httpbin.org/ip", proxies=proxies)
print(response.json())
except requests.exceptions.RequestException as e:
print(f"Request failed: {e}")
``` -
Node.js (
https-proxy-agentileaxioskütüphanesi):
Önceaxiosvehttps-proxy-agentpaketlerini kurun:npm install axios https-proxy-agent
```javascript
const axios = require('axios');
const HttpsProxyAgent = require('https-proxy-agent');const proxyHost = "proxy.example.com";
const proxyPort = 8080;
const proxyUser = "username";
const proxyPass = "password";const proxyAgent = new HttpsProxyAgent(
http://${proxyUser}:${proxyPass}@${proxyHost}:${proxyPort});axios.get('http://httpbin.org/ip', {
proxy: false, // Önemli: axios'un dahili proxy yönetimini devre dışı bırakır
httpAgent: proxyAgent,
httpsAgent: proxyAgent
})
.then(response => {
console.log(response.data);
})
.catch(error => {
console.error("Request failed:", error.message);
});
```
İşletim sistemi ortam değişkenleri
Birçok uygulama ve komut satırı aracı, proxy ayarları için ortam değişkenlerini dikkate alır.
- Linux/macOS:
bash export HTTP_PROXY="http://username:[email protected]:8080" export HTTPS_PROXY="http://username:[email protected]:8080" export ALL_PROXY="socks5://username:[email protected]:1080" # SOCKS için # Bazı araçlarda proxy kimlik doğrulamasını ayrıca dışa aktarmanız gerekebilir: export PROXY_AUTH="username:password" - Windows (Komut İstemi):
cmd set HTTP_PROXY=http://username:[email protected]:8080 set HTTPS_PROXY=http://username:[email protected]:8080
Bu değişkenler geçerli kabuk oturumu ve onun alt süreçleri için geçerlidir.
Proxy kimlik doğrulamasında en iyi uygulamalar
- Güçlü ve benzersiz parolalar: proxy hesaplarında büyük ve küçük harf, rakam ve sembol içeren karmaşık parolalar kullanın. Başka hizmetlerdeki parolaları yeniden kullanmayın.
- Düzenli kimlik bilgisi rotasyonu: ele geçirilmiş kimlik bilgisi riskini azaltmak için proxy hesap parolalarını düzenli aralıklarla değiştirin.
- Hedef kaynaklarda HTTPS kullanın: Basic Authentication kullanılsa bile hedef siteye giden son bağlantının HTTPS olması veriyi şifreler ve proxy sonrasındaki hassas bilgileri korur.
- IP beyaz listesiyle birleştirin: güvenliği artırmak için kimlik bilgisi zorunluluğuna ek olarak proxy erişimini belirli istemci IP adresleriyle sınırlayın. Bu, katmanlı bir savunma oluşturur.
- Erişim günlüklerini izleyin: olağan dışı etkinlik, başarısız oturum açma denemeleri veya yetkisiz erişim kalıpları için proxy sunucusu erişim günlüklerini düzenli olarak inceleyin.
- En az yetki: proxy kullanıcılarına yalnızca gerekli erişim izinlerini verin. Hizmet farklı proxy grupları veya bant genişliği limitleri sunuyorsa bunları uygun şekilde yapılandırın.
Kimlik doğrulama yöntemlerinin karşılaştırması
| Özellik | HTTP Basic Authentication | HTTP Digest Authentication | SOCKS5 kimlik doğrulaması |
|---|---|---|---|
| Protokol katmanı | HTTP/HTTPS | HTTP/HTTPS | SOCKS (5. katman) |
| Gönderilen kimlik bilgisi | Base64 kodlu username:password |
Özetlenmiş talep-yanıt | El sıkışmada düz metin (genellikle) |
| Güvenlik | Düşük (kolay çözülür) | Orta (parola iletilmez) | Düşük (düz metin) |
| Kullanım | Yalnızca HTTP/HTTPS trafiği | Yalnızca HTTP/HTTPS trafiği | Her tür TCP/UDP trafiği (FTP, SSH, DNS) |
| Uygulama | Basit | Karmaşık | Orta |
| Tarayıcı desteği | Evrensel (istem gösterir) | Sınırlı | Eklentiler veya sistem ayarları üzerinden |
| Yaygınlık | Ticari proxy'lerde çok yaygın | Az yaygın | Genel amaçlı proxy kullanımında yaygın |
| Şifreleme | Uçtan uca güvenlik için HTTPS'e dayanır | Uçtan uca güvenlik için HTTPS'e dayanır | Harici tünele dayanır (örneğin SSH) |
Sık karşılaşılan kimlik doğrulama sorunlarını giderme
- Hatalı kimlik bilgileri: kullanıcı adını ve parolayı yeniden kontrol edin. Büyük/küçük harf duyarlılığına ve özel karakterlere dikkat edin.
- Proxy adresi/bağlantı noktası uyuşmazlığı: istemci uygulamanızda yapılandırılan proxy adresi ve bağlantı noktasının hizmetinizin verdiği bilgilerle eşleştiğini doğrulayın.
- Kimlik doğrulama şeması uyuşmazlığı: istemcinizin doğru kimlik doğrulama türü için yapılandırıldığından emin olun (örneğin proxy Basic bekliyorsa Basic). Çoğu istemci bunu HTTP proxy'lerde otomatik yapar.
- Ağ bağlantısı: istemci makinenizin proxy sunucusunun IP adresine ve bağlantı noktasına erişebildiğini doğrulayın. İstemci veya sunucu tarafındaki güvenlik duvarı kuralları bağlantıları engelliyor olabilir.
- Proxy sunucusunun durumu: proxy sunucusu geçici olarak kapalı olabilir veya sorun yaşıyor olabilir. Sağlayıcınızın durum sayfasına bakın.
- İstemci yazılımı yapılandırması: bazı uygulamaların veya kütüphanelerin proxy kimlik doğrulamasıyla ilgili özel gereksinimleri ya da hataları olabilir. Belgelerine bakın.
- IP beyaz listesi çakışması: proxy sunucusunda IP beyaz listesi etkinse, istemcinizin genel IP adresinin yetkili olduğundan emin olun. IP'niz değişirse beyaz listeyi güncelleyin.
