Elakkan serangan DDoS dengan iptables Ia mempunyai banyak cara untuk melakukannya, mengikut ukuran paket, dengan had sambungan, dll. Di sini kita akan melihat bagaimana, dengan cara yang mudah, intuitif dan dijelaskan dengan baik kita akan mencapai objektif, dan juga menghentikan serangan lain yang menjengkelkan pada pelayan kita.
# Iptables
IPT="/sbin/iptables"
ETH="eth0"
#Todo el tráfico syn
$IPT -P INPUT DROP
$IPT -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A INPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A INPUT -m state --state INVALID -j DROP
$IPT -P OUTPUT DROP
$IPT -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A OUTPUT -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A OUTPUT -m state --state INVALID -j DROP
$IPT -P FORWARD DROP
$IPT -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -A FORWARD -p tcp ! --syn -j REJECT --reject-with tcp-reset
$IPT -A FORWARD -m state --state INVALID -j DROP
$IPT -A INPUT -i lo -j ACCEPT
$IPT -A OUTPUT -o lo -j ACCEPT
$IPT -A FORWARD -i lo -o lo -j ACCEPT
#Cuando sube la carga
$IPT -A INPUT -p tcp --syn -j REJECT --reject-with icmp-port-unreachable
#La que mejor va
$IPT -N syn-flood
$IPT -A syn-flood -m limit --limit 100/second --limit-burst 150 -j RETURN
$IPT -A syn-flood -j LOG --log-prefix "SYN flood: "
$IPT -A syn-flood -j DROP
#Igual que el de arriba pero muy raw
$IPT -N syn-flood
$IPT -A INPUT -i eth0:2 -p tcp --syn -j syn-flood
$IPT -A syn-flood -m limit --limit 1/s --limit-burst 4 -j RETURN
$IPT -A syn-flood -j DROP
$IPT -A INPUT -p tcp -m tcp --tcp-flags SYN,RST,ACK SYN -m limit --limit 1/sec -j ACCEPT
$IPT -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK RST -m limit --limit 1/sec -j ACCEPT
#Descartar paquetes mal formados
$IPT -N PKT_FAKE
$IPT -A PKT_FAKE -m state --state INVALID -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags ALL ACK,RST,SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,FIN SYN,FIN -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 --tcp-flags SYN,RST SYN,RST -j DROP
$IPT -A PKT_FAKE -p tcp --dport 80 ! --syn -m state --state NEW -j DROP
$IPT -A PKT_FAKE -f -j DROP
$IPT -A PKT_FAKE -j RETURN
#Syn-flood
$IPT -N syn-flood
$IPT -A INPUT -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A FORWARD -i eth+ -p tcp --tcp-flags SYN,ACK,FIN,RST RST -j syn-flood
$IPT -A syn-flood -m limit --limit 4/s --limit-burst 16 -j RETURN
$IPT -A syn-flood -m limit --limit 75/s --limit-burst 100 -j RETURN -A syn-flood -j LOG --log-prefix "SYN FLOOD " --log-tcp-sequence --log-tcp-options --log-ip-options -m limit --limit 1/second
$IPT -A syn-flood -j DROP
#Requiere módulo "recent"
modprobe ipt_recent
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --set
$IPT -A INPUT -p tcp --dport 80 -m state --state NEW -m recent --update --seconds 10 --hitcount 10 -j DROP
# explicación:
# Se añade cada ip que se conecte a la tabla de recent
# Por por cada ip en la tabla de recent si hace mas de x hits en x segundos, se dropea.
$IPT -I INPUT -p tcp --syn -m recent --set
$IPT -I INPUT -p tcp --syn -m recent --update --seconds 10 --hitcount 30 -j DROP
#UDP Flood
$IPT -A OUTPUT -p udp -m state --state NEW -j ACCEPT
$IPT -A OUTPUT -p udp -m limit --limit 100/s -j ACCEPT
$IPT -A OUTPUT -p udp -j DROP
Apa yang dilakukannya ialah mengira bilangan paket SYN (Permulaan sambungan TCP) untuk setiap alamat IP dalam 10 saat terakhir. Sekiranya mencapai 30, ia akan membuang paket tersebut sehingga sambungan tidak akan terjalin (TCP akan mencuba semula beberapa kali, apabila jatuh di bawah had yang dapat ditetapkan).
#Evitando Layer7 DoS limitando a 80 la máxima cantidad de conexiones
$IPT -A INPUT -p tcp --dport 80 -m hashlimit --hashlimit-upto 50/min --hashlimit-burst 80 --hashlimit-mode srcip --hashlimit-name http -j ACCEPT
$IPT -A INPUT -p tcp --dport 80 -j DROP
#Permitir el ping, pero a 1 paquete por segundo, para evitar un ataque ICMP Flood
$IPT -A INPUT -p icmp -m state --state NEW --icmp-type echo-request -m limit --limit 1/s --limit-burst 1 -j ACCEPT
$IPT -A INPUT -p icmp -j DROP
#Evitando que escaneen la máquina
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,SYN,RST,PSH,ACK,URG NONE –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,FIN SYN,FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags SYN,RST SYN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags FIN,RST FIN,RST –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,FIN FIN –j DROP
$IPT -A INPUT -i $ETH -p tcp -m tcp --tcp-flags ACK,URG URG –j DROP
Inilah skrip dalam Tampal kami: Tampal.DesdeLinux.net (Skrip sebelumnya)
Rujukan:
- Cuba menghentikan DDoS (Forum ElHacker.net)
- Bagaimana untuk mengelakkan serangan DDoS dan bagaimana mengalaminya di pelayan sebenar? (Forum ElHacker.net)
- Skrip dengan syarat (MaliByte.net)
- Contoh yang sangat baik (LinuxGuruz.org)
- Mencegah serangan DDoS (LinuxSecurity.com)
- Mengeras TCP / IP Stack untuk mengelakkan serangan (KeselamatanFokus.com)
Dan inilah sebabnya saya meletakkan tutorial sebelum serangan DDoS 😉
Untuk meletakkan / menjelaskan alasan atau masalah (tutorial sebelumnya), dan juga memberi anda penyelesaian (tutorial ini) 🙂
perfecto.
Gula-gula kanak-kanak ...
Artikel yang bagus.
Dua sen saya:
Dalam kes paket UDP, bendera SYN tidak wujud kerana merupakan protokol tanpa kawalan keadaan. Walau bagaimanapun, secara paradoks, keadaan BARU dan DITETAPKAN wujud kerana iptables secara dalaman membawa jadual untuk tujuan ini.
Sebaliknya, pada pendapat saya, lebih baik menggunakan destinasi DROP dan bukannya REJECT, kerana dua sebab: pertama, dengan menolak seseorang memberi maklumat kepada kemungkinan penyerang, dan juga komputer menggunakan sebahagian dari sambungannya untuk menghantar pemberitahuan kepada pasukan penyerang.
Perkara lain adalah bahawa dalam kasus protokol ICMP (dan secara umum) lebih mudah mengatur permintaan dan respons, kerana kita mungkin tertarik pada suatu ketika untuk melakukan ping pada diri kita sendiri, dan dengan mengaktifkan fungsi ini, seseorang dapat menggunakan botnet dan memalsukan alamat sumber ping banyak PC yang dikompromikan ini tanpa henti, dan respons akan masuk ke pelayan kami, runtuh jika tidak ada had yang dikenakan.
Saya biasanya membenarkan jenis ICMP 0,3,8,11 dan 12 dengan had input satu saat dan ledakan maksimum dua atau empat maksimum, dan semua yang lain diserahkan kepada DROP.
Kenyataannya, kecuali protokol TCP yang dapat diatur dengan lebih baik, semua protokol yang lain harus dilindungi dengan tindakan anti-DDoS melalui pertandingan jenis baru-baru ini. Mengenai hal ini, sebagai rasa ingin tahu, pengarang modul ini suka meletakkan kemas kini terlebih dahulu dan kemudian set.
Iptables benar-benar sangat fleksibel dan kuat, setakat ini satu-satunya perkara yang saya cadangkan untuk dilakukan dan saya belum berjaya (walaupun saya hampir mencapainya), adalah untuk membolehkan modul psd untuk mengelakkan portcans, tetapi walaupun dengan semua yang telah saya pelajari alat, saya rasa saya belum menggaru permukaannya. 😉
Bagaimanapun, di dunia ini anda mesti selalu belajar.
Titik bagus Hugo, yang ada dalam daftar untuk glosari kami: D, seperti biasa, belajar ...
Ngomong-ngomong, saya sudah dapat modul psd untuk saya. Masalahnya ialah ia pada awalnya bergantung pada fungsi kernel yang tidak digunakan lagi bersama dengan patch-o-matic, jadi ia dikeluarkan dari modul bawaan di netfilter secara lalai. Jadi sekarang di Debian untuk menggunakan pelanjutan psd, pertama anda harus melakukan ini:
aptitude -RvW install iptables-dev xtables-addons-{common,source} module-assistant
module-assistant auto-install xtables-addons-source
Kemudian dapat digunakan secara normal, sesuai dengan petunjuk:
man xtables-addons
Hugo, mengapa anda tidak menerbitkan iptables.sh dengan cadangan anda untuk memperbaiki skrip siaran ini (yang bagus) termasuk psd
Terima kasih
Artikel yang sangat baik, iptables yang sangat baik dan penjelasan yang sangat baik dari @hugo. Saya semakin yakin bahawa masih banyak yang perlu saya pelajari.
Bukan anda sahaja, sekurang-kurangnya saya ... saya kehilangan satu juta ... 😀
Halo semua, dan terima kasih atas sumbangannya, tetapi yang sebenarnya adalah bahawa kami putus asa, kami tidak tahu apa yang harus dilakukan sekarang, dan kami datang kepada anda untuk mengetahui jenis iptables yang kami tahu bahawa anda adalah pakar dalam sistem.
Saya adalah pemimpin sebuah komuniti di Sepanyol sumber serangan balas dan kami adalah salah satu dari sedikit yang masih hampir tidak berdiri, kami menerima serangan berterusan dari mesin dan serangan lain pada selang masa, yang berterusan menghilangkan sedikit tetapi mengecewakan pelayan sedikit tetapi yang memerlukan masa lebih banyak kerosakan. Mesin kami dipasang pada jarak 6.2 centos
dan kami mempunyai tcadmin untuk mengawal pelayan. Anda boleh membuat kita konfigurasi yang dapat menghentikan serangan semacam ini walaupun sedikit, kita sudah putus asa,
dan kita tidak tahu untuk berpaling, kita tahu bahawa ada dua botnet, satu buatan sendiri dan yang lain dibayar untuk masa dan tenaga. Oleh itu, kami telah melakukan serangan kejam seperti ini selama hampir satu tahun, jika anda dapat menolong kami, kami akan terus bersyukur kerana sekarang ini tidak berkekalan, saya gemar mengkonfigurasi pelayan seperti hoobie, dan saya bukan anak yang saya jamin tetapi ini banyak bagi saya. Sekiranya anda mahu ts3 saya bercakap atau apa-apa, saya ingin anda membantu kami, jadi kami akan menghantar hasilnya dan semua perkara yang diselesaikan untuk kebaikan banyak orang, ini akan menjadi blog paling banyak dikunjungi pada tahun ini yang saya jamin kepada anda kerana luar biasa bagaimana ia mengganggu serangan ini ddos. Oleh kerana kami cuba mengkonfigurasinya sendiri dan menyekat akses ke mesin, kami harus memformatnya dari bios jadi bayangkan bagaimana keadaan kami.
Saya menghantar ucapan mesra. Dan tahniah saya untuk blog yang hilang, banyak orang mempunyai yang dikemas kini dengan yang satu ini. -Miguel Angel-
Helo apa khabar 🙂
Tulis ke e-mel saya, kami dengan senang hati akan membantu anda 😀 -» kzkggaara[@]desdelinux[.]bersih
Halo kawan-kawan, sehingga sekarang saya bekerja, ambil skrip ini, bagus sekali ... hanya satu keraguan: Adakah modul "baru-baru ini" tidak mengurangkan prestasi?
Salam - Terima kasih / Siapa yang menyukai anda?
Sumbangan yang sangat baik rakan saya, saya akan memasukkan anda dalam rujukan video tutorial yang sedang kami pasang, pelukan dari Costa Rica
Hello,
Tidak boleh menggunakan skrip di beberapa port?
Saya mempunyai pelayan permainan dan saya menyerang kedua-dua web dan port pelayan permainan.
Sesuatu ucapan.