Cara Menyediakan penundaan login di ssh

11

Saya ingin memberikan penundaan masuk saat masuk melalui ssh. Saya mencoba beberapa cara untuk melakukan hal yang sama tetapi tidak dapat menemukan hasil yang diinginkan.

Saya mencoba langkah-langkah yang diberikan oleh tautan yang diberikan.

http://hostingfu.com/article/ssh-dictionary-attack-prevention-with-iptables

iptables -N SSH_CHECK
iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j SSH_CHECK
iptables -A SSH_CHECK -m recent --set --name SSH
iptables -A SSH_CHECK -m recent --update --seconds 60 --hitcount 4 --name SSH -j DROP

Saya tidak memiliki modul pam yang diinstal pada mesin saya, jadi saya tidak dapat membuat modifikasi apa pun yang terkait dengan file pam

Jadi, ada yang mengizinkan saya menyarankan cara lain untuk melakukan hal yang sama?

Saya memiliki kernel linux telanjang yang berjalan pada platform tertanam.

Ram
sumber
Mengapa Anda ingin mengajukan penundaan? Apa tujuan utama Anda?
CVn
Saya ingin mencegah kemungkinan serangan brute force.
Ram
3
Cukup memperkenalkan penundaan pada koneksi baru tidak akan mencegah serangan brute force. Anda perlu melihat alat yang dirancang untuk memecahkan masalah Anda yang sebenarnya. Saya menyarankan mulai dengan melihat fail2ban yang secara khusus dirancang untuk bereaksi terhadap entri log berulang dengan mengeksekusi perintah yang diberikan, dan sering digunakan secara khusus untuk mencegah upaya brute force untuk mendapatkan akses yang tidak sah.
CVn
Itu baik-baik saja Michael tetapi saya harus melakukannya dengan infrastruktur yang ada yang saya miliki dengan saya, Bagaimana saya bisa memperkenalkan penundaan setiap kali saya terhubung melalui ssh.
Ram
2
Bung, fail2bangunakan infrastruktur tepat yang sudah Anda miliki - ssh log dan aturan iptables.
Shadur

Jawaban:

11

Metode # 1 - menonaktifkan login kata sandi

Jika Anda tidak memerlukan izin masuk dengan kata sandi, maka hanya dengan menolaknya akan memberi Anda efek yang diinginkan. Cukup tambahkan baris ini ke /etc/ssh/sshd_config:

PasswordAuthentication     no

Selain itu, Anda dapat membatasi penggunaan kata sandi untuk pengguna tertentu yang menggunakan Matchoperator di sshd_config:

Match User root,foo,bar
    PasswordAuthentication no
Match User user1,user2
    PasswordAuthentication yes

Metode # 2 - iptables

Anda juga dapat menggunakan iptablesuntuk melacak upaya login yang gagal dan menjatuhkannya setelah batas tertentu. Ini mirip dengan contoh Anda dari hostingfu tetapi lebih mudah dimengerti.

$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --set
$ sudo iptables -I INPUT -p tcp --dport <YOUR PORT HERE> -i eth0 -m state --state NEW -m recent --update --seconds 60 --hitcount 4 -j DROP

CATATAN: Baris pertama pada dasarnya membuat aturan yang hanya berlaku untuk paket yang digunakan untuk upaya koneksi baru pada port ssh. Baris kedua mengatakan bahwa jika ada lebih dari 4 upaya dari IP dalam 60 detik, maka lalu lintas dari IP tersebut harus dihitamkan. Solusi ini tidak peduli apakah upaya pada akun pengguna berbeda atau tidak.

Metode # 3 - gunakan PAM

Saya menyadari Anda mengatakan Anda tidak memiliki PAM yang tersedia, tetapi jika Anda melakukannya, ini adalah bagaimana Anda dapat menunda upaya login yang gagal. Jika maksud Anda hanya menunda kegagalan login ssh maka Anda dapat menggunakan modul PAM pam_faildelay. Modul PAM ini umumnya disertakan dengan campuran default.

Pada sistem Fedora 19 saya, ini merupakan bagian dari instalasi default.

Contoh

