Bagaimana saya bisa mencegah serangan DDOS di Amazon EC2?

46

Salah satu server yang saya gunakan di-host di cloud Amazon EC2. Setiap beberapa bulan kami tampaknya memiliki serangan DDOS pada server ini. Ini sangat memperlambat server. Setelah sekitar 30 menit, dan kadang-kadang reboot nanti, semuanya kembali normal.

Amazon memiliki grup keamanan dan firewall, tetapi apa lagi yang harus saya miliki di server EC2 untuk mengurangi atau mencegah serangan?

Dari pertanyaan serupa yang saya pelajari:

  • Batasi laju permintaan / menit (atau detik) dari alamat IP tertentu melalui sesuatu seperti tabel IP (atau mungkin UFW?)
  • Memiliki sumber daya yang cukup untuk bertahan dari serangan seperti itu - atau -
  • Mungkin membangun aplikasi web sehingga elastis / memiliki penyeimbang beban elastis dan dapat dengan cepat ditingkatkan untuk memenuhi permintaan yang tinggi)
  • Jika menggunakan mySql, atur koneksi mySql agar berjalan secara berurutan sehingga permintaan yang lambat tidak akan menghambat sistem

Apa lagi yang saya lewatkan? Saya ingin informasi tentang alat khusus dan opsi konfigurasi (sekali lagi, menggunakan Linux di sini), dan / atau apa pun yang khusus untuk Amazon EC2.

ps: Catatan tentang pemantauan untuk DDOS juga akan disambut - mungkin dengan nagios? ;)

cwd
sumber
Mencegahnya hampir tidak mungkin tetapi Anda tentu bisa mengurangi kerentanan Anda.
Belmin Fernandez
1
Sangat benar. Dan saya akan senang dengan jawaban yang membahas penurunan kerentanan :)
cwd
Untuk mengetahui cara mencegahnya, orang perlu tahu lebih banyak tentang sifat serangan itu. Apakah itu banjir sin? Apakah ada halaman web yang mahal yang sedang dipukul? apakah itu layanan lain?
rebus
Saya pikir itu adalah halaman web tetapi tidak yakin. Saya juga akan menerima kiat tentang monitor dan menyelidiki ini. Beberapa log akses telah dihapus - apa lagi yang harus saya cari?
cwd
dan sebenarnya, jika reboot memperbaiki masalah, maka saya tidak tahu apa itu, kecuali mungkin server Anda mengalami kebocoran sumber daya di suatu tempat. Memulai ulang tentu saja tidak bisa menghentikan DDoS sendiri. Bagaimana Anda tahu ini DDoS?
rebus

Jawaban:

36

DDOS (atau bahkan DOS), pada intinya, adalah sumber daya yang habis. Anda tidak akan pernah bisa menghilangkan hambatan, karena Anda hanya bisa mendorongnya lebih jauh.

Di AWS, Anda beruntung karena komponen jaringan sangat kuat - akan sangat mengejutkan mengetahui bahwa tautan hulu sudah jenuh. Namun, CPU, serta disk I / O, jauh lebih mudah untuk banjir.

Tindakan terbaik adalah memulai beberapa pemantauan (lokal seperti SAR, jarak jauh dengan Nagios dan / atau ScoutApp) dan beberapa fasilitas logging jarak jauh (Syslog-ng). Dengan pengaturan seperti itu, Anda akan dapat mengidentifikasi sumber daya mana yang jenuh (soket jaringan karena Syn banjir; CPU karena kueri atau perayap SQL yang buruk; ram karena ...). Jangan lupa untuk membuat partisi log Anda (jika Anda tidak mengaktifkan logging jarak jauh) pada volume EBS (untuk kemudian mempelajari log).

Jika serangan datang melalui halaman web, log akses (atau yang setara) bisa sangat berguna.

CloudWeavers
sumber
Anda mungkin ingin memeriksa bagian "berbasis-beban" dari serverfault.com/a/531942/87017
Pacerier
24

Anda juga dapat lebih jauh mengisolasi instance EC2 Anda dengan meletakkannya di belakang Elastic Load Balancer dan hanya menerima lalu lintas dari instance ELB. Ini menempatkan lebih banyak tanggung jawab di Amazon untuk mengelola serangan DDOS.

Saya berasumsi bahwa Anda masih akan memiliki SSH terbuka untuk semua, sehingga kemungkinan Anda masih akan melihat beberapa lalu lintas nakal masuk ke sana, kecuali Anda dapat mengunci port itu ke beberapa IP statis. Anda dapat mengubah port SSHd menjadi sesuatu yang lebih tidak jelas (mis., Selain 22) untuk lebih mengurangi hit DDOS (kebanyakan bot hanya memeriksa port yang diketahui).

Saya juga akan menyebutkan fail2ban, yang dapat memonitor log dan memodifikasi sementara tabel ip Anda untuk memblokir IP tertentu (misalnya, jika ada 6 upaya gagal untuk SSH ke host Anda dari satu alamat IP, ia dapat memblokir IP itu selama 30 menit atau lebih). Perlu diingat bahwa (seperti komentar Jordan dengan cermat) fail2ban mungkin tidak sesuai untuk memblokir lalu lintas yang diproksi (misalnya, dari ELB) karena akan memblokir IP proxy, tidak harus IP remote asli.

Saya belum menggunakannya, tetapi Apache mod_evasive mungkin juga layak diselidiki; Namun, itu mungkin memiliki kelemahan yang sama dengan fail2ban ketika datang ke pemblokiran berbasis IP.

