Tüm sistemler çalışıyor 6 offshore bölge No-KYC ödeme
Hands-on Saha kılavuzu

Orijin IP'nizi gizleyin: tutan bir offshore reverse proxy

Herkes aynı tavsiyeyi tekrarlıyor — önüne bir CDN koyun, gerçek sunucu ortadan kaybolsun. Kaybolmuyor. Orijin adresi pasif-DNS arşivlerinde, sertifika şeffaflığı günlüklerinde, kendi giden postanızın başlıklarında ve uygulamanızın dış dünyaya yaptığı her istekte hayatta kalmaya devam eder. Bu rehber gerçekten tutan versiyonu inşa ediyor: farklı bir bölgede $8.00/aydan başlayan bir edge düğümü, bir WireGuard tüneli, hiç herkese açık dinleyicisi olmayan bir orijin — ve ardından kendi kutularımızı bulmaya çalışmak için yürüttüğümüz aramalar.

2026-09-02 tarihinde güncellendi · 15 dk okuma · Filo operasyonları
Bu sayfada
  1. Orijini gizlemek size gerçekte ne kazandırır
  2. Bir orijin IP'sinin sızabileceği her yol
  3. Edge'in iki biçimi: bir CDN ya da sahip olduğunuz bir kutu
  4. Tünel, insanların yanlış yaptığı kısımdır
  5. Sertifikalar ve hostname'lerinizi yayınlayan günlük
  6. E-posta ve yanlış adres üzerinden yanıt veren diğer servisler
  7. Egress: orijininizin başlattığı bağlantılar
  8. Maliyeti nedir ve işe yaradığını nasıl kanıtlarsınız
  9. Adım adım
SP·01

Orijini gizlemek size gerçekte ne kazandırır

Üç şey, ve bunlar üzerinde titizlenmeye değer. Birincisi, sel, bunu kaldıramayacak makineye ulaşmayı bırakır: tek bir VPS'in sonlu bir yukarı bağlantısı vardır ve paketleri yiyen adres, veritabanınızı barındıran kutu değil de bu amaç için inşa edilmiş bir edge olduğunda, hacimsel bir saldırı başkasının mühendislik sorunu haline gelir. İkincisi, uygulama kendi savunmalarının etrafından erişilebilir olmaktan çıkar — hız sınırları, bot kuralları, bir WAF ve coğrafi engelleme, orijine doğrudan bağlanabilen herkes tarafından kolaylıkla atlatılabilir ve bunları devreye alan çoğu kişi bunun hâlâ mümkün olup olmadığını hiç kontrol etmez. Üçüncüsü, içeriğinizi sunan adres, verinizi barındıran adres olmaktan çıkar; bu da bir kötüye kullanım şikâyetinin, bir taramanın ya da hedefli bir yoklamanın ucuz ve değiştirilebilir bir yere düşmesini sağlayan ayrımdır.

Şimdi de dürüst yarısı. Bir orijini gizlemek anonimlik değildir — bir adresi gizler, bir kişiyi değil; ödeme izi, alan adı kaydı ve bunların arkasındaki hesap, kendi rehberi olan ayrı bir sorundur. Uygulamanızı yamamaz: kimsenin bulamadığı bir orijin, biri onu bulduğu an yine de istismar edilebilir durumdadır ve orijinler gerçekten bulunur. Sağlayıcınızdan hiçbir şeyi gizlemez; sağlayıcı, tanımı gereği hangi makinenin hangi adreste yanıt verdiğini zaten bilir. Bunu, önce düzgünce sertleştirilmiş bir kutunun üzerine oturan, bir saldırının maliyetini artıran tek bir katman olarak ele alın — ikisinin de yerine geçen bir şey olarak değil.

SP·02

Bir orijin IP'sinin sızabileceği her yol

