Apa itu eBPF, XDP and Network Security?

Apa itu eBPF, XDP

Akhir-akhir ini sedang trending pertanyaan apa itu eBPF dan XDP. Di Herza Cloud, Salah satu inovasi terbaru untuk solusi Anti DDoS adalah pengembangan kami untuk Firewall Filter Layer 7 dengan eBPF dan XDP.

Kami tidak takut merusak barang dan bergerak cepat. Kami telah memupuk budaya teknik yang kuat yang mendorong inovasi dan kami yakin ini penting, karena memungkinkan anggota tim kami melakukan yang lebih baik waktu demi waktu.

eBPF dan XDP adalah teknologi terbaru yang perlu Anda tambahkan ke kosakata tren teknologi trending saat ini, bersama dengan Blockchain dan Cyberwarfare.

Dalam artikel ini, kami akan menyelami sedikit tentang kegunaan eBPF dan XDP, namun kami akan berfokus pada bagaimana kami menggabungkan teknologi menarik ini kedalam keamanan jaringan kami, terkhusus layanan keamanan Anti DDoS dan berbagi bagian dari perjalanan kami melakukannya.

Apa itu eBPF?

Apa yang dimulai dengan tujuan sederhana dari pemfilteran paket jaringan, eBPF dengan cepat berkembang menjadi salah satu alat paling kuat yang tersedia untuk Linux. Diadopsi oleh orang-orang seperti Netflix, Amazon, Google, Microsoft dll dan dijuluki “Kekuatan super untuk Linux” oleh beberapa orang, ini memungkinkan Anda untuk menjalankan “ring 3 user-space code” dalam kernel pada ring 0, di dalam mesin virtual.

eBPF telah terbukti menjadi alat yang sangat berharga untuk pemfilteran serta klasifikasi paket, diagnostik dan pelacakan jaringan, serta analisis kinerja antara lain di dalam Herza Cloud.

Artikel ini https://lwn.net/Articles/740157/ dapat memberikan informasi lebih lanjut tentang eBPF.

Apa itu XDP?

“XDP atau eXpress Data Path memberikan performa tinggi, jalur data jaringan yang dapat diprogram di kernel Linux sebagai bagian dari IO Visor Project. XDP menyediakan pemrosesan paket bare metal pada titik terendah dalam tumpukan perangkat lunak yang menjadikannya ideal untuk kecepatan tanpa mengurangi kemampuan pemrograman. Selain itu, fungsi baru dapat diimplementasikan secara dinamis dengan jalur cepat terintegrasi tanpa modifikasi kernel” – iovisor.org

Lihat https://www.iovisor.org/technology/xdp untuk informasi lebih lanjut tentang XDP.

eBPF dan XDP untuk Keamanan Jaringan

Mengapa kita ingin menggunakan eBPF dan XDP?

Hanya karena itu sangat memperkuat kemampuan Deteksi, Analisis, dan Mitigasi serangan DDoS dengan lebih terarah. Dengan memfilter paket pada tingkat silikon dengan perangkat keras seperti Mellanox Connect-X5, kami dapat mengungguli solusi lain yang telah kami uji secara andal.

Selain manfaat kinerja yang jelas, eBPF dan XDP bersama-sama memungkinkan kami menambahkan lapisan keamanan tambahan pada tingkat serendah mungkin. Hal ini bersama-sama dengan teknologi keamanan jaringan milik kami lainnya menambahkan hingga melebihi persyaratan Keamanan dari setiap Pemerintah, Perusahaan atau organisasi mana pun dengan data sensitif, dan platform Herza Cloud Network Intelligence & Analytics menyediakan analitik berkelanjutan secara real-time, memberi pelanggan visibilitas yang tak tertandingi dan wawasan yang dibutuhkan melalui jaringan dan infrastruktur.

Tapi seperti teknologi baru lainnya, ini bukannya tanpa masalah dan bahkan kadang-kadang kita merasa seperti kita memotong diri kita sendiri di ujung tombak, karena area yang kita injak benar-benar belum dieksplorasi.

Mari ambil cuplikan kode untuk menemukan data header IP terkait dengan header ETH (kode ini dapat ditemukan di beberapa contoh eBPF, dan kami juga menggunakan versinya):

