Server saya terus-menerus diserang [ditutup]


32

Saya cukup baru di dunia sistem administrasi. Saya telah mengerjakan aplikasi baru-baru ini dan ketika saya memeriksa log server aplikasi saya, saya terus-menerus mendapatkan berbagai alamat IP yang mencoba ssh ke server saya dengan brute force. Berikut ini contoh log server saya:

Feb 14 04:07:20 foodwiz3 sshd[1264]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:07:21 foodwiz3 sshd[1264]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:07:21 foodwiz3 sshd[1264]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:07:23 foodwiz3 sshd[1264]: Failed password for root from 23.249.167.223 port 32997 ssh2
Feb 14 04:07:23 foodwiz3 sshd[1264]: Received disconnect from 23.249.167.223: 11: Bye Bye [preauth]
Feb 14 04:13:04 foodwiz3 sshd[1289]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Feb 14 04:13:05 foodwiz3 sshd[1289]: reverse mapping checking getaddrinfo for coenamor.columbiansabbatical.com [23.249.167.223] failed - POSSIBLE BREAK-IN ATTEMPT!
Feb 14 04:13:05 foodwiz3 sshd[1289]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=23.249.167.223  user=root
Feb 14 04:13:07 foodwiz3 sshd[1289]: Failed password for root from 23.249.167.223 port 41562 ssh2

Apakah ini sesuatu yang cukup normal, atau haruskah saya khawatir / melakukan sesuatu tentang hal itu?


3
Coba ubah nomor port dan lihat apakah ada. Jika mereka tidak menargetkan Anda secara khusus, itu mungkin tidak akan.
goldilocks

13
Solusi terbaik adalah menonaktifkan otentikasi kata sandi pada SSH, karena itu pasti akan menghentikan serangan brute force!
Willem


3
@ Willem - tidak, menonaktifkan otentikasi kata sandi TIDAK akan menghentikan serangan. Itu hanya akan membuat mereka tidak berhasil (penyerang tidak akan menyadari bahwa otentikasi kata sandi telah dinonaktifkan, dan akan terus mencoba).
Martin Vegter

Jawaban:


59

Selamat datang di dunia Internet yang indah ... Sudahkah Anda:

Tetapi jawaban sebenarnya adalah: Ya, ini normal : BotNet Maffia selalu dapat menggunakan beberapa server yang sangat terlindungi ...


1
Saya lebih suka tidak memiliki SSH di Internet yang liar dan liar. +1
Rui F Ribeiro

2
Selain mengubah port default untuk ssh, kami juga memiliki port knocking .
Pablo A

15

Merupakan hal yang wajar untuk melakukan uji coba login yang cukup untuk membuat log flooding.

Mengubah port SSH lebih merupakan jenis solusi 'keamanan karena ketidakjelasan', tetapi ini membantu mengatasi banjir. Saya menekankan itu tidak terlalu elegan; ada port de-facto untuk layanan karena suatu alasan.

Karena seharusnya diaktifkan secara default, tetapi pastikan Anda tidak dapat SSH ke server Anda sebagai root. Ini adalah nama pengguna yang cukup konsisten di antara server dan dengan demikian target utama untuk upaya masuk dengan kata sandi brute force. Terapkan pengaturan dengan baris berikut di sshd_config:

PermitRootLogin no

Juga lihat ke dalam fail2banlog sshd monitor untuk pelanggar berulang. Misalnya, 5 gagal login dalam 3 menit dari IP tertentu akan membuat IP tersebut diblokir selama 10 menit. Saya menambah waktu larangan itu menjadi 24 jam untuk lebih mengurangi spam log - berhasil. :)


1
apt-get install fail2ban pada dasarnya akan membantu Anda
Willem

7
"Saya menambah waktu larangan itu menjadi 24 jam untuk lebih mengurangi spam log" Percayalah. Kecuali Anda memiliki akses fisik ke server, suatu hari Anda akan sangat menyesal. ;)
Daniel

8

Saya menyarankan Anda untuk melakukan beberapa hal:

  1. Ubah port ssh sedang mendengarkan (menjadi sesuatu yang jauh di atas 1024) dan pastikan Anda tidak menggunakan versi 1 protokol:

/ etc / ssh / sshd_config

