GNU/Linux >> Belajar Linux >  >> Linux

Cara menghentikan/mencegah bruteforce SSH

Solusi 1:

Bagaimana cara mendapatkan akses?

Tidak jelas mengapa Anda tidak dapat mengakses akun Anda.

Jika mesin Anda sedang diserang atau beban tinggi, Anda harus berbicara dengan penyedia Anda tentang membatasi akses (Pembatasan IP) atau menjadikan server offline (putuskan sambungan dari Internet).

Anda mungkin juga memerlukan akses out-band yang mungkin dapat dibantu oleh penyedia Anda.

Jika seseorang telah menyusupi server Anda, Anda mungkin perlu memulihkan dari cadangan atau menggunakan gambar pemulihan.

Cara mencegah serangan pada server Anda, khususnya SSH

cara terbaik untuk mencegah masuk dengan paksa?

Jangan biarkan mereka masuk ke mesin Anda sejak awal! Ada banyak cara untuk menghentikan upaya kekerasan sebelum mencapai host Anda, atau bahkan di tingkat SSH.

Karena itu, melindungi Sistem Operasi Anda dengan sesuatu seperti fail2ban adalah ide bagus. http://en.wikipedia.org/wiki/Fail2ban

Fail2ban mirip dengan DenyHosts ... tetapi tidak seperti DenyHosts yang berfokus pada SSH, fail2ban dapat dikonfigurasi untuk memantau layanan apa pun yang menulis upaya masuk ke file log, dan alih-alih menggunakan /etc/hosts.deny hanya untuk memblokir alamat IP/host, fail2ban dapat menggunakan Netfilter/iptables dan TCP Wrappers /etc/hosts.deny.

Ada sejumlah teknik keamanan penting yang harus Anda pertimbangkan untuk membantu mencegah login paksa:

SSH:

  • Jangan izinkan root masuk
  • Jangan izinkan kata sandi ssh (gunakan autentikasi kunci pribadi)
  • Jangan dengarkan di setiap antarmuka
  • Buat antarmuka jaringan untuk SSH (mis. eth1), yang berbeda dengan antarmuka tempat Anda melayani permintaan (mis. eth0)
  • Jangan gunakan nama pengguna umum
  • Gunakan daftar yang diizinkan, dan hanya izinkan pengguna yang memerlukan Akses SSH
  • Jika Anda memerlukan Akses Internet...Batasi Akses ke kumpulan IP terbatas. Satu IP statis ideal, namun menguncinya ke x.x.0.0/16 lebih baik daripada 0.0.0.0/0
  • Jika memungkinkan temukan cara untuk terhubung tanpa Akses Internet, dengan begitu Anda dapat menolak semua lalu lintas internet untuk SSH (misalnya dengan AWS Anda bisa mendapatkan koneksi langsung yang melewati Internet, ini disebut Direct Connect)
  • Gunakan software seperti fail2ban untuk menangkap serangan brute force
  • Pastikan OS selalu diperbarui, khususnya paket keamanan dan ssh

Aplikasi:

  • Pastikan aplikasi Anda selalu terbarui, khususnya paket keamanan
  • Kunci halaman 'admin' aplikasi Anda. Banyak saran di atas juga berlaku untuk area admin aplikasi Anda.
  • Password Lindungi area admin Anda, sesuatu seperti htpasswd untuk konsol web akan memproyeksikan kerentanan aplikasi yang mendasarinya dan menciptakan penghalang tambahan untuk masuk
  • Kunci izin file. 'Unggah folder' terkenal sebagai titik masuk segala macam hal buruk.
  • Pertimbangkan untuk menempatkan aplikasi Anda di belakang jaringan pribadi, dan hanya memperlihatkan load balancer front-end dan jumpbox (ini adalah penyiapan tipikal di AWS yang menggunakan VPC)

Solusi 2:

bagaimana saya bisa menekan serangan ini dan mencegah serangan berikutnya

Biasanya saya mengubah port ssh default dari 22 ke yang lain seperti 1122. Ini mencegah banyak serangan otomatis dari bot, tetapi pemindaian port sederhana dapat mendeteksinya. Pokoknya:

vi /etc/ssh/sshd_config

dan edit Port 22 ke Port 1122 , tetapi ini tidak cukup.

Aturan IPTables otomatis pada bruteforce

saya menggunakan log2iptables https://github.com/theMiddleBlue/log2iptables bukan Fail2ban, karena merupakan skrip Bash sederhana yang mem-parsing file log apa pun dengan ekspresi reguler dan menjalankan iptables. Misalnya ketika 5 kecocokan terjadi, log2iptables menghapus alamat ip tertentu. Itu keren karena menggunakan API Telegram dan dapat mengirimi saya pesan di ponsel saya ketika dia menemukan masalah :)

harap ini akan membantu!

Solusi 3:

Saya baru saja menyatukan ini, jalankan setiap 15 menit sebagai cronjob dll:

for z in `grep Invalid /var/log/auth.log | awk '{ print $NF }' | sort | uniq`
do
  count1=`grep $z /etc/hosts.deny | wc -l`
  count2=`grep Invalid /var/log/auth.log | grep $z | wc -l`
  if [ $count1 -eq 0 -a $count2 -gt 10 ] ; then
    current=`egrep "^ssh" /etc/hosts.deny | sed 's/sshd[ :,]*//'`
    sudo cp /etc/hosts.deny.bak /etc/hosts.deny
    sudo chmod 666 /etc/hosts.deny
    if [ $current ] ; then
      echo "sshd : $current , $z" >> /etc/hosts.deny
    else
      echo "sshd : $z" >> /etc/hosts.deny
    fi
    sudo chmod 644 /etc/hosts.deny
  fi
done

Linux
  1. Cara Mengatur Tunneling SSH

  2. Cara Mengatur Kunci SSH

  3. Bagaimana Cara Ssh Ke Server Menggunakan Server Lain??

  1. Ssh – Bagaimana Tcp-keepalive Bekerja Di Ssh?

  2. Bagaimana menghentikan layanan systemd

  3. Bagaimana cara keluar dari koneksi SSH?

  1. Bagaimana cara menolak akses ke akun AD yang dinonaktifkan melalui kerberos di pam_krb5?

  2. Bagaimana cara mencegah agar cumi tidak terdeteksi?

  3. Bagaimana cara mencegah rm -rf /* yang tidak disengaja?