Bu kadar çok gizlenmiş orijinin aslında gizli kalmamasının nedeni, insanların bir kanalı kapatıp gerisinin de kapandığını varsaymasıdır. Kapanmaz. İşte üzerinden geçtiğimiz liste, birinin gerçekten başını yaktığı sıklığa göre kabaca sıralanmış:

  • Geçmiş DNS kayıtları. Pasif-DNS toplayıcıları, siz bir proxy'nin arkasına geçmeden çok önce A kaydınızı kaydetmeye başlamıştır. Geçen yıl kullandığınız adres, kalıcı, aranabilir ve ücretsiz bir sorgudur.
  • Sertifika şeffaflığı. Herkes tarafından güvenilen her sertifika, kapsadığı her hostname ile birlikte, yalnızca eklemeye açık herkese açık günlüklere yayınlanır. origin.example.com için verilmiş bir sertifika bu adı dünyaya duyurur; A kaydı da gerisini halleder.
  • Hiç taşınmamış alt alan adları. mail, ftp, webmail, cpanel, dev, staging, vpn, monitor — apex CDN'in arkasına geçti, ama bunlar kutuyu göstermeye devam etti.
  • E-posta. Orijindeki bir MX kaydı adresi doğrudan ele verir; uygulamanızın gönderdiği bir postadaki Received: başlığı da aynısını yapar — ki bunu herkes bir parola sıfırlama formuyla tetikleyebilir.
  • Giden istekler. Webhook'lar, avatar çekmeleri, RSS beslemeleri, bağlantı önizlemeleri, güncelleme kontrolleri, OAuth callback'leri. Her biri orijinin adresini karşı ucu işleten kim varsa ona ifşa eder — ve bir URL önizleme özelliği, saldırganın o karşı ucu seçmesine izin verir.
  • Çıplak adres üzerinden yanıt vermek. Orijin, eşleşen bir Host başlığı olmayan bir isteğe hâlâ sitenizi sunuyorsa, internet çapındaki tarayıcılar onu çoktan indekslemiştir: favicon hash'i, sayfa başlığı, sertifika parmak izi ve HTTP başlık sırası — hepsi aranabilir.
  • Unuttuğunuz IPv6 kaydı. A kaydı proxy'ye taşındı; AAAA kaydı hâlâ eve işaret ediyor.
  • Uygulamanın kendi hakkında konuşması. Bir CMS yapılandırmasındaki mutlak URL'ler, dahili bir hostname'e yönlendirmeler, yığın izleri, Server başlıkları, source map'ler, kimlik doğrulaması olmayan bir durum uç noktası.

Bunların çoğunun ortak noktasına dikkat edin: hepsi kalıcıdır. Sertifika günlükleri yalnızca eklemeye açıktır ve pasif DNS bir arşivdir. Bir adres yayınlandıktan sonra geri çekemezsiniz — yalnızca kullanmayı bırakabilirsiniz, ki aşağıdaki işlem sırasının bu kadar önemli olmasının nedeni tam olarak budur.

SP·03

Edge'in iki biçimi: bir CDN ya da sahip olduğunuz bir kutu

Ticari bir CDN size, düzinelerce şehirde, çoğu zaman ücretsiz bir katmanda, hiçbir tekil sunucunun yetişemeyeceği bir anycast kapasitesi verir. Karşılığında ödediğiniz bedel, TLS'in kontrol etmediğiniz bir altyapı üzerinde sonlanmasıdır: operatör düz metninizi görür, hangi hesaba ait olduğunu bilir ve bu bilgiye göre hareket etmeye zorlanabilir ya da bir sabah içeriğinizin artık istenmediğine kendisi karar verebilir. Paylaşılan cephelere özgü daha ince bir sorun daha vardır — orijin güvenlik duvarınız CDN'in yayınladığı adres aralıklarına izin veriyorsa, o CDN'de hesabı olan başka herkes sizin izin listenizin içindedir ve kendi hostname'ini orijininize yöneltebilir. Bu, teorik değil gerçek bir atlatma yöntemidir ve kimlik doğrulamalı origin pull'un var olma nedeni de budur.

Kendi işlettiğiniz bir edge, tam tersi bir takastır. Özel anahtarı sizden başka kimse tutmaz, kutu bilerek seçtiğiniz bir yargı bölgesinde oturur ve en küçük plan için $8.00/aya mal olur — korunan şeyin yanında gerçekten yuvarlama hatası mertebesinde. Elde edemediğiniz şey anycast'tir: nginx yapılandırmanız ne kadar zarif olursa olsun, 200 Gbps'lik bir sel edge'in yukarı bağlantısını doyurur, dolayısıyla ağ seviyesindeki emilimin bir yerden gelmesi gerekir. Bizim durumumuzda bu, filodaki her makinenin önünde duran 1.5 Tbps yukarı akış temizleme kapasitesidir — kendi başına işlettiğiniz bir edge'i tek bir çöküş noktası olmaktan çıkarıp uygulanabilir kılan da budur. İki biçim aynı zamanda birleştirilebilir: erişim ve hacim için önde bir CDN, asla elden bırakmayacağınız kısım için arkada kendi düğümünüz. Hangi arızayı açıklamayı tercih edeceğinize göre seçin.

SP·04

Tünel, insanların yanlış yaptığı kısımdır