# What ports, IPs and protocols we listen for
Port 50022
# Use these options to restrict which interfaces/protocols sshd will bind to
#ListenAddress ::
#ListenAddress 0.0.0.0
Protocol 2
  1. Instal fail2ban- memantau file log dan sementara atau terus-menerus melarang alamat rawan kegagalan dengan memperbarui aturan firewall yang ada ( iptables).

  2. Pastikan Anda mencantumkan putih lokasi tepercaya Anda.


7

Ya, khawatirlah . Anda mungkin tidak pernah terbakar, tetapi Anda harus mengikuti praktik terbaik TI. Lebih baik aman daripada menyesal.

Saya seorang admin jaringan di rumah sakit. Itu selalu merupakan ide yang buruk untuk menghubungkan kotak langsung ke internet. Yang Anda lihat adalah ribuan pemindai otomatis yang memindai kerentanan di internet. Saya melihat ini dan semua hal (scan port, berbagai tes kerentanan yang diketahui) untuk semua jenis perangkat lunak (ssh, telnet, ftp, dll.) Muncul di kotak id kami
. Mesin Anda harus berada di belakang solusi firewall / NAT dan Anda hanya boleh port-forward port yang diperlukan ke internet (80, 443 dll). Ini relatif mudah dilakukan.
Memiliki sesuatu yang dapat Anda gunakan untuk managemnt (SSH telnet) adalah ide yang buruk untuk menghadapi internet karena jika - untuk alasan apa pun - ada bug dalam perangkat lunak SSH / telnet di server itu, bot otomatis akan mendeteksi itu dalam sekejap dan Anda akan kacau. Bug dalam perangkat lunak terjadi setiap saat dan perlu beberapa saat agar patch dirilis atau Anda ingat untuk menambalnya.

Jika Anda perlu mengelola dari jarak jauh, lihat mengatur sesuatu seperti solusi VPN atau jika Anda menggunakan Windows, atur gateway layanan terminal untuk desktop jarak jauh. Saya tahu Anda dapat menggunakan Linux atau kotak Windows terpisah dengan 2 NIC untuk mengatur perutean dan akses jarak jauh untuk VPN dan NAT jika Anda hanya toko kecil. Kalau tidak, vendor seperti Cisco memiliki firewall hardware / solusi NAT (Cisco ASA).

Singkatnya, letakkan mesin Anda di belakang NAT. Hanya port forward port yang diperlukan untuk menjalankan tujuan layanan. Jangan port forward layanan yang digunakan untuk manajemen ke internet, sebaliknya cari ke VPN untuk manajemen jarak jauh.

PS Mengubah port SSH dapat membantu dengan volume log tetapi sebenarnya tidak mencegah akses ke SSH. Salah satu dari ribuan pencari kerentanan otomatis dapat dan akan melakukan pemindaian port untuk melihat port mana yang mendengarkan layanan apa. Anda dapat melakukannya sendiri dengan alat yang disebut nmap .


7
Sebenarnya, solusi VPN tidak lebih atau kurang aman daripada server SSH. Keduanya mengandalkan protokol kriptografi yang diimplementasikan dengan benar dan layanan yang dikonfigurasi dengan benar. Melalui cara yang berbeda saya akan mengatakan mereka memberikan tingkat keamanan yang persis sama. Lalu, jika saya mengerti Anda dengan baik, Anda meletakkan SSH di belakang VPN, maka ya itu satu tingkat lebih aman.
lgeorget

Ya Anda benar itulah yang saya maksudkan, gunakan vpn untuk bisa melewati firewall / nat lalu ssh ke server
orang

1
Pertama, sebagian besar pengaturan VPN melalui beberapa lapisan otentikasi klien serta menyediakan satu titik lalu lintas eksternal dapat mencapai jaringan internal. Versus memiliki banyak node. Konsentrator VPN juga biasanya bukan target yang menarik di dalam dan dari dirinya sendiri, dibandingkan dengan server yang mungkin menjadi tempat sshdinstance. Jumpshsh ssh bisa seaman kebanyakan konfigurasi VPN, tetapi secara umum, itu bukan cara kerjanya.
Bratchley

5

Anda dapat mengkonfigurasi firewall internal kernel dengan iptables . Sehingga hanya beberapa mesin yang dapat melakukan ssh ke server Anda dan membiarkan paket IP lainnya jatuh. Lihat man iptablesuntuk informasi lebih lanjut.

