Bagaimana cara memblokir semua upaya login root menggunakan denyhosts dan atau fail2ban?

8

Saat ini saya memblokir semua login ssh menggunakan root. Tapi saya ingin bekerja lebih keras dan memblokir alamat ip klien yang mencoba masuk sebagai root. Saat ini saya memiliki denyhosts dan fail2ban setup dan berfungsi, dapatkah saya menggunakan denyhosts dan atau fail2ban untuk memblokir alamat ip dari mereka yang mencoba login sebagai root?

samwell
sumber

Jawaban:

2

Bergantung pada distribusi Anda, edit /etc/fail2ban/jail.conf Perbarui [ssh]bagian untuk menampilkan sesuatu seperti ini

[ssh]

enabled = true
port    = ssh
filter  = sshd
logpath  = /var/log/auth.log
bantime = 3600
maxretry = 3

Ubah parameter sesuai kebutuhan. Ini tidak akan secara khusus memblokir root, tetapi setiap upaya gagal. Hati-hati dengan maxretrydan bantime. Jika Anda gagal dengan kata sandi Anda sendiri, ketika maxtretrydisetel ke rendah, Anda memblokir diri Anda untuk bantime. Mulai kembali fail2ban.

Saya tidak akan mencoba untuk memblokir IP selamanya karena banyak upaya datang dari IP dinamis yang dapat memblokir beberapa pengguna yang sah di kemudian hari.

(Beberapa distribusi menawarkan file jail.options untuk modifikasi Anda. Ini adalah tempat yang disukai untuk melakukan perubahan karena tidak boleh terpengaruh oleh pembaruan yang menimpa conf.)

Chris
sumber
4
info bagus, tapi saya rasa dia ingin tahu bagaimana cara memblokir semua login menggunakan root pengguna ... tidak dapat melihatnya dalam jawaban Anda. mungkin kamu lupa itu.
Mose
17

Salin kode ini ke file baru /etc/fail2ban/filter.d/sshd-root.conf:

[INCLUDES]

# Read common prefixes. If any customizations available -- read them from
# common.local
before = common.conf

[Definition]

_daemon = sshd

failregex = ^%(__prefix_line)sFailed (?:password|publickey) for root from <HOST>(?: port \d*)?(?: ssh\d*)?$

ignoreregex = 

HARAP Sadarilah bahwa Anda mungkin harus mengedit failregex untuk mengidentifikasi secara akurat upaya login root yang gagal - gunakan:

fail2ban-regex /var/log/auth.log /etc/fail2ban/filter.d/sshd-root.conf

untuk menguji apakah itu mengidentifikasi entri log yang benar.

Maka Anda perlu mengedit jail.local Anda untuk menggunakan filter baru - tambahkan sesuatu seperti:

[ssh]

enabled  = true
port     = 1:65535
filter   = sshd-root
logpath  = /var/log/auth.log
bantime  = 604800
maxretry = 3

Jelas Anda harus menyesuaikan nilai-nilai ini sesuai dengan kebutuhan Anda. Pengaturan di atas akan menghapus semua paket yang masuk dari alamat IP yang menyinggung setelah tiga upaya untuk login sebagai root, dan akan melepaskan IP lagi setelah satu minggu.

ChrisG
sumber
1
Ini benar-benar layak menjadi jawaban yang diterima, karena itu sebenarnya menjawab pertanyaan.
peelman
Ini jelas jawaban yang tepat. Terbaik untuk menonaktifkan login root di sshd config dan kemudian atur maxretry ke 1 di jail.conf.
anteatersa
1

Karena defaultnya /etc/fail2ban/filter.d/sshd.confsudah memiliki regex untuk AllowUsers dan DenyUsers ...

...
^%(__prefix_line)sUser .+ from <HOST> not allowed because not listed in AllowUsers\s*$
^%(__prefix_line)sUser .+ from <HOST> not allowed because listed in DenyUsers\s*$
...

Berikut ini akan:

  • Izinkan koneksi dari exampleusernameIP eksternal
  • Dan rootatau koneksi apa pun di jaringan lokal (192.168.0. *)

Baris `/ etc / ssh / sshd_config ':

AllowUsers exampleusername *@192.168.0.* *@localhost *@127.0.0.1

Dan di /etc/fail2ban/jail.conf:

ignoreip = 127.0.0.1/8 192.168.0.2/255
...
...
[ssh]

enabled  = true
port     = ssh
filter   = sshd
logpath  = /var/log/auth.log
maxretry = 1
findtime = 99999999 
bantime  = 99999999
jmunsch
sumber
0

Bagaimana Anda memblokir login ssh? / bin / false atau opsi sshd_config DenyUsers?

Saya tidak bisa memikirkan jawaban yang keluar dari kepala saya, tetapi IIRC menyangkal mem-parsing file log, jadi lihat saja apakah Anda mendapatkan entri yang gagal dalam file log setelah seseorang mencoba untuk masuk log ke root dengan itu dinonaktifkan

MitziMeow
sumber
2
Saya mengedit file konfigurasi ssh /etc/ssh/sshd_config,, dan berubah PermitRootLogindari ya menjadi tidak. Saya tidak tahu apakah ini relevan, tetapi saya telah menginstal rssh untuk hanya mengizinkan pengguna tertentu untuk masuk menggunakan sftp tetapi tidak mengizinkan ssh.
samwell
apakah Anda memeriksa file log ssh jika ada upaya login pengguna yang gagal?
MitziMeow
Ya, saya dapat melihat bahwa ada banyak upaya login pengguna yang gagal oleh banyak alamat ip yang berbeda, yang saya tidak kenal.
samwell
maka denyhosts seharusnya bekerja
MitziMeow