static __always_inline bool parse_eth(struct ethhdr* eth,
                                      void* data_end,
                                      u16* eth_proto,
                                      u64* l3_offset) {
    u16 eth_type = eth->h_proto;
    u64 offset = 0;

    if ((void*)(eth + 1) > data_end)
        return false;

    /* Skip non 802.3 Ethertypes */
    if (unlikely(ntohs(eth_type) < ETH_P_802_3_MIN))
        return false;

        /* Handle (double) VLAN tagged packet */
#pragma unroll
    for (int i = 0; i < 2; ++i) {
        if (eth_type == htons(ETH_P_8021Q) || eth_type == htons(ETH_P_8021AD)) {
            struct vlan_hdr* vlan_hdr;

            vlan_hdr = (void*)eth + offset;
            offset += sizeof(*vlan_hdr);
            if ((void*)(eth + 1) + offset > data_end)
                return false;
            eth_type = vlan_hdr->h_vlan_encapsulated_proto;
        }
    }

    *eth_proto = ntohs(eth_type);
    *l3_offset = offset;
    return true;
}

Dalam hal ini offset memiliki salah satu dari 3 nilai constant values: 0, sizeof(struct vlan_hdr) atau 2 * sizeof(struct vlan_hdr), yang terlihat saat melihat bytecode yang dikompilasi. offset disimpan dalam register r4, dan inilah yang terjadi padanya:

$ llvm-objdump -S -no-show-raw-insn xdp_l3offset_kern.o

; offset = 0;
      15:       r4 = 0
; offset += sizeof(*vlan_hdr);
      20:       r4 = 4
; offset += sizeof(*vlan_hdr);
      26:       r5 = r4
      27:       r5 += 4
      // ...
      35:       r4 = r5

We know that the value is [0-8], and the in-kernel eBPF verifier knows it too, as it tracks registers’ values to make sure that operations on the packet are well defined:

    if (eth_proto == ETH_P_IP) {
        struct iphdr* ip = (void*)(eth + 1) + l3_offset;
        if ((void*)(ip + 1) > data_end)
            return XDP_DROP;

        // Will print the protocol number to /sys/kernel/debug/tracing/trace_pipe
        bpf_trace_printk("ipproto: %u\n", ip->protocol);
    }
$ llvm-objdump -S -no-show-raw-insn xdp_l3offset_kern.o

; struct iphdr* ip = (void*)(eth + 1) + l3_offset;
; r2 contains the packet pointer
      42:       r2 += r4

Pada hari-hari awal pengembangan kami dengan XDP dan eBPF, kami mengalami banyak masalah dan karenanya kami dengan senang hati membagikan informasi ini dengan komunitas open source yang lebih luas dengan harapan dapat membantu seseorang di luar sana.

Kami juga senang untuk membagikan informasi ini sebagai pembaruan dan bersemangat untuk memberi tahu Anda berita dan berbagi pembaruan sepanjang perjalanan teknologi kami, dan saat kami merilis fitur dan produk baru, kami akan terus mengabari Anda.

Apa itu Serangan DDoS?

Serangan DDoS

Definisi Serangan DDoS (Distributed Denial of Service)

Serangan DDoS (Distributed Denial of Service) adalah upaya jahat untuk membuat layanan online tidak tersedia bagi penggunanya, biasanya dengan menghentikan sementara atau menangguhkan layanan dari server hostingnya.

Serangan DDoS per Detik

Serangan DDoS biasanya diluncurkan dari berbagai perangkat yang gampang dihack, sering didistribusikan secara global dalam apa yang disebut sebagai botnet. Ini berbeda dari serangan denial of service (DoS) lainnya, dalam hal ini menggunakan satu perangkat yang terhubung ke Internet (satu koneksi jaringan) untuk membanjiri target dengan lalu lintas jahat. Nuansa ini adalah alasan utama keberadaan kedua definisi yang agak berbeda ini.

Secara umum, serangan DoS dan DDoS dapat dibagi menjadi tiga jenis:

Serangan Berbasis Volume

Termasuk dengan cara membanjiri UDP, ICMP, dan membanjiri paket palsu lainnya. Tujuan serangan adalah untuk menjenuhkan bandwidth Website yang diserang, dan besarnya diukur dalam bit per detik (Bps).

