Artikel ini adalah artikel cermin dari terjemahan mesin, silakan klik di sini untuk melompat ke artikel aslinya.

Melihat: 13773|Jawab: 0

[Tutorial Keselamatan] Serangan SYN Flood, pertahanan cookie SYN, dan modifikasi parameter kernel untuk Linux/FreeBSD

[Salin tautan]
Diposting pada 27/10/2014 21.37.19 | | |

PeretasIni adalah karir yang diinginkan dan menjanjikan. Saya menghargai peretas yang baik dan membenci peretas yang buruk. Yang disebut peretas jahat adalah tipe orang yang menyebabkan seseorang di sisi lain bekerja lembur.

    Serangan SYN Flood adalah serangan penolakan layanan yang khas. Yang disebut denial of service attack adalah untuk secara tidak langsung mencapai tujuan serangan dengan membuat host atau jaringan korban tidak dapat memberikan layanan yang baik. Peretas suka memainkan ini untuk menunjukkan bahwa mereka level, cakap, dan berani dengan membuat pihak lain bekerja lembur, tetapi pada kenyataannya, itu bukan apa-apa.

   1: Apa itu serangan Banjir SYN?

    Serangan SYN Flood memanfaatkan proses jabat tangan tiga arah dari protokol TCP di IPv4. Protokol ini menetapkan bahwa jika satu ujung ingin memulai koneksi TCP ke ujung lainnya, pertama-tama perlu mengirim paket TCP SYN (sinkronisasi) ke pihak lain, dan pihak lain mengirim paket TCP SYN + ACK kembali setelah menerimanya, dan kemudian inisiator mengirim paket TCP ACK (ACKnowledge Character) kembali, sehingga ketiga jabat tangan selesai.

    Dalam proses di atas, ada beberapa konsep penting:

    Antrean tidak terhubung: Dalam protokol jabat tangan tiga arah, server mempertahankan antrean yang tidak terhubung yang membuka entri untuk setiap paket SYN klien (syn=j) yang menunjukkan bahwa server telah menerima paket SYN dan mengeluarkan konfirmasi kepada pelanggan, menunggu paket konfirmasi pelanggan. Koneksi yang diidentifikasi oleh entri ini berada dalam keadaan Syn_RECV di server, dan ketika server menerima paket konfirmasi dari pelanggan, entri dihapus dan server memasuki status ESTABLISHED. Dengan kata lain, ketika server TCP menerima paket permintaan TCP SYN, sebelum mengirim paket TCP SYN+ACK kembali ke klien TCP, server TCP harus terlebih dahulu mengalokasikan area data untuk melayani koneksi TCP yang dibentuk oleh tangan ini. Umumnya, status koneksi ketika paket SYN diterima tetapi paket ACK belum diterimaKoneksi setengah terbuka(Koneksi Setengah Terbuka)。

    Parameter backlog: Menunjukkan jumlah maksimum antrean yang tidak terhubung.

    Jumlah transmisi ulang SYN-ACK: Setelah server mengirimkan paket SYN-ACK, jika paket konfirmasi pelanggan tidak diterima, server melakukan transmisi ulang pertama, menunggu jangka waktu tertentu dan tidak menerima paket konfirmasi pelanggan, dan melakukan transmisi ulang kedua, jika jumlah transmisi ulang melebihi jumlah maksimum transmisi ulang yang ditentukan oleh sistem, sistem menghapus informasi koneksi dari antrean semi-koneksi. Perhatikan bahwa waktu tunggu untuk setiap repass belum tentu sama.

    Waktu bertahan hidup semi-terhubung: Mengacu pada waktu maksimum entri dalam antrean semi-koneksi bertahan, yaitu waktu maksimum dari saat layanan menerima paket SYN hingga saat paket dikonfirmasi tidak valid, dan nilai waktu adalah jumlah waktu tunggu maksimum untuk semua paket permintaan transmisi ulang. Terkadang kita juga menyebut waktu bertahan hidup semi-terhubung, SYN_RECV waktu bertahan hidup.

    Dalam serangan banjir SYN yang paling umum, penyerang mengirimkan sejumlah besar paket TCP SYN ke korban dalam waktu singkat, di mana penyerang adalah klien TCP dan korbannya adalah server TCP. Menurut deskripsi di atas, korban akan menetapkan zona data tertentu untuk setiap paket TCP SYN, selama paket SYN memiliki alamat sumber yang berbeda (yang akan mudah dipalsukan oleh penyerang). Ini akan memberi banyak tekanan pada sistem server TCP dan akhirnya menyebabkan sistem tidak berfungsi dengan baik.

    2. Prinsip cookie SYN

    Salah satu cara untuk mencegah serangan SYN Flood secara efektif adalah cookie SYN. Alasan Cookie SYN D. Ditemukan oleh J. Bernstain dan Eric Schenk.

    Cookie SYN adalah modifikasi dari protokol jabat tangan tiga arah sisi server TCP untuk mencegah serangan SYN Flood.Prinsipnya adalah:Ketika server TCP menerima paket TCP SYN dan mengembalikan paket TCP SYN+ACK, server TCP tidak mengalokasikan area data khusus, tetapi menghitung nilai cookie berdasarkan paket SYN ini. Saat paket TCP ACK diterima, server TCP memeriksa legitimasi paket TCP ACK berdasarkan nilai cookie tersebut. Jika legal, area data khusus dialokasikan untuk menangani koneksi TCP di masa mendatang.

    Mari kita bicara tentang cara mengkonfigurasi parameter kernel untuk mengimplementasikan cookie SYN di Linux dan FreeBSD

    Tiga: Pengaturan Linux

    Jika konfigurasi server Anda tidak baik, jumlah soket TIME_WAIT TCP mencapai 20.000 atau 30.000, dan server dapat dengan mudah diseret sampai mati. Dengan memodifikasi parameter kernel Linux, jumlah soket TIME_WAIT di server dapat dikurangi.

    TIME_WAIT dapat dilihat dengan perintah berikut:

  1. 以下是代码片段:
  2. netstat -an | grep "TIME_WAIT" | wc -l
