Tüm barındırma hizmetlerinde 15% tasarruf edin

Becerilerini test et ve herhangi bir hosting planında İndirim kazan

Kodu kullanın: Skills Başlayın
Bölüm
Güvenlik Linux Yönetim

XDP Nedir ve Anti-DDoS Koruma Oluşturmaya Nasıl Yardımcı Olabilir?

XDP Tanıtımı ve Anti-DDoS Koruması Oluşturmaya Nasıl Yardımcı Olabilir?

whatis

Herkese açık bir API, ters proxy, oyun hizmeti veya başka herhangi bir internet’e bakan iş yükü çalıştırıyorsanız, sunucunun baştan hiç yararlı olmayan trafikle meşgul olduğu acı verici bir noktaya ulaşabilirsiniz. Uygulama, gerçek kullanıcıları işleyememesi nedeniyle başarısız olmuyor. Sunucu, hiçbir şey “hayır” demeden önce junk paketleri alıp, ayrıştırıp, sınıflandırıp ve Linux’un derinliklerine taşıyarak CPU zamanı harcadığı için başarısız oluyor. Birçok anti-DDoS sorunu orada başlar: bant genişliği hikayesi olarak değil, paket işleme maliyeti hikayesi olarak.

Bu, yalnızca kernel uzmanlarından daha fazlasını ilgilendirir. Geliştiriciler, kendi kendine barındıranlar, VPS ve özel sunucu operatörleri ve hatta dayanıklılık seçeneklerini karşılaştıran işletme okuyucuları da aynı temel soruyla karşılaşırlar: kötü trafik, gerçek çalışmaya ait olması gereken zamanı ve kaynakları tüketmeden ne kadar erken reddedilebilir? Bazı saldırılar yükselişi kendisi ezebilir, ancak birçok zararlı durum, hat tamamen doymuş olmadan çok daha önce ana bilgisayardaki saniye başına paket basıncı olarak ortaya çıkar.

XDP’nin anlaşılmaya değer olduğu yer burasıdır. Yukarı akış azaltmasının, bir güvenlik duvarının veya uygulamaya duyarlı denetimlerin yerini almaz. Sunduğu şey, Linux paket yolunda çok daha erken bir kontrol noktasıdır. Bu makale, XDP’nin ne olduğunu, bu “daha erken” konumunun anti-DDoS çalışması için neden önemli olduğunu ve gerçekçi bir yığında nereye uyduğunu açıklar. Geri kalanını takip etmek için, önce çok küçük bir kelime haznesine ihtiyacınız var.

2 Dakikada İhtiyacınız Olan XDP Anahtar Kelimeleri

XDP etrafındaki terimlerden birçoğu örtüşmektedir ve ilk başta gerçekten olduğundan daha korkutucu görünürler. Bu normaldir. Bu sözlüğün amacı makaleyi bir Linux iç işleri dersi haline getirmek değildir. Sadece açıklamanın geri kalanının temiz bir şekilde anlaşılmasına yardımcı olacak kadar dildir.

TerimSade dil anlamı
📦 XDPGelen bir paket hakkında normal ağ yığını daha fazla çalışma yapmadan önce erken bir karar verebilen bir Linux paket işleme kancası.
🧩 eBPFLinux çekirdeğinin içinde, küçük programların belirli kanca noktalarında çalışmasına izin veren güvenli bir programlanabilir mekanizma.
🔌 NIC driverLinux’un bir ağ kartıyla iletişim kurmasına ve ondan paket almasına izin veren yazılım katmanı.
🛠️ kernel networking stackLinux’un paketler geldikten sonra kullandığı normal yol; yönlendirme, güvenlik duvarı, soketler ve uygulamalara teslim etmeyi içerir.
🐧 native modeProgramın donanım ve sürücü desteğinin izin verdiği kadar erken sürücü alma yolunda çalıştığı daha hızlı XDP yolu.
📥 skb / generic modeXDP’nin kavramsal olarak hala çalıştığı, ancak yolda daha sonra ve native mode’dan daha az performans avantajı ile bir uyumluluk modu.
🔑 BPF mapsÇalışan bir XDP programı ve kullanıcı-uzay araçlarının kurallar veya sayaçlar gibi verileri değiş tokuş etmesine izin veren paylaşılan anahtar-değer tabloları.
🚦 xdp-loaderXDP programlarını arayüzlere bağlamak, incelemek ve yönetmek için bir kullanıcı-uzay aracı.
🧹 xdp-filterÖzel eBPF kodu yazmadan XDP davranışını göstermeyi daha kolay hale getiren basit bir XDP tabanlı filtreleme yardımcı programı.

