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·02Bir 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.comiç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
Hostbaş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,
Serverbaş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·03Edge'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·04Tü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·05Sertifikalar 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.
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.
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.
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·09Adım adım
-
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
-
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ıylaEndpoint'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
-
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.
-
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,
Hostbaş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; } -
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 vefail2baner 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'deTRUSTED_PROXIES,set_real_ip_fromartı 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;
-
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.cokendi adresini değil, edge'in adresini döndürmelidir. -
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' ' ')" doneArdı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.


