SSH / SSHD - Bagaimana cara saya mengatur upaya login max?


Jawaban:


11

Saya menggunakan Fail2ban ; Saya telah menggunakan Denyhosts di masa lalu, dan itu berfungsi dengan baik juga. Saya mendukung Fail2ban sekarang karena lebih dapat dikonfigurasi, dan lebih dapat menangani pemantauan beberapa layanan yang berbeda - misalnya, sshd Anda dan halaman masuk aplikasi web Anda secara bersamaan (asalkan Anda mencatat kegagalan).

Metode lain yang mungkin Anda pertimbangkan adalah menerapkan aturan LIMIT di iptables; Sayangnya saya tidak dapat membantu Anda dengan ini, kecuali jika Anda ingin menginstal Shorewall , dan kemudian saya hanya akan mengarahkan Anda ke dokumentasi yang sangat baik di situs itu untuk cara mengkonfigurasi aturan LIMIT untuk, yah, membatasi kemampuan seseorang untuk brute -Maksa server Anda.


Saya harus menambahkan bahwa Fail2ban tersedia di repositori banyak distro, jadi menginstalnya sangat mudah; Saya belum pernah melihat Denyhosts di mana pun, tetapi itu tidak berarti tidak ada di Denyhosts, juga tidak ditambahkan sejak terakhir kali saya memeriksa.
Kromey

Saya telah menghadapi masalah bahwa fail2ban dari v0.8.14 tidak berfungsi dengan benar dengan perintah iptables-multiport. Dan ini adalah masalah yang dikenal dengan utilitas fail2ban diselesaikan dalam versi baru ... Berikut ini deskripsi: github.com/fail2ban/fail2ban/issues/798 Jadi saya percaya hanya pada mekanisme keamanan yang dikembangkan menjadi perangkat lunak server, atau utilitas pihak ke-3 ...
George Gaál

44

Saya tidak suka menggunakan alat pihak ketiga. Karenanya saya menggunakan kombinasi konfigurasi ssh dan pengaturan firewall. Dengan solusi berikut ini, seorang penyerang diizinkan untuk menghasilkan 3 login kesalahan dengan tepat dalam 2 menit, atau ia akan diblokir selama 120 detik.

1) Tambahkan baris berikut ke /etc/ssh/sshd_config

MaxAuthTries 1

Ini akan memungkinkan hanya 1 upaya login per koneksi. Mulai ulang server ssh.

2) Tambahkan aturan firewall berikut

Buat rantai baru

iptables -N SSHATTACK
iptables -A SSHATTACK -j LOG --log-prefix "Possible SSH attack! " --log-level 7
iptables -A SSHATTACK -j DROP

Blokir setiap alamat IP selama 120 detik yang membuat lebih dari tiga koneksi dalam 120 detik. Dalam kasus upaya koneksi keempat, permintaan akan didelegasikan ke SSHATTACKrantai, yang bertanggung jawab untuk mencatat kemungkinan serangan ssh dan akhirnya menjatuhkan permintaan.

iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --set
iptables -A INPUT -i eth0 -p tcp -m state --dport 22 --state NEW -m recent --update --seconds 120 --hitcount 4 -j SSHATTACK

3) Lihat entri log dari kemungkinan serangan ssh di /var/log/syslog

Dec 27 18:01:58 ubuntu kernel: [  510.007570] Possible SSH attack! IN=eth0 OUT= MAC=01:2c:18:47:43:2d:10:c0:31:4d:11:ac:f8:01 SRC=192.168.203.129 DST=192.168.203.128 LEN=60 TOS=0x00 PREC=0x00 TTL=64 ID=30948 DF PROTO=TCP SPT=53272 DPT=1785 WINDOW=14600 RES=0x00 SYN URGP=0

2
Luar biasa! tapi saya punya masalah, beberapa orang / bot di Perancis belum mengkonfigurasi alat peretasnya dengan benar, jadi dia tetap masuk, meskipun lalu lintasnya turun. Hasilnya, log saya diisi dengan data setiap detik dari orang ini. Ada jalan lain?
Smarties89

2
Untuk orang yang kurang berpengalaman seperti saya: baris iptables diketik di bash prompt, tidak dimasukkan ke file di suatu tempat.
Andrew Swift

4

Tidak ada paket khusus yang terkait dengan SSH untuk mengatur ini. Namun Anda dapat menginstal CSF yang merupakan ConfigServer & Firewall.

CSF

Dua perubahan konfigurasi yang saya sarankan akan dibuat di file: / etc / ssh / sshd_config

Batasi jumlah maksimum koneksi tidak terautentikasi yang akan ditangani server ssh secara bersamaan. Semakin kecil ini, semakin sulit bagi skrip kiddies untuk melakukan upaya crack paralel dan terkoordinasi dengan beberapa koneksi. edit sshd_config dan ubah MaxStartups dari default "10" menjadi "3:50:10". Nilai-nilai yang dipisahkan titik dua memberitahu ssh server untuk, "memungkinkan 3 pengguna untuk mencoba masuk pada saat yang sama, dan untuk secara acak dan semakin menjatuhkan upaya koneksi antara 3 dan maksimum 10". Catatan: ini harus ditingkatkan pada server dengan sejumlah besar pengguna ssh valid yang masuk.

  • Default : MaxStartups 10
  • MaxStartups 3:50:10

Kurangi jumlah waktu maksimum yang diizinkan untuk berhasil masuk sebelum memutuskan hubungan. Default 2 menit adalah terlalu banyak waktu untuk menahan upaya koneksi yang tidak diautentikasi (lihat di atas); 30 detik lebih dari cukup waktu untuk masuk:

  • Default : LoginGraceTime 2m
  • LoginGraceTime 30

3

Saya menggunakan aturan IPTables ini untuk ini:

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 300 --hitcount 4 --rttl  --name SSH -j DROP

Itu hanya akan memungkinkan 4 paket TCP / SYN ke port 22 dari alamat IP dalam 5 menit. Jika itu membuat lebih banyak upaya pintu ditutup sampai 5 menit selesai.


Apa yang perlu diedit?
timkofu

Cukup banyak yang sama seperti: -A INPUT -p tcp -m tcp --dport 22 -m limit --limit 48/hour -j ACCEPT.
Alix Axel

Saya membuat dua perintah iptables ini di Debian Jessie, tetapi masih bisa melihat upaya masuk SSH setiap 2 detik dari alamat IP yang sama. Ada ide?
Alexey Ozerov

1

ada opsi yang bisa Anda masukkan ke file sshd_config Anda untuk server:

 MaxAuthTries
         Specifies the maximum number of authentication attempts permitted per
         connection.  Once the number of failures reaches half this value, additional 
         failures are logged.  The default is 6.

Berguna (terutama bila dikombinasikan dengan saran lain sudah dibuat), tetapi tidak benar-benar menyelesaikan masalah sendiri karena itu sepele bagi seseorang untuk tetap terhubung kembali.
Kromey
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.