Yaygın kurulum, 0.0.0.0:443'te dinleyen ve proxy'nin adreslerini izin listesine alan bir güvenlik duvarına sahip bir orijindir. İşe yarar, ama tasarımın en zayıf halkası da budur. İzin listeleri kayar — yayınlanan aralıklar değişir ve güncelleme hiçbir zaman uygulanmaz; paylaşılırlar, dolayısıyla herkese açık bir CDN'de diğer her müşteriyi de içeri alırlar; ve önemli olan yönde açık biçimde başarısız olurlar, çünkü orijin bütün bu süre boyunca hâlâ canlı, herkese açık bir dinleyicidir — bir yanlış yapılandırmayı ya da hata ayıklama sırasında bir ufw disable komutunu bekleyerek.

Tutan versiyon bunu tersine çevirir: orijinin hiçbir herkese açık dinleyicisi yoktur. Edge ile orijin arasında bir WireGuard tüneli kurulur, web sunucusu yalnızca tünel adresine bağlanır ve herkese açık arayüz, her iki IP ailesinde de 80 ya da 443 için hiçbir istisnası olmayan varsayılan reddeden bir politikaya sahiptir. Böylece erişilebilirlik, birinin yenilemeyi unutabileceği bir kural değil — bir rotanın yokluğudur. WireGuard burada doğru araçtır, çünkü küçücük bir saldırı yüzeyine sahip bir çekirdek modülüdür, kimlik doğrulaması yapılmamış tarayıcılara karşı sessizdir (kimlik doğrulaması yapılmamış bir paket hiçbir yanıt almaz, dolayısıyla UDP portu var gibi bile görünmez) ve paket başına tek haneli mikrosaniyeye mal olur. Daha önce hiç kurmadıysanız, WireGuard rehberi temelleri kapsar; burada yalnızca iki eşli, noktadan noktaya bir bağlantıya ihtiyacımız var.

Başlamadan önce bir kural, ve bu, öğleden sonranızı kurtaracak olan kuraldır: ikinci bir SSH oturumunu baştan sona açık tutun. Hâlâ yeniden yapılandırmakta olduğunuz bir tünelin arkasına SSH'ı kilitlemek, insanların bir makineyi tam olarak böyle kaybetmesidir; kayıtlı bir kimliği olmayan bir sağlayıcıda ise ne tırmanacak bir destek merdiveni ne de size birinin verebileceği bir konsol oturumu vardır — geri dönüş yolu bir yeniden devreye alma ve bir geri yüklemedir; yedekleriniz güncelse hızlıdır, değilse kalıcıdır.

SP·05

Sertifikalar ve hostname'lerinizi yayınlayan günlük

Sertifika şeffaflığı, haftanızı seve seve mahvedecek, gerçekten iyi bir şeydir. Herkese açık bir CA'nın verdiği her sertifika, herkesin arayabileceği, yalnızca eklemeye açık günlüklere gönderilir ve kayıt, sertifikadaki her adı içerir. origin.example.com ya da direct.example.com için bir tane çıkarttınız mı, tam olarak duyurmamaya çalıştığınız hostname'i kalıcı ve yapılandırılmış bir biçimde yayınlamış olursunuz. Daha kötüsü, staging ve yönetici hostname'lerini aynı SAN listesine koyma alışkanlığı, dikkatsizce yapılmış tek bir yenilemeyi altyapınızın haritasına dönüştürür.

Disiplin basittir. Herkese açık sertifikalar yalnızca edge üzerinde yaşar ve yalnızca halkın gerçekten kullandığı adları kapsar. Orijin, kendinden imzalı bir sertifika ya da küçük bir özel CA'dan alınmış bir sertifika alır; bu da proxy yapılandırmasında proxy_ssl_trusted_certificate ile sabitlenir — yalnızca kendi proxy'nizin konuştuğu bir bağlantıda hiçbir şeyin herkes tarafından güvenilir olmasına gerek yoktur ve bunun için herkese açık bir sertifika çıkarmak size bir günlük kaydından başka hiçbir şey kazandırmaz. Birçok herkese açık alt alan adına ihtiyacınız varsa, bir wildcard otuz ad yerine tek bir ad yayınlar. Ve ACME'yi DNS-01 doğrulamasına geçirin: HTTP-01, doğrulanan hostname için 80 numaralı portta bir şeyin yanıt vermesini gerektirir ki bu da tam olarak az önce kaldırdığınız herkese açık dinleyicidir. Son olarak, asimetriyi kabul edin — günlükler yalnızca eklemeye açıktır, dolayısıyla zaten yayınladığınız bir hostname geri çekilemez. Eğer orijine çözümleniyorsa, orijinin yeni bir adrese ihtiyacı vardır.