O tablodan sadece bir zihinsel kısayol tutarsanız, şu olsun: eBPF programlanabilir mekanizmadır ve XDP bu mekanizmanın çalışabileceği belirli bir yerdir. Bununla birlikte, bir sonraki adım daha basit ve daha faydalı bir sorudur: XDP aslında ne yapıyor?

XDP Aslında Nedir

whatis

XDP, Linux’ta erken paket işleme kancasıdır. Sistemin bir paket ağ arayüzüne gelir gelmez küçük bir eBPF programını çalıştırmasını sağlar. O anda Linux hızlı bir karar verebilir: pakete devam etmesine izin ver (XDP_PASS), hemen bırak (XDP_DROP) veya başka bir tanımlanmış şekilde işle. Bu makale için önemli kısım basittir: XDP çok erken bir aşamada “buna izin ver” veya “burada durdur” diyebilir.

Linux, eBPF’yi sadece ağ iletişiminde değil, birkaç bağlamda kullanır. XDP, gelen paketlerin çok erken işlenmesi için oluşturulmuş ağ odaklı sürümdür. Yani XDP, eBPF’nin başka bir adı değildir. Çok spesifik bir rolü olan eBPF tabanlı bir araçtır.

Bu rol, XDP’yi anti-DDoS çalışması için yararlı kılan şeydir. XDP, paketler Linux ağ yolunun normal, daha ağır kısımlarından geçmeden önce çalışır. Böylece Linux, bazı trafiğin güvenlik duvarı, bağlantı izleme, soketler ve sonunda uygulamanın kendisine daha fazla çaba harcamadan önce karar verebilir. XDP’nin gerçek avantajının sadece filtreleme olmayıp daha erken filtreleme olmasının nedeni budur.

Ayrıca XDP, anti-DDoS’tan daha fazlası için yararlıdır. Trafik yönlendirmesini ve diğer paket işleme görevlerini de destekleyebilir. Ancak anti-DDoS, değerini görmek için en kolay yerdir, çünkü fayda tek bir pratik fikre indirgenir: kötü trafik ne kadar erken reddedilirse, sunucu o kadar az gereksiz iş yapmak zorunda kalır. Ve bunun neden bu kadar önemli olduğunu anlamak için, bir sonraki adım XDP’nin paket alma yolunda tam olarak nerede yer aldığına bakmaktır.

Mental Model: XDP Kapı, Resepsiyon Masası Değil

model

XDP’yi en kolay şekilde güvenlik görevlisi olarak düşünebilirsiniz — binanın içerisindeki resepsiyonist değil, kapıdaki güvenlik görevlisi. Açıkça istenmeyen bir ziyaretçi kapıda geri çevrilirse, bina uzun bir boş işler zincirinden kurtulur. Kimse iç kapıyı açmaz, onları sisteme kaydetmez veya koridordan yürütmez. Eğer resepsiyon masasında reddetmeyi beklerseniz, bina zaten yanlış kişiye zaman ve dikkat harcamıştır.

Linux paket işleme de aynı şekilde çalışır. Basitleştirilmiş bir alma yolunda, paket NIC ve sürücüden gelir, XDP’ye ulaşır ve ancak o zaman conntrack, güvenlik duvarı, soketler ve sonunda uygulamayı besleyen daha zengin çekirdek ağ yığınına devam eder. Görsel olarak, yol şöyle görünür:

NIC / driver
    ↓
XDP  ← earliest checkpoint
    ↓
kernel networking stack
    ↓
conntrack / firewall
    ↓
socket
    ↓
application

