Mengapa NginX dan Lighttpd tidak terpengaruh oleh Slowloris?


23

Saya sedang menyelidiki kerentanan terhadap Slowloris dan saya pikir saya mengerti bagaimana dan mengapa serangan semacam ini bekerja.

Yang tidak saya mengerti adalah mengapa Lighttpd dan NginX tidak terpengaruh (sesuai dengan artikel yang sama seperti yang tertaut di atas). Apa yang membuat mereka begitu berbeda?

Jawaban:


25

Apache memiliki teori 'Klien Maksimum'

Itu adalah jumlah koneksi simultan yang bisa ditangani. IE jika server apache memiliki batas 100 klien maks, dan setiap permintaan membutuhkan waktu 1 detik untuk menyelesaikannya, ia dapat menangani maksimum 100 permintaan per detik.

Aplikasi seperti SlowLoris akan membanjiri server dengan koneksi, dalam contoh kami jika SlowLoris mengirim 200 koneksi per detik, dan Apache hanya dapat menangani 100 koneksi per detik, antrian koneksi akan terus bertambah besar dan menggunakan semua memori pada mesin yang membawanya ke sebuah rintangan. Ini mirip dengan cara kerja LOIC Anonymous.

NGINX dan Lighttpd (Antara lain) tidak memiliki koneksi maksimal, mereka menggunakan utas pekerja, jadi, secara teoritis, tidak ada batasan jumlah koneksi yang bisa mereka tangani.
Jika Anda memantau koneksi Apache Anda, Anda akan melihat bahwa sebagian besar koneksi yang aktif adalah data 'Mengirim' atau 'Menerima' dari klien. Di NGINX / Lighttpd mereka mengabaikan permintaan ini dan membiarkannya berjalan di latar belakang, tidak menggunakan sumber daya sistem, dan hanya perlu memproses koneksi dengan sesuatu yang terjadi (tanggapan Parsing, membaca data dari server backend dll.)

Saya sebenarnya menjawab pertanyaan serupa sore ini, jadi informasi di sana mungkin juga menarik bagi Anda. Mengurangi permintaan antrian Apache


Jawaban yang bagus dan sangat rinci. +1
Oldskool

6
Koreksi kecil: nginx tidak menggunakan utas pekerja untuk mencapai jumlah koneksi yang tinggi. Dari nginx.org : "Nginx tidak bergantung pada utas untuk menangani permintaan. Alih-alih, ia menggunakan arsitektur event-driven (asynchronous) yang jauh lebih skalabel"
Hari

2
Meskipun ada kemungkinan efek samping, maksud Slowloris bukanlah untuk "menggunakan semua memori pada mesin", tetapi lebih menguras kapasitas koneksi maksimum sehingga koneksi berikutnya tidak berhasil.
wulfgarpro

@Day Nginx memang menggunakan utas pekerja untuk mendukung operasi asinkronnya. Skema arsitektur aplikasi yang berguna disediakan di sini: aosabook.org/en/nginx.html#fig.nginx.arch
Terry Burton

13

Nginx sebenarnya rentan terhadap serangan slowloris. Sumber daya yang langka adalah jumlah maksimum koneksi pekerja simultan. Angka ini dapat dihitung sebagai pekerja_koneksi * proses_karyawan dan sama dengan 512 dalam konfigurasi nginx default. Jadi, cukup mudah untuk menghapus nginx yang tidak terlindungi dengan alat seperti goloris .


golorissepertinya alat yang saya butuhkan untuk memastikan implementasi / pengaturan saya berfungsi seperti yang diharapkan!
Alexis Wilke

8

Komentar valyala harus diterima sebagai jawabannya.

Sebagian besar server nginx menggunakan konfigurasi default dan karenanya rentan terhadap serangan slowloris. Saya telah menggunakan slowloris untuk menghapus beberapa situs nginx teman saya hanya dengan menggunakan laptop saya dan biasanya butuh waktu kurang dari 5 menit (teman-teman saya menantang saya untuk melakukannya).

Seperti yang dinyatakan valyala, secara teknis, nginx tidak rentan terhadap slowloris, tetapi konfigurasi default membatasi jumlah maksimum koneksi, jadi ketika koneksi melebihi angka itu, nginx menjatuhkan permintaan baru, yang menghasilkan penolakan layanan.

Cara-cara yang diketahui untuk melindungi nginx dari slowloris termasuk membatasi jumlah koneksi dari IP yang sama, dan meningkatkan konfigurasi pekerja_koneksi. Serangan masih bisa bekerja, tetapi semakin sulit (mungkin butuh lebih dari 5 menit?: D)

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.