SP·06

E-posta ve yanlış adres üzerinden yanıt veren diğer servisler

E-posta, klasik atlatma yöntemidir, çünkü tanımı gereği erişilebilir olmak zorundadır. Alan adınızın MX kaydı orijine işaret ediyorsa, egzersiz daha başlamadan bitmiştir — kayıt herkese açıktır ve tek bir dig komutu avı sona erdirir. MX başka yerde olsa bile, doğrudan orijinden posta gönderen bir uygulama, gönderen host'un adresini her mesajın Received: zincirine damgalar ve talep üzerine bir kullanıcıya posta gönderen herhangi bir form, bunu kendi kendine hizmet veren bir sorguya dönüştürür. Çözüm, orijini asla bir sunucu değil her zaman bir istemci yapmaktır: giden postayı bir gönderim (submission) servisi ya da ayrı bir kutu üzerinden aktarın, MX'i bulunmasına izin verilen bir makinede tutun ve işi bitmiş saymadan önce bir test mesajının tam başlıklarını okuyun. Kendi postanızı ölçekte işletmek başlı başına bir projedir ve gizlemeye çalıştığınız makinede yeri yoktur.

Ardından sessizce dinleyen her şey için bir tarama yapın. İzleme ajanları, konteyner panoları, "geçici olarak" açılmış veritabanı portları, 9100'de bir metrik uç noktası, yüksek bir portta bir kontrol paneli, herkese açık arayüzde bir SSH daemon'ı. Bunların her biri, gizli tutmaya çalıştığınız adres üzerinde yanıt veren bir servistir ve tarayıcılar yüksek portları düşük olanlar kadar kolay bulur. Denetim tek bir komuttur — ss -tulpn — ve doğru çıktı, hiçbir şeyin herkese açık bir adrese bağlı olmadığı bir listedir. Aşağıdaki üçüncü adım, bunu doğru yapan ve doğru tutan adımdır.

SP·07

Egress: orijininizin başlattığı bağlantılar

Hiçbir şey kabul etmeyen bir orijin, yine de kendini ele verebilir, çünkü yalnızca bağlantı almaz — bağlantı da açar. Paket mirror'ları, NTP, bir ödeme işlemcisine giden bir webhook, bir bot API'si, bir bağlantı önizlemesi için çekilen bir görsel, bir lisans kontrolü, giden bir SMTP oturumu, bir Git remote'u, bir hata raporlayıcı. Bunların her birinin karşı ucu için, orijinin herkese açık adresi basitçe bağlantının kaynak adresidir. Çoğu zaman bu zararsızdır, çünkü karşı ucu siz seçtiniz ve ona güveniyorsunuz. Sorun, bir saldırganın seçtiği bir avuç uç noktadır: önizleme oluşturan herhangi bir şeye bir bağlantı yapıştırın, bir webhook kaydedin ya da bir görsel içe aktarıcısında sunucu taraflı bir istek sahteciliği bulun — orijin, saldırganın izlediği bir host'u çözümleyip ona bağlanır. Bu, hiçbir exploit gerektirmeyen, iki dakikalık bir deanonimizasyondur.

Savunulabilir iki cevap vardır. Sıkı olanı, tüm egress'i tünel üzerinden yönlendirir ve edge'in bunu NAT'lamasına izin verir, böylece orijinin giden kaynak adresi edge'inki olur — peer yapılandırmasında tek bir ayar, artı diğer uçta forwarding ve bir masquerade kuralı. wg-quick yönlendirme döngüsünü sizin için halleder: bir 0.0.0.0/0 rotasıyla bir fwmark kuralı kurar, böylece tünelin kendi paketleri uç noktaya doğrudan ulaşmaya devam eder — insanların rotaları elle yazarken bozduğu kısım tam olarak burasıdır. Pragmatik cevap, kontrol ettiğiniz trafik için doğrudan egress'i korur ve kullanıcı tarafından sağlanan bir URL'yi çeken her şeyin önüne bir proxy koyar. Savunulamayacak olan şey, ikisinden hangisine sahip olduğunuzu bilmemektir. Bunu bilinçli olarak belirleyin, ardından sahip olduğunuz bir host'a bir istek göndererek ve loglarındaki kaynak adresine bakarak doğrulayın.

SP·08

Maliyeti nedir ve işe yaradığını nasıl kanıtlarsınız