Yerel modda, XDP, Linux’un olağan sk_buff yapısını ayırmadan ve doldurmadan önce hareket edebilir — yığının geri kalanının beklediği daha zengin çekirdek paket nesnesi. Bu detay küçük görünse de, performans hikayesinin kalbini oluşturur. Paket açıkça istenmeyen bir paketse, Linux bu normal yapıyı oluşturmadan önce onu düşürmek daha az CPU işi, daha az bellek karışıklığı ve daha az aşağı yönlü baskı anlamına gelir. XDP_PASS var çünkü her paket kötü değildir; meşru trafiğin hareket etmeye devam etmesini sağlayan “devam et” eylemidir. XDP_DROP anti-DDoS yıldızıdır çünkü paket yolculuğu pahalı kısım başlamadan önce sonlandırır. REDIRECT gibi diğer eylemler de vardır, ancak bu açıklamada kritik değildirler.

Yerleşim açık olduğunda, anti-DDoS değeri — ve sınırlamalar — çok daha gerçekçi bir şekilde değerlendirilmesi kolay hale gelir.

XDP’nin Anti-DDoS’a Nasıl Yardımcı Olduğu — ve Sınırları Nerede Başlıyor

model

XDP için anti-DDoS durumu açıktır: Linux’un conntrack, socket işleme ve user-space teslimatına kaynak harcamadan önce açık çöpleri reddetmenin ucuz bir yoludur. Bir ana bilgisayar, uygulamaya asla ulaşmaması gereken yüksek hızlı trafikle bombardıman ediliyor ise, erken bırakılan her paket sunucunun daha sonra yapması gereken işin azalmasıdır. Bu nedenle XDP, sorunun L3/L4 kenarında en güçlüdür: zaten güvenmediğiniz kaynak adresleri, istemediğiniz protokoller veya iş yükü için açıkça meşru olmayan trafik desenleri.

Bu, ham veri hacminin değil, tekrarlanan paket işlemenin ağrılı olduğu çöp taşkınlarında en önemlidir. Ters proxy, UDP-ağır hizmet veya genel API, ana bilgisayar saçmalıkları sınıflandırmakla meşgul ise, bağlantı hattı tamamen doygunluğa ulaşmadan çok önce yavaşlayabilir. XDP, bu atıkların bir kısmını kapıya yakın kesmenin bir yolunu sunar.

📝 Not: XDP, ana bilgisayar kaynaklarını doygun bir upstream bağlantısından daha iyi korur. Sağlayıcıya bakan bağlantı zaten doluysa, ana bilgisayar düzeyinde erken bırakma, ağ yolunu kendi başına düzeltmek için çok geçtir.

Bu ayrım, XDP’nin bir katmanlı tasarımda yer alması gerektiğinin ana nedenidir. Aşağıdaki tablo XDP vs nftables vs upstream/provider mitigation‘ın pratik versiyonudur:

KatmanNerede etki ederEn iyi ne korurTek başına çözemediği şeyYığında en iyi rol
XDPEn erken ana bilgisayar alma kontrol noktasındaAçık istenmeyen trafikten kaynaklanan CPU ve paket yolu maliyetiDoygun bir bağlantı, durum bilgisi olan politika veya uygulamaya duyarlı filtrelemeİlk geçiş erken bırakma katmanı
nftablesAna bilgisayar ağ yığınında daha derinlerdeDurum bilgisi olan güvenlik duvarı, daha zengin politika, hizmete duyarlı ana bilgisayar kontrolleriPaketlerin o kadar uzağa gelmesi için zaten harcanan ekstra ana bilgisayar işiAna ana bilgisayar güvenlik duvarı ve politika katmanı
Upstream / sağlayıcı azaltmaTrafik sunucunuza tam olarak ulaşmadan önceBağlantı doygunluğu, daha büyük hacimsel taşkınlar, daha geniş kenar filtrelemeİnce taneli ana bilgisayar bağlamı veya uygulamaya özgü yerel politikaSunucudan önce dış azaltma katmanı