Cari file yang terkait dengan pam_faildelay.

$ locate pam|grep -i delay
/usr/lib/security/pam_faildelay.so
/usr/lib64/security/pam_faildelay.so
/usr/share/doc/pam-1.1.6/html/sag-pam_faildelay.html
/usr/share/doc/pam-1.1.6/txts/README.pam_faildelay
/usr/share/man/man8/pam_faildelay.8.gz

Lihat apa RPM yang disediakan oleh:

$ rpm -qf /usr/share/man/man8/pam_faildelay.8.gz
pam-1.1.6-12.fc19.x86_64
pam-1.1.6-12.fc19.i686

Pemakaian

Untuk membuat penundaan kegagalan, Anda cukup menambahkan baris seperti ini ke sshdfile konfigurasi pam Anda . Lagi pada Fedora / CentOS / sistem RHEL file ini terletak di sini: /etc/pam.d/sshd.

Untuk membuat penundaan 10 detik:

       auth  optional  pam_faildelay.so  delay=10000000

Penundaan 60 detik:

       auth  optional  pam_faildelay.so  delay=60000000

Contoh

Dengan penundaan 20 detik menggunakan metode di atas, saya mengubah sshdfile konfigurasi PAM saya seperti:

#%PAM-1.0
auth       required     pam_sepermit.so
auth       substack     password-auth
auth       include      postlogin
auth       optional     pam_faildelay.so  delay=20000000
account    required     pam_nologin.so
account    include      password-auth
password   include      password-auth
# pam_selinux.so close should be the first session rule
session    required     pam_selinux.so close
session    required     pam_loginuid.so
# pam_selinux.so open should only be followed by sessions to be executed in the user context
session    required     pam_selinux.so open env_params
session    optional     pam_keyinit.so force revoke
session    include      password-auth
session    include      postlogin

Sekarang ketika saya masuk:

$ date
Tue Dec 17 09:16:30 EST 2013

$ ssh blah@localhost
blah@localhost's password: 
Permission denied, please try again.
blah@localhost's password: 

...Control + C....

$ date
Tue Dec 17 09:16:50 EST 2013

Referensi

slm
sumber
Terima kasih @slm tapi sekali lagi saya tidak dapat menginstal modul pam dan otentikasi sshd saya bukan dari pam. Apakah Anda ingin menyarankan cara lain
Ram
@AmitSinghTomar - maaf saya telah memperluas jawaban saya. Saya mencoba membuat jawaban kanonik untuk pertanyaan Anda yang mencakup semua metode, bukan hanya milik Anda saja.
slm
Terima kasih lagi @slm untuk jawaban detail Anda, saya tertarik untuk mengikuti metode kedua yang Anda sarankan. Akan coba dan beri tahu Anda hasilnya, Juga memberi saya penundaan dengan upaya login pertama kali melalui ssh?
Ram
@AmitSinghTomar - tidak hanya menunda setelah 4 upaya. Ketika --hitcount 4melebihi aturan akan black hole alamat IP yang menyinggung selama 60 detik.
slm
Satu hal yang ingin saya ketahui dari Anda, untuk metode ke-3 Anda untuk bekerja (PAM), apakah perlu ssh otentikasi harus terjadi melalui pam?
Ram
3

Nonaktifkan kata sandi. Tidak ada kata sandi, tidak ada serangan brutal.

Anda dapat menggunakan ssh-keys untuk masuk - yang seharusnya lebih aman dan lebih sulit untuk diretas.

Nils
sumber
0

Pada instalasi bersih Ubuntu 16.04 with openssh-server, sudah ada penundaan untuk upaya kata sandi yang salah lebih dari nol karakter. Penundaan tampaknya lebih dari 1 detik .

Untuk percobaan kata sandi yang salah dari nol karakter tidak ada penundaan sehingga penyerang akan segera menentukan bahwa kata sandi Anda bukan string kosong jika memang bukan string kosong. Karena string kosong mungkin tidak diizinkan sebagai kata sandi, mereka sudah tahu itu sehingga mereka tidak akan mencoba string kosong.

H2ONaCl
sumber