Bütçe kalemi tek bir ekstra VPS'tir. $8.00/aya gelen en küçük plan, yükü fark bile etmeden küçük bir site için TLS'i sonlandırır ve proxy'ler — bir reverse proxy çoğunlukla bir soket kopyasıdır ve 4 GB RAM'li 2 vCPU, arkasındaki orijinin darboğaz haline geldiği noktayı fazlasıyla geride bırakacak kadar rahattır. Onu orijinden farklı bir bölgeye koyun, böylece tek bir hukuki belge ya da tek bir tesis sorunu ikisine birden ulaşmaz; ve gecikmeyi unutmayın: ekstra bir sekme gerçek milisaniyeler ekler, dolayısıyla Kuala Lumpur'daki bir orijinin önünde Amsterdam'da bir edge, bir kaza değil bir tasarım kararıdır. Aynı kıtadaki çiftler tipik olarak tek haneli milisaniyelere mal olur ve edge'de kazandığınız TLS oturum yeniden kullanımı, çoğu zaman bunu gerçek bir sayfa yüklemesinde geri öder.

İşe yaradığını kanıtlamak, bir yapılandırmayı bir kontrolden ayıran kısımdır ve tek seferlik değil, tekrar eden bir iştir — her yeni alt alan adı, her yeni sertifika, her yeni entegrasyon, adresi yeniden yayınlamak için taze bir fırsattır. Adım yedideki test dizisi yaklaşık on dakika sürer: sitenize doğrudan orijin adresinden ulaşmayı deneyin, şimdiye kadar sertifikalandırdığınız her hostname'i listeleyin, bariz alt alan adlarını tek tek deneyin, unuttuğunuz AAAA kaydını kontrol edin ve kendinize bir posta gönderin. Bunu her altyapı değişikliğinden sonra çalıştırın. Ve bunu yaparken sonucu aklınızda tutun: orijin yanıt veriyorsa, doğru düzeltme başka bir güvenlik duvarı kuralı değildir — yeni bir adrestir, çünkü eskisi zaten birinin arşivindedir. Yığında bu katman, sertleştirmeden sonra ve uzak konum yedeklerinin yanında yer alır: sertleştirme kutunun kırılmasının ne kadar zor olduğuna karar verir, yedekler ne kadar hızlı toparlanacağınıza karar verir ve bu katman da kutunun baştan bulunmasının ne kadar zor olacağına karar verir.

SP·09