Serangan Protokol

Termasuk SYN-Flood, serangan paket terfragmentasi, Ping of Death, Smurf DDoS dan banyak lagi. Jenis serangan ini menghabiskan sumber daya server aktual, atau orang-orang dari peralatan komunikasi menengah, seperti firewall dan load balancer, dan diukur dalam paket per detik (Pps).

Serangan Lapisan Aplikasi

Termasuk serangan rendah dan lambat, membanjiri GET / POST, serangan yang menargetkan kerentanan Apache, Windows atau OpenBSD dan banyak lagi. Terdiri dari permintaan yang tampaknya sah dan tidak bersalah, tujuan serangan ini adalah untuk menghancurkan Web Server, dan besarnya diukur dalam Permintaan per detik (Rps).

Jenis serangan DDoS umum

Beberapa jenis serangan DDoS yang paling umum digunakan adalah:

UDP-Flood

UDP-Flood, menurut definisi, adalah setiap serangan DDoS yang membanjiri target dengan paket User Datagram Protocol (UDP). Tujuan serangan adalah membanjiri port acak pada host jarak jauh. Ini menyebabkan Server berulang kali memeriksa aplikasi yang mendengarkan di port itu, dan ketika tidak ada aplikasi ditemukan, maka host membalas dengan paket ICMP ‘Destination Unreachable’. Proses ini menguras sumber daya host, yang pada akhirnya dapat menyebabkan tidak dapat diaksesnya Server tersebut

ICMP (Ping) Flood

Pada prinsipnya, ini mirip dengan UDP-Flood, ICMP-Flood membanjiri sumber daya target dengan paket ICMP Echo Request (ping), umumnya mengirimkan paket secepat mungkin tanpa menunggu balasan. Jenis serangan ini dapat menghabiskan bandwidth keluar dan masuk, karena server korban akan sering berusaha merespons dengan paket ICMP Echo Reply, yang mengakibatkan perlambatan keseluruhan sistem yang signifikan.

SYN Flood

Serangan DDoS SYN Flood

Serangan DDoS SYN-Flood mengeksploitasi kelemahan yang diketahui dalam urutan koneksi TCP (“three-way handshake”), di mana permintaan SYN untuk memulai koneksi TCP dengan host harus dijawab oleh respons SYN-ACK dari host itu, dan kemudian dikonfirmasi oleh respons ACK dari pemohon. Dalam skenario SYN-Flood, pemohon mengirim beberapa permintaan SYN, tetapi tidak menanggapi respon dari SYN-ACK, atau mengirim permintaan SYN dari alamat IP palsu. Bagaimanapun juga, sistem host terus menunggu pengakuan untuk setiap permintaan yang ada, mengikat sumber daya sampai tidak ada koneksi baru dapat dibuat, dan pada akhirnya menghasilkan penolakan layanan.

Ping of Death

Serangan ping of death (“POD”) melibatkan penyerang yang mengirimkan beberapa ping yang cacat atau jahat ke komputer. Panjang IP paket maksimum (termasuk header) adalah 65.535 byte. Namun, Data Link Layer biasanya memberikan batasan pada ukuran frame maksimum – misalnya 1500 byte melalui jaringan Ethernet. Dalam hal ini, paket IP besar dibagi menjadi beberapa paket IP (dikenal sebagai fragmen), dan host penerima menyusun kembali fragmen IP ke dalam paket lengkap. Dalam skenario Ping of Death, setelah manipulasi konten fragmen berbahaya, penerima berakhir dengan paket IP yang lebih besar dari 65.535 byte saat dipasang kembali. Ini dapat meluap buffer memori yang dialokasikan untuk paket, menyebabkan penolakan layanan untuk paket yang sah.

Slowloris

Slowloris adalah serangan yang sangat tertarget, memungkinkan satu server web untuk menjatuhkan server lain, tanpa mempengaruhi layanan atau port lain pada jaringan target. Slowloris melakukan ini dengan memegang sebanyak mungkin koneksi ke server web target yang terbuka selama mungkin. Ini menyelesaikan dengan membuat koneksi ke server target, tetapi hanya mengirimkan sebagian permintaan. Slowloris secara konstan mengirim lebih banyak header HTTP, tetapi tidak pernah menyelesaikan permintaan. Server yang ditargetkan menjaga setiap koneksi palsu ini terbuka. Ini pada akhirnya melebihi kumpulan koneksi konkurensi maksimum, dan mengarah pada penolakan koneksi tambahan dari klien yang sah.