Salin kode

Di Linux, seperti CentOS, Anda dapat mencapainya dengan memodifikasi file /etc/sysctl.conf.

    Tambahkan baris berikut:

  1. 以下是代码片段:
  2. net.ipv4.tcp_fin_timeout = 30
  3. net.ipv4.tcp_keepalive_time = 1200
  4. net.ipv4.tcp_syncookies = 1
  5. net.ipv4.tcp_tw_reuse = 1
  6. net.ipv4.tcp_tw_recycle = 1
  7. net.ipv4.ip_local_port_range = 1024    65000
  8. net.ipv4.tcp_max_syn_backlog = 8192
  9. net.ipv4.tcp_max_tw_buckets = 5000
  10. net.ipv4.tcp_synack_retries = 2
  11. net.ipv4.tcp_syn_retries = 2
Salin kode

Menggambarkan:

net.ipv4.tcp_syncookies = 1 berarti Cookie SYN diaktifkan, yang merupakan BOOLEAN. Saat SYN menunggu antrian meluap, aktifkan cookie untuk menanganinya, yang dapat mencegah sejumlah kecil serangan SYN, dan defaultnya adalah 0, yang berarti ditutup.
net.ipv4.tcp_tw_reuse = 1 berarti bahwa penggunaan kembali diaktifkan, yang merupakan BOOLEAN. Memungkinkan penggunaan kembali soket TIME-WAIT untuk koneksi TCP baru, default ke 0, menunjukkan penutupan;
net.ipv4.tcp_tw_recycle = 1 berarti mengaktifkan daur ulang cepat soket TIME-WAIT dalam koneksi TCP, yang merupakan BOOLEAN, dan defaultnya adalah 0, yang berarti ditutup.
net.ipv4.tcp_fin_timeout = 30 berarti bahwa jika soket ditutup oleh permintaan lokal, parameter ini menentukan berapa lama soket akan tetap dalam status FIN-WAIT-2. Satuannya adalah detik.
net.ipv4.tcp_keepalive_time = 1200 menunjukkan seberapa sering TCP mengirim pesan keepalive saat keepalive digunakan. Defaultnya adalah 2 jam, diubah menjadi 20 menit. Satuannya adalah detik.
net.ipv4.ip_local_port_range = 1024 65000 menunjukkan rentang port yang digunakan untuk koneksi keluar. Kasus defaultnya kecil: 32768 menjadi 61000, diubah menjadi 1024 menjadi 65000.
net.ipv4.tcp_max_syn_backlog = 8192 menunjukkan panjang antrean SYN, yaitu 1024 secara default, dan panjang antrean yang ditingkatkan adalah 8192 untuk mengakomodasi lebih banyak koneksi jaringan yang menunggu koneksi.
net.ipv4.tcp_max_tw_buckets = 5000 menunjukkan jumlah maksimum soket yang dirawat sistem pada TIME_WAIT saat yang sama, dan jika jumlah ini terlampaui, soket TIME_WAIT akan segera dihapus dan pesan peringatan akan dicetak. Defaultnya adalah 180000, diubah menjadi 5000. Untuk server seperti Apache dan Nginx, parameter di baris sebelumnya dapat mengurangi jumlah soket TIME_WAIT baik, tetapi untuk Squid, efeknya tidak bagus. Parameter ini mengontrol jumlah maksimum soket TIME_WAIT untuk mencegah server Squid diseret keluar oleh sejumlah besar soket TIME_WAIT.
net.ipv4.tcp_synack_retries dan net.ipv4.tcp_syn_retries menentukan jumlah percobaan SYN.