Adım adım

  1. 01

    Edge'i devreye alın ve ona tam olarak tek bir iş verin

    Orijinin yaşadığı bölgenin dışında bir bölgede ikinci bir VPS devreye alın ve onu tek amaçlı bir cihaz gibi ele alın: TLS sonlandırma, bir reverse proxy ve başka hiçbir şey. Veritabanı yok, uygulama kodu yok, kimsenin özlemeyeceği kabuk betikleri yok. Üzerinde ilk-saat kontrol listesini çalıştırın — yalnızca anahtarla SSH, her iki IP ailesinde de varsayılan reddeden güvenlik duvarı, gözetimsiz güvenlik güncellemeleri — sonra tam olarak üç port açın.

    ssh root@198.51.100.20
    apt update && apt full-upgrade -y
    hostnamectl set-hostname edge-01
    apt install -y nginx wireguard-tools ufw unattended-upgrades
    
    ufw default deny incoming && ufw default allow outgoing
    ufw limit 22/tcp
    ufw allow 80,443/tcp
    ufw allow 51820/udp
    ufw --force enable
  2. 02

    DNS'e dokunmadan önce tüneli ayağa kaldırın

    İki eş, bir bağlantı. Her makinede bir anahtar çifti oluşturun ve tünele kendi küçük alt ağını verin — orijin sonunda yalnızca 10.66.0.2 üzerinden erişilebilir olacak, başka hiçbir yerden değil. Orijin, edge'i arar (açık portu olmayacak taraf odur), dolayısıyla Endpoint'i ve bir keepalive'ı o taşır; edge yalnızca dinler.

    # on both machines
    umask 077; wg genkey | tee privkey | wg pubkey > pubkey
    
    # edge-01 — /etc/wireguard/wg0.conf
    [Interface]
    Address = 10.66.0.1/24
    ListenPort = 51820
    PrivateKey = <edge-privkey>
    
    [Peer]
    PublicKey = <origin-pubkey>
    AllowedIPs = 10.66.0.2/32
    
    # origin-01 — /etc/wireguard/wg0.conf
    [Interface]
    Address = 10.66.0.2/24
    PrivateKey = <origin-privkey>
    
    [Peer]
    PublicKey = <edge-pubkey>
    Endpoint = 198.51.100.20:51820
    AllowedIPs = 10.66.0.1/32
    PersistentKeepalive = 25

    Her iki uçta da etkinleştirin ve daha ileri gitmeden önce el sıkışmayı doğrulayın — yalnızca bir sonraki yeniden başlatmaya kadar çalışan bir tünel, hiç tünel olmamasından daha kötüdür.

    systemctl enable --now wg-quick@wg0
    wg show          # expect a recent handshake and non-zero transfer
    ping -c3 10.66.0.1   # from the origin
  3. 03

    Orijini herkese açık internetten erişilemez hale getirin

    Asıl işi yapan adım budur, ve insanların kendilerini dışarıda bıraktığı adım da budur. İkinci bir SSH oturumu açın ve aşağıdakilerden herhangi birini çalıştırmadan önce bağlantıyı açık bırakın — burada başvurabileceğiniz bir destek konsolu yoktur. Ardından web sunucusunu tünel adresine bağlayın, herkese açık arayüzdeki her şeyi düşürün ve yalnızca tünele artı WireGuard uç noktasının kendisine izin verin.

    # /etc/nginx/sites-available/app  — listen on the tunnel only
    listen 10.66.0.2:8080;
    
    ufw --force reset
    ufw default deny incoming
    ufw default allow outgoing
    ufw allow in on wg0 to any port 8080 proto tcp
    ufw allow in on wg0 to any port 22 proto tcp
    ufw allow from 198.51.100.20 to any port 51820 proto udp
    ufw --force enable
    
    # the audit: nothing may be bound to a public address
    ss -tulpn | grep -Ev '10\.66\.0\.2|127\.0\.0|\[::1\]'

    Bu son komut bir servis yazdırıyorsa, bu bir sızıntıdır — bunun etrafına bir güvenlik duvarı kuralı eklemek yerine bağlama adresini düzeltin. Hayatta kalmasına izin verilen iki dinleyici vardır: 51820'de WireGuard, ve henüz tünele taşımadıysanız sshd.

  4. 04

    TLS'i edge'de sonlandırın ve tünel üzerinden proxy'leyin

    Herkese açık sertifikayı, halkın gerçekten kullandığı adlar için, edge üzerinde çıkarın ve upstream'e tünel adresi üzerinden proxy'leyin. İkinci server bloğu isteğe bağlı bir süs değildir: edge'in, Host başlığı olmadan IP üzerinden bağlanan bir tarayıcıya sitenizi sunmasını engelleyen kısım budur — ön kapının parmak izinin alınma şekli de tam olarak budur.

    # edge-01 — /etc/nginx/sites-available/example.com
    server {
        listen 443 ssl;
        http2 on;
        server_name example.com www.example.com;
    
        ssl_certificate     /etc/letsencrypt/live/example.com/fullchain.pem;
        ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
        add_header Strict-Transport-Security "max-age=63072000" always;
    
        location / {
            proxy_pass http://10.66.0.2:8080;
            proxy_set_header Host              $host;
            proxy_set_header X-Real-IP         $remote_addr;
            proxy_set_header X-Forwarded-For   $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_http_version 1.1;
        }
    }
    
    # anything that is not a known hostname gets nothing at all
    server {
        listen 80 default_server;
        listen 443 ssl default_server;
        ssl_reject_handshake on;
        return 444;
    }
  5. 05

    Orijine gerçek istemci IP'sini geri verin

    Bir proxy'nin arkasında, her istek 10.66.0.1'den gelir. Kendi haline bırakılırsa, erişim günlükleriniz işe yaramaz hale gelir, IP başına hız sınırlama saldırganı değil tüneli kısar ve fail2ban er ya da geç edge'i yasaklayıp siteyi çökertir — sertleştirme yaparken bir kesintiye yol açmanın gerçekten popüler bir yoludur bu. Forward edilen başlığa güvenin, ama yalnızca tünel adresinden geleni, dünyadan geleni asla.

    # origin-01 — /etc/nginx/conf.d/realip.conf
    set_real_ip_from 10.66.0.1;
    real_ip_header   X-Forwarded-For;
    real_ip_recursive off;

    Uygulamada da eşdeğerini yapın — Flask'ta ProxyFix, Laravel'de TRUSTED_PROXIES, set_real_ip_from artı framework'ün kendi güvenilir-proxy listesi — ve hız sınırlamayı, gerçek istemci adresinin doğal olarak var olduğu edge üzerine koyun:

    # edge-01 — /etc/nginx/nginx.conf (http block)
    limit_req_zone $binary_remote_addr zone=front:10m rate=20r/s;
    # then, inside the location block
    limit_req zone=front burst=40 nodelay;
  6. 06

    E-postayı ve egress'i orijin adresinden taşıyın

    MX'i bulunmasına izin verilen bir makineye yöneltin, giden postayı doğrudan orijinden değil bir röle üzerinden gönderin ve sertifika yenilemesini, 80 numaralı portta hiçbir şeyin yanıt vermesi gerekmeyecek şekilde DNS-01 doğrulamasına geçirin. Ardından geri kalan giden trafiğe ne olacağına karar verin. Tamamını edge üzerinden yönlendirmek için, orijinin AllowedIPs'ini genişletin ve edge'in masquerade yapmasına izin verin — wg-quick, tünelin kendisinin erişilebilir kalmasını sağlayan fwmark kuralını kurar, dolayısıyla uç nokta için elle bir rota yazmanıza gerek kalmaz.

    # origin-01 — /etc/wireguard/wg0.conf, in [Peer]
    AllowedIPs = 0.0.0.0/0, ::/0
    
    # edge-01 — forward and NAT the tunnel
    echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-fwd.conf && sysctl --system
    ufw route allow in on wg0 out on eth0
    # in /etc/ufw/before.rules, above the *filter block:
    # *nat
    # :POSTROUTING ACCEPT [0:0]
    # -A POSTROUTING -s 10.66.0.0/24 -o eth0 -j MASQUERADE
    # COMMIT
    systemctl restart ufw && wg-quick down wg0 && wg-quick up wg0

    Ardından orijinden kontrol edin: curl -s https://ifconfig.co kendi adresini değil, edge'in adresini döndürmelidir.

  7. 07

    Kendi orijininizi avlayın, ardından çalışma kılavuzunu yazın

    Ona, başka birinin saldıracağı gibi saldırın. İlk komut önemli olandır — orijin, doğrudan adreslendiğinde hâlâ sitenizi sunuyorsa, yukarıdakilerin hiçbiri henüz işe yaramıyor demektir.

    # does the origin answer for your hostname?
    curl -sk --resolve example.com:443:203.0.113.10 https://example.com/ \
         -o /dev/null -w '%{http_code}\n'      # want: a timeout, not 200
    
    # every hostname you have ever certified, from the public logs
    curl -s 'https://crt.sh/?q=%25.example.com&output=json' \
      | grep -o '"name_value":"[^"]*"' | sort -u
    
    # records that never moved
    dig +short example.com A; dig +short example.com AAAA; dig +short example.com MX
    for h in www mail ftp webmail cpanel dev staging vpn monitor origin direct; do
      printf '%-9s %s\n' "$h" "$(dig +short $h.example.com | tr '\n' ' ')"
    done

    Ardından uygulamadan kendinize bir posta gönderin ve tam Received: zincirini okuyun, kontrolünüzdeki bir host'a giden bir bağlantıyı önizleme oluşturan herhangi bir özelliğe yapıştırın ve hangi adresin onu çektiğini kontrol edin. Her kontrol için doğru bir sonucun neye benzediğini yazıya dökün ve her DNS değişikliğinden, her yeni sertifikadan ve her yeni entegrasyondan sonra hepsini yeniden çalıştırın. Bunlardan herhangi biri orijini ortaya çıkarırsa, onu taze bir adres üzerinde yeniden inşa edin — yayınlanmış olan zaten arşivlenmiştir ve hiçbir güvenlik duvarı kuralı onu geri alamaz.