jstell
sumber
+1 terima kasih. sebenarnya saya memang ssh ditutup;)
cwd
1
Perhatikan bahwa jika Anda berada di belakang ELB, fail2ban tidak akan berfungsi - karena umumnya berfungsi dengan memblokir IP di iptables. Tetapi IP selalu akan menjadi milik ELB Anda. Saya menyadari bahwa setelah mencoba menambahkan fail2ban ke pengaturan saya. Ini tidak berfungsi jika pengguna hanya mengakses melalui ELB.
Jordan Reiter
5

Jika Anda menggunakan Apache, saya sarankan menggunakan mod_security . Dikemas oleh sebagian besar vendor, aturan inti yang ditetapkan melakukan pekerjaan yang fantastis.

Langkah pengerasan lainnya adalah membatasi permintaan di tingkat server web. Nginx ., Apache dapat membatasi dan membatasi permintaan masuk.

Shyam Sundar CS
sumber
luar biasa - itu terlihat seperti opsi fantastis, terima kasih!
cwd
2

Solusi yang saya gunakan untuk memblokir aktivitas buruk waktu nyata IP keluar dari AWS dan yang lainnya adalah ini ... Di CSF Firewall saya dalam konfigurasi untuk LFD Blocklists, saya menggunakan daftar yang ditemukan di sini - http://myip.ms/browse/blacklist/ Blacklist_IP_Blacklist_IP_Addresses_Live_Database_Real-time

Unduh Daftar Hitam untuk CSF Firewall » http://myip.ms/files/blacklist/csf/latest_blacklist.txt

Tidak ada lagi lalu lintas AWS yang menjengkelkan.

UlyssesGrump
sumber
1
Ini tidak menjawab pertanyaan.
kasperd
2

Saya bias, karena saya bekerja untuk jaringan pengiriman konten sebagai insinyur Presales keamanan.

Namun, memanfaatkan solusi mitigasi Ddos pada jaringan pengiriman konten memastikan bahwa Anda tidak pernah kehabisan sumber daya di tempat asalnya. Ini mirip dengan menempatkan penyeimbang beban F5 di depan situs Anda, tetapi menyebar ke ribuan lokasi di seluruh dunia.

Sebuah cdn yang baik akan memungkinkan Anda untuk menyelubungi sumber dengan daftar putih yang Anda pasang di firewall aws. Jadi ketika penyerang melakukan pengintaian mereka di Amazon, alamat IP Anda akan kosong karena semuanya akan diblokir.

Jadi serangan Ddos diblokir ketika lalu lintas mencapai titik sedekat mungkin dengan penyerang. Ini memastikan Anda mengurangi serangan Ddos sejauh mungkin dari aset yang Anda coba lindungi.

Sebuah cdn yang baik juga dapat melakukan pemeriksaan kesehatan dan kegagalan lalu lintas ke lokasi lain misalnya ego lain di pantat, Azure, ruang rak, lapisan lunak, dc fisik dll. Itu juga harus memiliki WAF untuk memastikan Anda dapat memblokir serangan lapisan aplikasi kelelahan seperti RUDY, slowpost, slowloris dan juga sqli, xss, rfi, lfi dll.

Secara default, cdn juga memblokir serangan lapisan jaringan seperti tetesan air mata, serangan icmp, synfloods dll. Sebuah cdn dapat memitigasi serangan Ddos karena trey memiliki kapasitas yang sangat besar untuk menerima permintaan, menyaring lalu lintas yang buruk dan meneruskan lalu lintas yang baik. Jadi memperkuat serangan seperti ntp, DNS, ssdp, chargen dan snum volumetric dapat diblokir.

Serangan terbesar yang saya lihat sampai saat ini adalah 321gbps pada Juli 2014. Selama serangan ini juga ada serangan protokol DNS pada 20gbps. Jadi, Anda perlu memastikan infrastruktur DNS Anda juga tangguh untuk menahan sejumlah besar permintaan.

Dari deskripsi yang Anda berikan, sepertinya Anda mengalami serangan yang melelahkan, di mana penyerang membuka banyak utas sehingga semua utas dikonsumsi di server web, server aplikasi atau firewall. Ini mirip dengan sesuatu seperti tiang lambat, slowloris atau RUDY.

Untuk memblokir terhadap serangan kelelahan lapisan aplikasi, Anda harus mendapatkan firewall aplikasi web (WAF). Firewall jaringan tipikal (termasuk firewall Amazon dan firewall generasi berikutnya) tidak akan dapat memblokirnya. Firewall kerja yang dikirim hari ini hanya dapat memblokir sekitar 30% dari semua serangan hari ini (November 2014).

James
sumber
1

Inilah alat yang saya buat untuk mereka yang ingin menggunakan Fail2Ban di aws dengan apache, ELB, dan ACL: https://github.com/anthonymartin/aws-acl-fail2ban

Ini berguna untuk mendeteksi dan mencegah serangan DoS dan penyalahgunaan instance EC2.

Anthony Martin
sumber
0

Config server firewall adalah yang terbaik yang pernah saya lihat untuk mitigasi DDoS dalam perangkat lunak berbasis VM di EC2. Jika Anda menggabungkan fitur syslog, ia dapat melindungi dari lingkungan yang seimbang.

http://configserver.com/cp/csf.html

Jeff
sumber
Selamat Datang di Kesalahan Server! Sementara ini secara teoritis dapat menjawab pertanyaan, akan lebih baik untuk memasukkan bagian-bagian penting dari jawaban di sini, dan menyediakan tautan untuk referensi.
Scott Pack