Başka bir deyişle, XDP ve nftables düşman değildir. Yolun farklı bölümlerini çözerler. nftables daha zengin ve durum bilgisi olanıdır. xdp-filter — bu makalede kullanılan demo aracı — kasıtlı olarak basit ve durum bilgisi olmayan bir araçtır, bu da tam bir güvenlik duvarının yerini almaya çalışmadan XDP modelini göstermek için neden yararlı olduğunu açıklar. Bağlantı izlemesi, katmanlı beyaz listeler, yanıt durumu işleme veya uygulamaya duyarlı kurallar gerekiyorsa, zaten bu demo yardımcı programından daha derinlerde yer alması gereken sorunları tanımlıyorsunuz.

Üretim operatörleri XDP tarzı bırakma kullanırlar çünkü erken atış, aşağı akış işini azaltır. Cloudflare’nin L4Drop hikayesi, bu modelin neden gerçek işlemlerde çekici hale geldiğini gösteren iyi bilinen bir örnektir. Ancak önemli ders, yalnızca başlık paket-saniye sayısı değildir. Bu tasarım mantığıdır: kötü trafiği daha erken reddedin, böylece makinenin geri kalanı gerçek trafiği daha uzun süre sunmaya devam edebilsin.

Gerçek dünya sonuçları çevre tarafından büyük ölçüde bağımlıdır. NIC ve sürücü desteği, XDP’nin yerel veya skb modunda çalışıp çalışmadığı ve gelen trafiğin şekli, gerçekte ne kadar fayda elde ettiğinizi etkiler. Bu nedenle satıcılar veya hiper ölçekleyicilerden gelen başlık paket-saniye rakamları, erken bırakma modelinin işe yaradığının kanıtı olarak en iyi şekilde ele alınır, her VPS’nin beklediği sayılar değil. Bunu göz önünde bulundurarak, bir sonraki bölüm XDP’nin birkaç güvenli operatör anlık görüntüsü aracılığıyla gerçek bir Ubuntu ana bilgisayarında nasıl göründüğünü gösterir.

XDP Uygulamada Nasıl Görünüyor — Komut Anlık Görüntüleri

practice

Bu bölüm bir kavram kanıtı anlık görüntüsüdür. Amaç, XDP’yi Ubuntu 24.04’te ilgili komut seti ile gerçek hale getirmektir: bir filtreyi yüklemek, ekli olanları incelemek, bir düşük riskli kural eklemek ve önemli sayaçları okumak için yeterlidir.

XDP kurulumuna geçmeden önce, önce arayüz adını keşfetmeniz ve seçmeniz gerekir.

ip -br link

interfaces

Ön koşulları yükleyin.

sudo apt update
sudo apt install -y xdp-tools

install

Aşağıdaki komutta, <ifname> yerine eth0 veya ens3 gibi gerçek ağ arayüzü adınızı yazın.

sudo xdp-filter load -m skb <ifname>

İlk iki komut gerekli araçları yüklemekten sorumludur ve ortamın demoyu çalıştırmak için gereken her şeye sahip olmasını sağlar.

Üçüncü komut daha sonra xdp-filter‘ı skb modunda varsayılan allow politikası ile yükler. Bu makale için kullanılan Ubuntu ana bilgisayarında, bu tam tcp,udp,ipv6,ipv4,ethernet,allow özellik seti ile xdpfilt_alw_all varyantını üretti. -m skb seçmek, NIC’inizde veya sürücüde yerel XDP desteği varsaymaktan kaçınır ve ilk kavram kanıtı için daha güvenli bir yol haline getirir.

Programın gerçekten eklendiğini doğrulamak için şunu çalıştırın:

sudo xdp-filter status
ip -details link show dev <ifname>

xdp-filter status‘ta, arayüzünüzün skb mode ile listelendiğini görmek istiyorsunuz; test ana bilgisayarında burada, yüklenen özellik seti tcp,udp,ipv6,ipv4,ethernet,allow gösterdi. ip -details link show‘da, bir xdpgeneric eki ve xdp_dispatcher programı, genel XDP’nin bu arayüzde etkin olduğunu doğrular.

check

⚠️ Uyarı: SSH oturumunuzu taşıyan canlı bir uzak arayüzde deny-default politikaları veya geniş drop kurallarını test etmeyin; konsol kurtarma seçeneğiniz yoksa. Bu makale tam bu nedenle bir allow politikası ve bir belge adresi kuralı ile kalır.