Misalnya, jika 192.168.1.67 adalah host tempat Anda ssh, maka pada jenis server:

sudo iptables -A INPUT -p tcp --dport ssh -s 192.168.1.67 -j ACCEPT
sudo iptables -A INPUT -p tcp --dport ssh -j DROP
sudo iptables-save

2
Perhatikan bahwa Anda akan sangat kacau jika manajemen jarak jauh adalah satu-satunya pilihan Anda. Sebagian besar IP hanya semi permanen. Ubah perangkat keras dan Anda akan dibakar.
Tiang

3

Apakah Anda benar-benar membutuhkan server Anda di internet? Jika Anda benar-benar ingin memilikinya di internet maka pastikan sudah aman sebelum Anda menaruhnya di sana.

Mengubah port hanya keamanan melalui ketidakjelasan. Jika penyerang Anda lebih canggih daripada hanya menjalankan skrip, itu tidak akan membantu.

Beberapa hal yang sudah saya sebutkan juga saya rekomendasikan:

  1. Saya setuju dengan Fail2Ban, dan dikonfigurasikan dengan benar akan membuat skrip dan peretas tercanggih terhindar.
  2. Mengatur PermitRootLogin ke no adalah suatu keharusan.
  3. Konfigurasikan firewall. Saya biasanya cukup mengedit aturan iptables, tetapi sesuatu seperti UFW atau firehol juga akan berfungsi.

Saya baru saja bergabung dengan komunitas ini karena ada dua hal yang menurut saya belum ditangani secara memadai.

  • Di firewall config blok / nonaktifkan sepenuhnya semua yang tidak sepenuhnya diperlukan. Sebelum Anda membuka port bertanya pada diri sendiri, "Apakah saya benar-benar membutuhkan layanan ini dari internet?" Setiap port / layanan yang Anda buka menjadi vektor potensial lain yang dapat dieksploitasi oleh seseorang. Jika ada bug dalam layanan itu yang memungkinkan mereka untuk mendapatkan akses root ke server mereka mungkin dapat mengakses semua yang ada di dalamnya. Keamanan Anda hanya sekuat tautan terlemah.
  • Sekarang untuk hal terakhir dan bisa dibilang yang paling penting. Skrip yang Anda lihat mencoba mengakses ssh mungkin dapat menebak kata sandi Anda seiring waktu. Fail2Ban akan banyak memperlambat mereka, tetapi mereka masih bisa menebaknya. Jika ya, Anda ingin otentikasi 2 faktor pada layanan yang dapat diakses. Untuk itu saya sarankan akun gratis dengan Duo Security. https://www.duosecurity.com/docs/duounix

1
Mengubah port memiliki keuntungan membersihkan file log: karena skrip kiddies kebanyakan tidak menyerang port non-default, Anda tahu bahwa setiap entri log mewakili ancaman serius.
Tandai

Mengganti port juga tidak sepenuhnya nol terhadap ancaman nyata. Benjolan kecepatan tidak terlalu banyak, tetapi masih berupa benjolan kecepatan, dan ada beberapa cara Anda bisa membuatnya menjadi tonjolan kecepatan yang lebih besar. Juga, sementara otentikasi 2 faktor tentu saja merupakan ide yang baik untuk digunakan kapan pun memungkinkan, dan hampir selalu memungkinkan, ada kasus tepi. Jika ada jumlah waktu minimum tertentu yang bisa Anda yakini pasti bahwa Fail2Ban akan menunda mereka, maka cukup ganti kata sandi Anda lebih dari itu akan memaksa mereka untuk memulai berulang kali dan tidak pernah selesai.
Matthew Najmon

2

Contoh lain untuk jawaban @cff, jika Anda bermaksud untuk melarang "percobaan" berturut-turut di server SSH Anda:

sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --update --seconds 600 --hitcount 4 --name DEFAULT --mask 255.255.255.255 --rsource -j DROP
sudo iptables -A INPUT -p tcp -m tcp --dport ssh -m state --state NEW -m recent --set --name DEFAULT --mask 255.255.255.255 --rsource
sudo iptables-save

Koneksi 'tag' yang satu ini mencoba dan jika lebih dari 4 terjadi dalam 600-an (10 juta), maka asalnya 'dilarang'. Gunakan ini alih-alih solusi @cff karena lebih aman (jika Anda mengunci diri, tunggu 10 juta dan coba lagi).

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.