Memblokir serangan SSH Brute Force di IPv6

10

Saya baru-baru ini harus bekerja dengan beberapa server yang memiliki koneksi IPv6 dan saya terkejut mengetahui bahwa fail2ban tidak memiliki dukungan IPv6, begitu juga dengan denyhosts. Pencarian di google saya menemukan bahwa orang umumnya merekomendasikan:

  • Menonaktifkan ssh login melalui IPv6 (bukan solusi untuk saya)
  • hanya menggunakan otentikasi kunci publik / pribadi di server, tanpa otentikasi kata sandi (berfungsi, tetapi banyak serangan mungkin menghabiskan banyak daya pemrosesan dari server, atau bahkan membuatnya tidak tersedia dengan menggunakan DDoS)
  • menggunakan ip6tables untuk memblokir serangan berurutan dari IP yang sama
  • menggunakan sshguard yang memiliki dukungan IPv6

Dari apa yang saya kumpulkan sejauh ini melarang alamat di IPv6 sedikit berbeda dari pada IPv4 karena ISP tidak memberikan pengguna satu alamat (/ 128), tetapi seluruh subnet (saya saat ini memiliki / 48). Dengan demikian pelarangan alamat IPv6 tunggal tidak akan efektif terhadap serangan. Saya telah mencari tinggi dan rendah pada subjek ip6tables dan sshguard memblokir subnet pada deteksi serangan tetapi saya belum berhasil menemukan informasi.

Apakah ada yang tahu jika sshguard melarang subnet pada serangan IPv6?
Adakah yang tahu cara membuat konfigurasi ip6tables untuk melarang subnet pada serangan IPv6?
Atau apakah ada yang tahu cara yang lebih baik untuk mengurangi serangan daripada apa yang sudah saya temukan?

PS: Saya menggunakan CentOS 7 pada sistem.

DarthRevan13
sumber
3
Untuk informasi lebih lanjut tentang fail2ban menambahkan dukungan IPv6: github.com/fail2ban/fail2ban/issues/39 . Tampaknya mereka menghadapi masalah dengan pemblokiran subnet , yang menunda implementasi lebih lanjut (tampaknya semakin jauh dari kita sebenarnya ...).
John WH Smith
Aturan pembatasan / larangan tingkat di iptables. Ubah pertanyaan Anda untuk itu dan beberapa pelacur harus menjawab dengan tepat.
Apakah ini masalah hipotetis? Saya telah mencari di log upaya brute force dari beberapa server, dan masing-masing dari mereka dicoba melalui IPv4. Dan saya belum melihat server mana pun berada di bawah terlalu banyak beban karena upaya seperti itu ketika otentikasi kata sandi dinonaktifkan di sisi server.
kasperd
1
@kasperd Saya mendapat beberapa ribu upaya sehari di IPv6 jadi, tidak, itu bukan masalah hipotetis. Alamat server bersifat publik karena meng-host situs, jadi ini adalah masalah besar.
DarthRevan13
@ user123418 Saya akan meninggalkan judul pertanyaan seperti untuk saat ini, saya benar-benar akan lebih suka sesuatu seperti sshguard karena kontrolnya vs aturan di ip6tables. Jika tidak ada yang akan menjawab di minggu berikutnya maka saya akan mengubah pertanyaan saya.
DarthRevan13

Jawaban:

4

Untuk menyerang server, penyerang harus terlebih dahulu mengetahui alamat IP-nya. Dengan IPv6 Anda akan memiliki begitu banyak alamat untuk dipilih sehingga tidak layak untuk menemukan alamat yang benar dengan memindai rentang IP.

Ini berarti Anda cukup menetapkan dua alamat IPv6 berbeda untuk antarmuka. Anda membiarkan nama domain situs Anda tetap menunjuk ke alamat IP yang sama seperti biasa, dan Anda membiarkan sshd mendengarkan hanya pada alamat IP yang baru ditugaskan.

Setelah perubahan itu mengetahui nama domain dan alamat IP situs Anda tidak akan memberikan penyerang akses ke sshd Anda.

Anda tentu saja akan memerlukan nama host sekunder untuk digunakan saat menghubungkan menggunakan ssh. Nama host itu dapat memiliki lebih banyak entropi daripada alamat IPv6. Seseorang yang menebak nama host untuk ssh tidak dapat dibayangkan jika Anda menggunakan 63 karakter alfanumerik.

Jika seseorang mengetahui alamat IPv6 yang digunakan untuk sshd, Anda cukup memindahkan sshd ke alamat IPv6 baru dan memperbarui catatan AAAA. Kemudian mereka harus memulai dari awal.

Jika Anda khawatir bahwa pengguna ssh yang sah dapat membocorkan nama host dan / atau alamat IP, maka Anda dapat membuat nama host yang berbeda untuk setiap pengguna untuk mengakses dengan ssh. Awalnya saya akan CNAME semuanya ke nama host tunggal sehingga hanya ada catatan AAAA tunggal untuk memperbarui.

kasperd
sumber
Kedengarannya lebih baik dari apa yang saya miliki saat ini, tetapi tidak cukup apa yang saya cari. Bagaimanapun, terima kasih.
DarthRevan13
0

Kabar baiknya adalah fail2ban merilis dukungan untuk IPv6 baru-baru ini.

Untuk server Debian IPv6 saya akan merekomendasikan untuk mengikuti tutorial ini .

Untuk server CentOS IPv6, saya akan merekomendasikan untuk mengunduhnya di sini dan kemudian menjalankan perintah ini menggantikan nomor versi sesuai:

tar xvfj fail2ban-0.11.0.tar.bz2
cd fail2ban-0.11.0
python setup.py install

Pastikan jail untuk sshd diaktifkan di /etc/fail2ban/jail.local , misalnya:

[sshd]
enabled=1
ncomputer
sumber
1
Meskipun saya mengagumi apa yang telah dilakukan orang-orang di fail2ban, itu masih belum cukup! Tidak semua fitur didukung oleh protokol IPv6 sesuai dengan changelog mereka github.com/fail2ban/fail2ban/blob/0.10/ChangeLog dan masih belum ada dukungan untuk melarang subnet github.com/fail2ban/fail2ban/issues/927 yang penting untuk IPv6 karena ISP mana pun tidak hanya akan menawarkan satu alamat IPv6 kepada pelanggan, tetapi seluruh subnet. Selama ini tetap benar, tidak ada mesin produksi yang harus menggunakan fail2ban sekarang! Silakan ubah jawaban Anda untuk mencerminkan ini, karena halaman ini dikunjungi oleh banyak orang.
DarthRevan13