Sonra, yetenek keşfini inceleyin. Bu, NIC ve sürücünün XDP yüzeyinde ne ortaya çıkardığını söyler, son performansınız ne olacağını değil.

sudo xdp-loader features <ifname>

Tam çıktı donanıma göre değişir, ancak temsili bir sonuç genellikle şu gibi satırlar içerir:

feature

Burada en önemli olan NETDEV_XDP_ACT_BASIC‘tir, çünkü bu size yolun çekirdek XDP eylem modelini ortaya çıkardığını söyler. Yönlendirme desteği gibi ekstra bayraklar yararlıdır, ancak basit bir anti-DDoS kavram kanıtı için gerekli değildir.

Sonra, XDP yükleyicinin programı nasıl yönettiğini ve hangi modda çalıştığını doğrulayın.

sudo xdp-loader status

Çalışan bir sistemde, bir durum görünümü şöyle görünebilir:

loader

Bu küçük ama önemli bir operatör kontrolüdür. XDP’nin sadece kullanıcı alanında yaşayan bir kural kavramı olmadığını doğrular — arayüzde yüklü bir program vardır ve mod sütunu size native veya skb‘ye bakıp bakmadığınızı söyler.

Şimdi bir belge IP adresi kullanarak bir güvenli örnek kural ekleyin. -s bayrağı yararlıdır çünkü sessiz bir başarı ile sizi bırakmak yerine ortaya çıkan kural durumunu hemen yazdırır.

sudo xdp-filter ip -s -m src 192.0.2.1

Temsili bir yanıt şöyle görünebilir:

filter

📝 Not: xdp-filter varsayılan olarak bir allow politikasına sahiptir. Başka bir deyişle, kuralla eşleşen paketler bırakılır ve kuralla eşleşmeyen paketler normal yol aracılığıyla devam eder.

Bu örnek kasıtlı olarak sıkıcıdır. Anti-DDoS açısından, aynı zamanda en basit olası erken drop kuralının versiyonunu gösterir: istemeyen bir kaynaktan gelen trafik, ana bilgisayarın geri kalanı buna çok fazla çalışmaya yatırım yapmadan reddedilebilir.

Son olarak, genel durumu bir yerde inceleyin.

sudo xdp-filter status

Tipik bir sistemde, çıktı deseni en bilgilendirici olandır.

filter-status

Bu durum görünümü, kavram kanıtının operasyonel olarak yararlı hale geldiği yerdir. Yüklü arayüzü, etkin modu, etkin xdp-filter varyantını, etkili özellik setini ve kural başına sayaç durumunu bir komutta görebilirsiniz. XDP_ABORTED, görünürse, esas olarak planladığınız eylem yerine bir hata/hata ayıklama demetidir. Daha önemlisi, drop sayacı 0‘da kalırsa, bu filtrenin başarısız olduğu anlamına gelmez. Bu sadece yakalama penceresi sırasında kuralla eşleşen hiçbir paketin gelmediği anlamına gelir.

💡 Çıkarım: xdp-filter’ı basit, durumsuz bir kavram kanıtı aracı olarak değerlendirin, nftables’ın yerine geçmez. Ayrıca, XDP katmanında bırakılan paketlerin olağan tcpdump yolunda asla görünmeyebileceğini unutmayın, bu da XDP-yerel durum çıktısını ve sayaçları daha güvenilir doğrulama yöntemi haline getirir. Daha sonra canlı bir görünüm istiyorsanız, sudo xdp-filter poll -i 2000 makul bir isteğe bağlı sonraki adımdır — ancak yalnızca arayüzün zaten ilginç trafiğe sahip olması durumunda bu çıktıyı yararlı hale getirir.

Güvenli bir demoyu görmek fikri somut hale getirir. Gerçek karar, ancak komutların çalışıp çalışmadığı değildir. Gerçekten yönettiğiniz altyapı türünde bu ekstra katmanın operasyonel karmaşıklığa değip değmediğidir.

XDP’nin VPS ve Dedicated Sunucular İçin Ne Zaman Dikkate Değer Olduğu

