Tinyproxy, Linux sistemlerinde minimum kaynak tüketimi için tasarlanmış, hafif ve açık kaynaklı bir HTTP/HTTPS proxy sunucusudur. Gömülü cihazlar, kişisel kullanım veya kaynak verimliliğinin kritik olduğu küçük ölçekli ağ ortamları için uygun temel proxy işlevselliği sağlar.
Genel bakış ve kullanım senaryoları
Tinyproxy; gelişmiş önbellekleme, kapsamlı kimlik doğrulama yöntemleri veya daha büyük proxy çözümlerinde bulunan SOCKS proxy yetenekleri gibi geniş özellikler yerine küçük bir ayak izini ve sade yapılandırmayı önceliklendirir. Temel olarak bir HTTP/HTTPS (CONNECT yöntemi) proxy'si olarak çalışır.
Tinyproxy için tipik kullanım senaryoları:
- Kişisel proxy: Bireysel kullanıcılar için istemci IP adreslerini gizlemek veya temel coğrafi kısıtlamaları aşmak.
- Gömülü sistemler: CPU, RAM ve depolama kaynakları sınırlı cihazlarda proxy hizmeti sunmak.
- Geliştirme ortamları: Proxy kullanan uygulamaların yerel testi veya ağ trafiğinin incelenmesi.
- Küçük ağ geçidi: Sınırlı sayıda istemci için basit, önbelleksiz bir proxy.
- Proxy zincirleme: Çok proxy'li bir kurulumda aracı görevi görmek.
Kurulum
Tinyproxy, çoğu Linux dağıtımının standart paket depolarında bulunur.
Debian/Ubuntu
sudo apt update
sudo apt install tinyproxy
RHEL/CentOS/Fedora
sudo dnf install tinyproxy
# Veya eski CentOS/RHEL için:
# sudo yum install tinyproxy
Kurulumdan sonra Tinyproxy genellikle otomatik olarak başlar ve 8888 portunu dinler.
Yapılandırma
Tinyproxy'nin yapılandırması, genellikle /etc/tinyproxy/tinyproxy.conf konumunda bulunan tek bir dosya üzerinden yönetilir. Varsayılan dosyada tüm yönergeler yorum satırlarıyla açıklanmıştır, yani dosya kendi kendini belgeler.
Temel yönergeler
-
Port: Tinyproxy'nin dinlediği portu belirtir.
Port 8888
Bunu değiştirmek Tinyproxy servisinin yeniden başlatılmasını gerektirir. -
Listen: Tinyproxy'yi belirli bir IP adresine bağlar. Varsayılan olarak tüm arayüzleri dinler (0.0.0.0). Bir adres belirtmek erişimi kısıtlar.
Listen 192.168.1.10 -
Allow: Proxy'ye bağlanmasına izin verilen IP adreslerini veya alt ağları tanımlar. Birden fazlaAllowyönergesi kullanılabilir. HiçAllowyönergesi belirtilmezse Tinyproxy tüm sunuculardan gelen bağlantılara izin verir. Önce her şeyi açıkça reddedip ardından belirli aralıklara izin vermek yaygın bir güvenlik uygulamasıdır.
# Deny all by default (if no Allow directives are present, this is implicitly false) # Allow 127.0.0.1 # Allow 192.168.1.0/24 -
Timeout: Bağlantılar için saniye cinsinden boşta kalma zaman aşımını belirler.
Timeout 600 -
User/Group: Tinyproxy'nin başlangıçtan sonra yetkilerini düşüreceği kullanıcıyı ve grubu belirtir. Root olmayan bir kullanıcı ile çalıştırmak güvenlik açısından en iyi uygulamadır.
User tinyproxy Group tinyproxy -
LogLevel: Günlük ayrıntı düzeyini denetler. Seçenekler:Critical,Error,Warning,Notice,Info,Debug.
LogLevel Info -
LogFile: Günlük dosyasının yolunu belirtir.
LogFile "/var/log/tinyproxy/tinyproxy.log" -
MaxClients: Tinyproxy'nin karşılayacağı eşzamanlı istemci bağlantısı sayısının üst sınırını belirler. Bu sınırın aşılması bağlantının reddedilmesine yol açar.
MaxClients 100 -
DisableViaHeader: Etkinleştirildiğinde Tinyproxy giden isteklereViabaşlığını eklemez. Bu, proxy'nin varlığının açığa çıkmasını engelleyerek gizliliği artırabilir.
DisableViaHeader Yes -
ConnectPort: Tinyproxy'ninCONNECTisteklerinde (HTTPS tünelleme için kullanılır) hangi portlara izin vereceğini belirtir. Birden fazlaConnectPortyönergesi kullanılabilir.
ConnectPort 443 ConnectPort 563
Gelişmiş yapılandırma yönergeleri
-
Upstream: Tinyproxy'yi başka bir proxy sunucusuna zincirler. Bu yönerge, belirli alan adları veya tüm trafik için bir üst (upstream) proxy tanımlar.
```
# Use upstream_proxy.example.com:8080 for all requests
Upstream http upstream_proxy.example.com:8080Use a different upstream for specific domains
Upstream http 10.0.0.1:3128 "example.com"
Upstream http 10.0.0.1:3128 ".example.org"
``httpanahtar sözcüğü bir HTTP proxy'sini belirtir.Upstream` yönergeleri sırayla işlenir; ilk eşleşme geçerli olur. -
NoCache: Tinyproxy'nin, istemci tarafında önbelleklemeye yol açabilecek belirli HTTP başlıklarını göndermesini engeller. Bu, Tinyproxy'nin kendisinde bir önbellekleme mekanizması olduğu anlamına gelmez.
NoCache -
Filter/FilterURLs/FilterBypass: Düzenli ifadelere dayalı temel içerik filtreleme sağlar.Filter "/etc/tinyproxy/filter.txt": Engellenecek URL'lere ait düzenli ifadeleri içeren dosyayı belirtir.FilterURLs Yes: URL filtrelemeyi etkinleştirir.FilterBypass "192.168.1.0/24": Belirtilen istemcilerin filtrelemeyi atlamasına izin verir.
filter.txtdosyası her satırda bir düzenli ifade içerir. Örneğin, Facebook'u engellemek için:
.*facebook\.com.*
Bu ilkel bir filtreleme mekanizmasıdır ve özel içerik filtreleme çözümlerinin yerini tutmaz.
Servis yönetimi
tinyproxy.conf dosyasını değiştirdikten sonra, değişikliklerin geçerli olması için Tinyproxy servisi yeniden başlatılmalıdır.
Systemd (modern Linux dağıtımları)
sudo systemctl restart tinyproxy
sudo systemctl enable tinyproxy # Açılışta başlamasını sağlar
sudo systemctl status tinyproxy
SysVinit (eski Linux dağıtımları)
sudo /etc/init.d/tinyproxy restart
sudo /etc/init.d/tinyproxy status
Proxy'yi test etme
Yapılandırma ve servis yeniden başlatıldıktan sonra proxy test edilebilir.
curl kullanımı
curl -x http://localhost:8888 http://ipinfo.io/ip
Testi başka bir makineden yapıyorsanız localhost:8888 yerine Tinyproxy sunucusunun IP adresini ve portunu yazın. Çıktı, istemcinin değil Tinyproxy sunucusunun genel IP adresini göstermelidir.
Tarayıcı yapılandırması
Tarayıcınızı (örneğin Firefox, Chrome) Tinyproxy sunucusunun IP adresi ve portundaki HTTP proxy'yi kullanacak şekilde ayarlayın. Bağlantıyı doğrulamak için bir web sitesine girin.
Güvenlik değerlendirmeleri
- Erişim denetimi: Proxy'ye erişimi her zaman
Allowyönergesiyle kısıtlayın. Varsayılan olarak, hiçAllowyönergesi yoksa Tinyproxy tüm sunuculardan bağlantı kabul edebilir. - Güvenlik duvarı: Sisteminizin güvenlik duvarını (örneğin
ufw,firewalld) Tinyproxy portuna yalnızca güvenilir IP aralıklarından gelen bağlantılara izin verecek şekilde yapılandırın.
bash # ufw ile örnek sudo ufw allow from 192.168.1.0/24 to any port 8888 sudo ufw enable - Root olmayan kullanıcı: Olası güvenlik risklerini azaltmak için Tinyproxy'nin root olmayan bir kullanıcıyla çalıştığından emin olun (
UserveGroupyönergeleri). - Günlükleme: Tinyproxy günlüklerini olağandışı etkinliklere karşı izleyin.
DisableViaHeader: Gizliliği artırmak için bunu etkinleştirmeyi düşünün; ancak anonimlik sağlamaz.
Squid ile karşılaştırma
Tinyproxy ve Squid, Linux için HTTP proxy sunucularıdır; ancak farklı kullanım senaryolarını hedefler ve farklı özellik setleri sunar.
| Özellik | Tinyproxy | Squid |
|---|---|---|
| Temel amaç | Minimum kaynak kullanımı, sadelik | Yüksek performans, geniş özellik seti, önbellekleme |
| Kaynak kullanımı | Çok düşük CPU/RAM ayak izi | Orta-yüksek CPU/RAM, özellikle büyük önbellek ve yoğun trafikte |
| Önbellekleme | Yerleşik önbellek yok | HTTP nesneleri için geniş ve yapılandırılabilir önbellekleme |
| Kimlik doğrulama | Yerleşik olarak yok | Basic, Digest, NTLM, Kerberos, harici yardımcılar |
| Erişim denetimi | IP tabanlı (Allow yönergesi) |
IP, alan adı, URL, kullanıcı, saat, yöntem vb. bazında çok ayrıntılı ACL'ler |
| Protokoller | HTTP, HTTPS (CONNECT) | HTTP, HTTPS (CONNECT), FTP, Gopher, SOCKS (upstream için istemci tarafı) |
| Şeffaflık | Şeffaf proxy desteği yok | Tam şeffaf proxy desteği |
| Karmaşıklık | Basit yapılandırma, az sayıda yönerge | Karmaşık yapılandırma, çok sayıda yönerge, güçlü betikleme yetenekleri |
| Tipik kullanım | Gömülü sistemler, kişisel proxy, küçük LAN | Kurumsal ağlar, ISP'ler, büyük kuruluşlar, içerik filtreleme, güvenlik |
Sorun giderme
- Günlükleri kontrol edin:
LogFileyönergesi Tinyproxy'nin günlüklerini nereye yazdığını belirtir. Sorun giderirken daha ayrıntılı çıktı içinLogLeveldeğeriniDebugyapın.
bash sudo tail -f /var/log/tinyproxy/tinyproxy.log - Servis durumu: Tinyproxy'nin çalıştığını
systemctl status tinyproxyveya/etc/init.d/tinyproxy statusile doğrulayın. - Güvenlik duvarı: Güvenlik duvarınızın Tinyproxy portuna gelen bağlantıları engellemediğini doğrulayın. Gerekirse test için güvenlik duvarını geçici olarak devre dışı bırakın.
- Yapılandırma sözdizimi:
tinyproxy.confdosyasını sözdizimi hatalarına karşı gözden geçirin. Yapılandırma bozuksa Tinyproxy çoğu zaman başlamaz veya günlüklerine hata yazar. - Ağ bağlantısı: Tinyproxy sunucusunun hedeflediği adreslere ağ erişimi olduğundan emin olun.