Amplifikasi NTP

Dalam serangan amplifikasi NTP, pelaku mengeksploitasi server Network Time Protocol (NTP) yang dapat diakses publik untuk membanjiri server yang ditargetkan dengan lalu lintas UDP. Serangan didefinisikan sebagai serangan amplifikasi karena rasio kueri-ke-respons dalam skenario seperti itu berkisar antara 1:20 dan 1: 200 atau lebih. Ini berarti bahwa setiap penyerang yang memperoleh daftar server NTP terbuka (mis., Dengan menggunakan alat seperti Metasploit atau data dari Proyek NTP Terbuka) dapat dengan mudah menghasilkan serangan DDoS volume tinggi, bandwidth tinggi yang menghancurkan.

HTTP Flood

Serangan DDoS HTTP Flood

Dalam serangan DDoS HTTP-Flood, penyerang mengeksploitasi permintaan HTTP GET atau POST yang tampaknya sah untuk menyerang Web Server atau Aplikasi. HTTP Flood tidak menggunakan paket cacat, teknik spoofing atau refleksi, dan membutuhkan bandwidth lebih sedikit daripada serangan lain untuk menjatuhkan situs atau server yang ditargetkan. Serangan itu paling efektif ketika memaksa server atau aplikasi untuk mengalokasikan sumber daya maksimum yang mungkin dalam menanggapi setiap permintaan tunggal.

Solusi Herza.ID menangani Serangan DDoS

Herza.ID secara mulus dan komprehensif melindungi situs web terhadap ketiga jenis serangan DDoS, masing-masing menangani dengan toolset dan strategi pertahanan yang unik:

Serangan Berbasis Volume

Herza.ID melawan serangan-serangan ini dengan menyerapnya dengan jaringan global pusat scrubbing yang berskala, sesuai permintaan, untuk melawan serangan DDoS multi-gigabyte.

Serangan Protokol

Herza.ID mengurangi jenis serangan ini dengan memblokir lalu lintas “buruk” bahkan sebelum mencapai situs tersebut, meningkatkan teknologi identifikasi pengunjung yang membedakan antara pengunjung situs web yang sah (manusia, mesin pencari, dll.) Dan klien otomatis atau jahat.

Serangan Lapisan Aplikasi

Herza.ID mengurangi serangan Lapisan Aplikasi dengan memantau perilaku pengunjung, memblokir bot buruk yang diketahui, dan menantang entitas yang mencurigakan atau tidak dikenal dengan uji JS, tantangan Cookie, dan bahkan CAPTCHA.

Saat ini, Layanan Herza.ID menerapkan beberapa Layanan Anti DDoS & Scrubbing. Dan khusus untuk Layanan VPS Singapore Murah kami, telah termasuk Layanan Anti DDoS & Scrubbing Paket Basic / Standar yang mana dapat menampunng threshold serangan DDoS sampai dengan 5 Gbps.

Dalam semua skenario ini, Herza.ID menerapkan solusi perlindungan DDoS di luar jaringan Anda, artinya hanya lalu lintas yang disaring yang mencapai host Anda. Selain itu, Herza.ID mempertahankan basis pengetahuan ancaman DDoS yang luas, yang mencakup metode serangan baru dan yang muncul. Informasi yang terus diperbarui ini dikumpulkan di seluruh jaringan kami – mengidentifikasi ancaman baru saat mereka muncul, mendeteksi pengguna jahat yang dikenal, dan menerapkan solusi secara real-time di semua jaringan layanan Herza.ID.

Cara Mencegah Serangan DDoS: 5 Tips untuk Menjaga Website Anda Aman

Pencegahan Serangan DDoS

Korban jatuh dari serangan DDoS (Distributed Denial of Service) dapat menjadi bencana besar: Biaya rata-rata untuk organisasi atas serangan DDoS yang berhasil adalah sekitar $ 100.000 untuk setiap jam serangan itu berlangsung, menurut perusahaan keamanan Cloudflare. Itulah kenapa Mencegah Serangan DDoS sangat penting untuk diterapkan.