choice

XDP, halkla açık bir iş yükü istenmeyen paketler nedeniyle uygulamanın normal şekilde yanıt vermeden önce anlamlı CPU zamanı kaybettiğinde ilginç hale gelir. İyi adaylar arasında genel API’ler, ters proxy’ler, ağ geçitleri, internete açık UDP-ağır hizmetler ve uygulamanın kendisi darboğaz olmasa bile ağ yolunu strese sokacak kadar çöp trafiği düzenli olarak gören sunucular yer alır. Bu ortamlarda, daha erken reddetme gerçek sunucu boşluğu geri alabilir.

Ayrıca daha basit filtrelemenin yeterli olduğu birçok durum vardır. Düşük trafikli bir web sitesi, dahili bir araç, bir hazırlık kutusu veya gerçek gereksinimi paket hızı rahatlaması yerine durum bilgisi olan ana bilgisayar güvenlik duvarı olan bir hizmet genellikle önce XDP’ye ihtiyaç duymaz. nftables zaten riski fark edilir paket yolu basıncı olmadan kapsıyorsa, başka bir katman ekleme değerden daha fazla hareketli parça oluşturabilir.

Hızlı bir karar çerçevesi olarak:

  • Güvenlik duvarı genellikle yeterlidir trafik hafif olduğunda, politika durum veya daha zengin hizmet mantığı gerektirdiğinde ve ana bilgisayar çöp paketlerde CPU yakmıyor.
  • XDP değerlendirmeye başlamaya değer istenmeyen trafik ana bilgisayara sık sık ulaştığında ve erken bırakma CPU, conntrack ve soket kapasitesini koruyabilir.
  • Yukarı akış azaltma zorunlu kalır gerçek hata modu sağlayıcı bağlantısı doygunluğu veya paketler sunucunuza ulaşmadan önce daha büyük hacimsel taşkın olduğunda.

VPS kullanıcıları bir uyarı aklında tutmalıdır: sanal NIC yolları ve sağlayıcı soyutlaması, skb modu bir demo için iyi çalışsa bile yerel mod beklentilerini sınırlayabilir. Dedicated sunucular genellikle sürücüler, donanım ve gözlemlenebilirlik üzerinde daha fazla kontrol sağlar, bu nedenle anlamlı yerel mod desteği olasılığı daha yüksektir — ancak çıplak metal üzerinde bile XDP hala bir katman, tam cevap değildir. AlexHost veya başka bir sağlayıcıyı değerlendiriyorsanız, bunları bir araya getirmek yerine üç ayrı soru sorun: hangi yukarı akış DDoS işleme mevcuttur, plan size ne kadar ana bilgisayar boşluğu verir ve bu platformda gerçekçi ana bilgisayar düzeyinde kontroller nelerdir?

Sonuç: XDP Erken Düşürme Katmanıdır, Tüm Kalkan Değildir

decisions

XDP hakkında düşünmenin en temiz yolu şudur: Linux’a açık kötü trafiği ve paket sularını hızlı bir şekilde kontrol etmek için ilk bir kontrol noktası verir, bu da sunucu kaynaklarını yukarı akış bağlantısını korumaktan daha iyi korur. XDP’nin anti-DDoS konuşmalarında önemli olmasının nedeni budur. Upstream mitigasyonu, durum bilgili güvenlik duvarını veya uygulamaya duyarlı kontrolleri değiştirmez. Konağın anlamsız işler yapmasını azaltarak yardımcı olur.

Yani temel kural basittir. İstenmeyen trafik, gerçek iş yükleri yanıt verebilmeden önce ana bilgisayar CPU’sunu boşa harcıyorsa, XDP erken düşürme katmanı olarak değerlendirilmeye değerdir. Ana sorun tam bir uplink veya durum ve uygulama mantığına bağlı bir politikayse, XDP tam bir cevap olarak önlerinde değil, upstream mitigasyonu ve daha derin filtrelemenin arkasında yer almalıdır. Buradan doğal bir sonraki adım, özel XDP programları yazma veya aynı erken düşürme fikri etrafında daha zengin katmanlı bir savunma oluşturma hakkında bir takip olacaktır.