Jalankan perintah berikut untuk membuat konfigurasi diterapkan:

  1. 以下是代码片段:
  2. /sbin/sysctl -p
Salin kode

Jika Anda tidak ingin memodifikasi /etc/sysctl.conf, Anda juga dapat menggunakan perintah untuk melakukannya:

  1. 以下是代码片段:
  2. /sbin/sysctl -w key=value
Salin kode

Keempat, didirikan di bawah FreeBSD

    sudut pandang pembelajaran pribadi yayu: pertahanan terhadap syn di FreeBSD mungkin tidak sama dengan di Linux, parameter yang dikonfigurasi tidak persis sama, dan konfigurasi dan pemahaman yang relevan mungkin tidak benar :)

    Ada satu di tautan TCPMSL (masa pakai segmen maks)KonsepWaktu pembuatan maksimumNilai MSL diambil selama 30 detik dalam implementasi umum, dan beberapa implementasi membutuhkan waktu 2 menit. "Shutdown pasif" di mesin status TCP: Dari CLOSE_WAIT ke LAST_ACK, ada aturan sebagai berikut: Saat TCP melakukan shutdown aktif dan mengirim kembali ACK terakhir, koneksi harus tetap dalam status TIME_WAIT selama dua kali lebih lama dari MSL. Ini memungkinkan TCP untuk mengirim ACK terakhir lagi jika hilang (akhir lainnya habis dan mengirim ulang FIN terakhir).

    Keberadaan aturan ini memiliki konsekuensi bahwa tautan (alamat klien, port dan alamat sisi server, port) pada alamat tersebut tidak dapat digunakan selama waktu 2*MSL ini. Misalnya, jika kita menutup tautan setelah membuatnya dan kemudian memulai ulang tautan dengan cepat, maka port tidak akan tersedia.

    TIME_WAIT waktu adalah 2 * MSL. Jadi Anda dapat mengurangi waktu TIME_WAIT dengan menyesuaikan net.inet.tcp.msl. Untuk server web, nilai ini dapat disesuaikan menjadi 7500 atau 2000 (akses web, halaman tidak dapat di-flash selama lebih dari 4 ~ 15 detik, Anda dapat mempertimbangkan untuk menyerah -_-)

    Referensi pengaturan parameter:

  1. 以下是引用片段:
  2. net.inet.tcp.syncookies=1
  3. 防止DOS攻击

  4. net.inet.tcp.msl=7500
  5. 防止DOS攻击,默认为30000

  6. net.inet.tcp.blackhole=2
  7. 接收到一个已经关闭的端口发来的所有包,直接drop,如果设置为1则是只针对TCP包

  8. net.inet.udp.blackhole=1
  9. 接收到一个已经关闭的端口发来的所有UDP包直接drop
Salin kode

Di FreeBSD, yayu tidak melihat perintah seperti "/sbin/sysctl -p" yang dapat membuat konten /etc/sysctl.conf efektif, jadi dia hanya menggunakan perintah:

  1. 以下是代码片段:
  2. sysctl net.inet.tcp.syncookies=1 net.inet.tcp.msl=7500 net.inet.tcp.blackhole=2 net.inet.udp.blackhole=1
Salin kode






Mantan:Surat dari seorang mahasiswa Institut Teknologi Wuchang kepada media berita
Depan:Pulihkan kebenaran tentang organisasi prostitusi di hotel di perguruan tinggi dan universitas "Institut Teknologi Wuchang: Rumor berhenti di...
Sanggahan:
Semua perangkat lunak, materi pemrograman, atau artikel yang diterbitkan oleh Code Farmer Network hanya untuk tujuan pembelajaran dan penelitian; Konten di atas tidak boleh digunakan untuk tujuan komersial atau ilegal, jika tidak, pengguna akan menanggung semua konsekuensi. Informasi di situs ini berasal dari Internet, dan sengketa hak cipta tidak ada hubungannya dengan situs ini. Anda harus sepenuhnya menghapus konten di atas dari komputer Anda dalam waktu 24 jam setelah pengunduhan. Jika Anda menyukai program ini, harap dukung perangkat lunak asli, pembelian pendaftaran, dan dapatkan layanan asli yang lebih baik. Jika ada pelanggaran, silakan hubungi kami melalui email.

Mail To:help@itsvse.com