Ada juga biaya jangka panjang: kehilangan reputasi, degradasi merek, dan pelanggan yang hilang, semuanya mengarah pada bisnis yang hilang. Itu sebabnya perlu menginvestasikan sumber daya yang signifikan untuk mencegah serangan DDoS, atau setidaknya meminimalkan risiko menjadi korban, daripada berkonsentrasi pada bagaimana menghentikan serangan DDoS begitu telah dimulai.

Mencegah Serangan DDoS

Pada artikel pertama dalam seri ini, kami membahas cara mencegah serangan DDoS. Jika Anda cukup beruntung untuk selamat dari serangan – atau cukup bijaksana untuk berpikir ke depan – sekarang kita akan membahas pencegahan serangan DDoS tersebut.

Mengerti Apa itu Serangan DDoS

Serangan volumetrik dasar dari Denial of Service (DoS) sering melibatkan cara membombardir alamat IP dengan volume lalu lintas (traffic) yang besar. Jika alamat IP mengarah ke server Web, traffic yang sah atau bersih tidak akan dapat menghubunginya dan Website menjadi tidak dapat diakses. Jenis lain dari serangan DoS adalah serangan flood, di mana sekelompok server dibanjiri permintaan yang perlu diproses oleh mesin korban. Ini sering dihasilkan dalam jumlah besar oleh skrip yang berjalan pada mesin yang terkompromikan yang merupakan bagian dari botnet, dan mengakibatkan melelahkan sumber daya server korban seperti CPU atau memori.

Serangan DDoS beroperasi pada prinsip yang sama, kecuali traffic jahat yang dihasilkan dari berbagai sumber, meskipun diatur dari satu titik pusat. Fakta bahwa sumber traffic DDoS didistribusikan, membuat pencegahan serangan DDoS jauh lebih sulit daripada mencegah serangan DoS yang berasal dari satu alamat IP.

Cari tahu lebih lanjut tentang Defenisi dan Jenis serangan DDoS

Alasan lain yang mencegah serangan DDoS adalah sebuah tantangan adalah bahwa banyak dari serangan hari ini adalah serangan “amplifikasi”. Ini melibatkan pengiriman paket data kecil ke server yang terkompromi dan dikonfigurasi dengan buruk di seluruh dunia, yang kemudian merespons dengan mengirimkan paket yang jauh lebih besar ke server yang sedang diserang. Contoh yang terkenal dari ini adalah serangan amplifikasi DNS, di mana permintaan DNS 60 byte dapat mengakibatkan respons 4.000 byte terkirim ke korban – sebuah faktor amplifikasi sekitar 70 kali ukuran paket asli.

Baru-baru ini, hacker telah mengeksploitasi fitur server yang disebut memcache untuk meluncurkan serangan amplifikasi memcached, di mana permintaan 15 byte dapat menghasilkan respons 750 kb, faktor amplifikasi lebih dari 50.000 kali ukuran paket asli. Serangan DDoS terbesar di dunia, diluncurkan terhadap Github pada awal tahun 2018, adalah serangan amplifikasi memcached yang memuncak pada 1,35 Tbps data yang mengenai server Github.

Manfaat bagi pelaku jahat dari serangan amplifikasi adalah bahwa mereka hanya membutuhkan bandwidth dalam jumlah terbatas yang mereka miliki untuk melancarkan serangan yang jauh lebih besar pada korban mereka daripada yang bisa mereka lakukan dengan menyerang korban secara langsung.

Baca juga Artikel kami tentang 10 Cara Mengamankan Server Linux Anda.

5 Cara untuk Mencegah Serangan DDoS

1. Bangun redundansi ke dalam infrastruktur Anda

Untuk membuatnya sesulit mungkin bagi penyerang untuk berhasil meluncurkan serangan DDoS terhadap server Anda, pastikan Anda membangun redundansi di beberapa Datacenter dengan sistem load balancing yang baik untuk mendistribusikan traffic di antara mereka. Jika memungkinkan, pusat data ini harus di wilayah yang berbeda, atau setidaknya di berbagai provinsi di negara yang sama.