SP·10 — SSS

Hızlı yanıtlar

Tek başına bir CDN yeterli değil mi?

Yalnızca orijine onsuz gerçekten ulaşılamıyorsa, ve varsayılan olarak ulaşılabilir. Bir CDN, DNS'inizin nereye işaret ettiğini değiştirir; orijinin herkese açık dinleyicisini kaldırmaz, adresi pasif-DNS arşivlerinden geri çekmez, MX kaydınızı taşımaz ya da uygulamanızın giden istekler yapmasını durdurmaz. Alışılmış sonuç, proxy'lenmiş ama hâlâ önemsiz bir şekilde çözümlenebilir bir sitedir. Bir CDN iyi bir cephe sağlar — kapasitesini istiyorsanız edge'in önüne bir tane koyun — ama gerçekten istediğiniz özellik, adım üçtekidir: orijinin herkese açık internetten hiçbir rotası yoktur, dolayısıyla atlatılacak bir şey de yoktur.

Orijin IP'yi gizlemek beni anonim yapar mı?

Hayır; ikisini birbirine karıştırmak, insanların sahte bir güvenlik hissiyle sonuçlanmasının tam nedenidir. Bu, bir adresi gizler. Kimliğiniz tamamen farklı kanallardan sızar: alan adı kaydı, ödeme yöntemi, kaydolduğunuz hesap ve bunları birbirine bağlayan operasyonel alışkanlıklar. Bizde barındırma, bunların bir kısmını yapı gereği kapatır — kayıt bir kullanıcı adı ve bir paroladır, fonlama ön ödemeli bir kripto bakiyesidir ve döngünün hiçbir yerinde kimlik belgesi yoktur — ama alan adı ve ödeme izi, yönetimi size ait olan şeylerdir. Adınızı bir sunucudan uzak tutmak, bu tarafı gereğince ele alır.

Ekstra sekme ne kadar gecikme ekler?

Tam olarak edge ile orijin arasındaki gidiş-dönüş süresi kadar; dolayısıyla bu sabit bir vergiden çok bir yerleşim kararıdır. İki Avrupa bölgesi tipik olarak düşük tek haneli milisaniyelerdedir; Amsterdam'dan Kuala Lumpur'a değildir ve bu çifti kazara tasarlamamalısınız. Bir kısmı geri gelir: edge, TLS'i ziyaretçiye yakın bir yerde sonlandırır ve orijine sıcak bir bağlantı tutar, dolayısıyla el sıkışma ağırlıklı ilk yüklemeler genellikle iyileşir. Gecikmeye duyarlıysanız, edge'i ziyaretçilerinize, orijini de edge'e yakın koyun ve ping yerine gerçek sayfa yüklemeleriyle ölçün.

Edge çöktüğünde ne olur?

Site çöker, çünkü orijinin bilerek başka bir giriş yolu yoktur — bu bir hata değil, tasarımın ta kendisidir. Bunu, herhangi bir tekil arıza noktasını ele alacağınız gibi ele alın: farklı bölgelerde, her iki adresi de DNS'te olan iki edge çalıştırın ve orijinin peer listesinin ikisini de tutmasını sağlayın. wg-quick@wg0'ı etkinleştirdiyseniz tünel, yeniden başlatmanın ardından kendi kendine geri gelir, dolayısıyla sıradan arıza kendini çözer. Asla yapmamanız gereken şey, bir olay sırasında orijine geçici bir herkese açık dinleyici eklemektir; altı ay sonra da hâlâ orada olacaktır ve o zamana kadar adres taranmış ve arşivlenmiş olacaktır.

Bunu tek bir sunucuyla yapabilir miyim?

Anlamlı bir şekilde değil. Aynı makinedeki bir reverse proxy hiçbir şeyi gizlemez — yanıt veren adres, gizlemeye çalıştığınız adresin ta kendisidir. En ucuz dürüst versiyon, TLS'i sonlandırmaktan başka hiçbir şey yapmayan, $8.00/aya ikinci bir VPS'tir; bu aynı zamanda bir selin ya da bir kötüye kullanım şikâyetinin, verinize dokunmadan 15 min içinde değiştirebileceğiniz bir kutuya düştüğü versiyondur. Tek gerçek tek-makineli alternatif, hiçbir herkese açık adrese ihtiyaç duymayan bir Tor onion servisi olarak yayın yapmaktır; bu, farklı bir kitlesi olan farklı bir üründür — herkese açık bir web sitesi için doğrudan bir yerine geçen çözüm değildir.

Orijin IP'm zaten herkese açık. Artık çok mu geç?

O adres için, evet — pasif-DNS arşivleri ve sertifika günlükleri kalıcıdır ve geri çekme mekanizması yoktur. Ama çözümü ucuzdur: önce edge'i ve tüneli kurun, taze bir adres üzerinde yeni bir orijin devreye alın, ona geçiş yapın ve eski makineyi yok edin. Yayınlanmış her şey, artık hiçbir şey çalıştırmayan bir adresi gösterir. Bunu bu sırayla yapın, çünkü tünel var olmadan önce yeni bir orijin ayağa kaldırmak basitçe ikinci bir adres yayınlamak anlamına gelir. Ve ilkini ifşa eden sızıntıyı düzeltme fırsatını da değerlendirin — yoksa gelecek yıl bunu tekrar yapıyor olursunuz.

Pratiğe dökün

VPS 15 min içinde çevrimiçi, özel sunucu 2–12 h içinde teslim edilir. $30.00'den kripto ile yükleyin — kimlik bağlı değil.

VPS dağıt