Agar strategi ini benar-benar efektif, penting untuk Anda memastikan bahwa Data Center terhubung ke jaringan yang berbeda dan bahwa tidak ada hambatan jaringan yang jelas atau titik kegagalan tunggal pada jaringan ini.

Mendistribusikan Server Anda secara geografis dan topografi akan menyulitkan penyerang untuk berhasil menyerang lebih dari sebagian server Anda, membuat server lain tidak terpengaruh dan mampu melakukan setidaknya beberapa lalu lintas tambahan yang biasanya ditangani oleh server yang terpengaruh.

2. Konfigurasikan perangkat keras jaringan Anda terhadap serangan DDoS

Ada sejumlah perubahan konfigurasi perangkat keras sederhana yang dapat Anda lakukan untuk membantu mencegah serangan DDoS.

Misalnya, mengonfigurasi firewall atau router Anda untuk mematikan paket ICMP yang masuk atau memblokir respons DNS dari luar jaringan Anda (dengan memblokir port UDP 53) dapat membantu mencegah serangan volumetrik berbasis DNS dan ping tertentu.

Layanan VPS Singapore Murah dari Herza.ID, telah dilengkapi oleh Paket Standar dari Layanan Anti DDoS kami dengan Scrubbing Thresholds Volumetric Attack sampai 5 Gbps.

3. Menggunakan perangkat keras dan perangkat lunak anti-DDoS

Server Anda harus dilindungi oleh firewall jaringan dan firewall aplikasi web yang lebih khusus, dan Anda mungkin harus menggunakan load balancers juga. Banyak vendor perangkat keras sekarang menyertakan perlindungan perangkat lunak terhadap serangan protokol DDoS seperti serangan SYN Flood, misalnya, dengan memantau berapa banyak koneksi tidak lengkap yang ada dan membilasnya ketika jumlahnya mencapai nilai ambang batas yang dapat dikonfigurasi.

Modul perangkat lunak tertentu juga dapat ditambahkan ke beberapa perangkat lunak server web untuk menyediakan beberapa fungsi pencegahan DDoS. Sebagai contoh, Apache 2.2.15 dikirimkan dengan modul yang disebut mod_reqtimeout untuk melindungi dirinya dari serangan lapisan aplikasi seperti serangan Slowloris, yang membuka koneksi ke server web dan kemudian menahannya terbuka selama mungkin dengan mengirimkan permintaan sebagian hingga server tidak dapat menerima lagi koneksi baru.

4. Menggunakan alat perlindungan DDoS

Banyak vendor keamanan termasuk NetScout Arbor, Fortinet, Check Point, Cisco dan Radware menawarkan peralatan yang berada di depan firewall jaringan dan dirancang untuk memblokir serangan DDoS sebelum serangan tersebut masuk dalam jaringan kita.

Mereka melakukan ini menggunakan sejumlah teknik, termasuk melakukan baseline perilaku lalu lintas dan kemudian memblokir lalu lintas abnormal, dan memblokir lalu lintas berdasarkan tanda serangan yang dikenal.

Kelemahan utama dari jenis perlindungan serangan DDoS ini adalah bahwa peralatan itu sendiri terbatas dalam jumlah traffic throughput yang dapat mereka tangani. Sementara peralatan canggih mungkin dapat memeriksa traffic yang masuk dengan kecepatan hingga 80 Gbps, serangan DDoS saat ini dapat dengan mudah menjadi urutan besarnya lebih besar dari ini.

5. Lindungi DNS Server Anda

Jangan lupa bahwa aktor jahat mungkin dapat membuat Web Server Anda offline dengan melakukan DDoS kepada server DNS Anda. Untuk alasan itu, penting bahwa server DNS Anda memiliki redundansi, dan menempatkannya di Data Center yang berbeda di belakang load balancers juga merupakan ide bagus. Solusi yang lebih baik mungkin adalah pindah ke penyedia DNS berbasis cloud yang dapat menawarkan bandwidth tinggi dan beberapa titik kehadiran di Data Center di seluruh dunia. Layanan ini dirancang khusus dengan mempertimbangkan pencegahan DDoS.

Mudah-mudahan informasi diatas dapat memberikan kita wawasan tambahan dalam bagaimana cara melindungi Server atau Website kita dari serangan DDoS yang sangat berbahaya.