Bagaimana saya bisa meningkatkan keamanan ssh? Bisakah saya memerlukan kunci dan kata sandi?


16

Saya memiliki jaringan kecil server dan saya ingin meningkatkan keamanan umum. Saya tidak punya cukup waktu / uang / paranoia untuk mengatur VPN - apa cara dasar saya dapat meningkatkan keamanan sistem saya?

Satu hal yang mungkin mengharuskan pengguna mengirim kunci mereka dan memasukkan kata sandi. Ini agak sulit bagi Google karena segala sesuatu tentang "kata sandi kunci ssh" adalah tentang sshing tanpa kata sandi. :-)

Satu skema yang selalu ingin saya mainkan adalah mensyaratkan bahwa koneksi yang masuk hanya berasal dari daftar putih alamat ip dyndns. Saya tahu beberapa kepala keamanan akan muntah ketika memikirkan ide itu, tetapi faktanya adalah hal itu akan menambah kompleksitas yang sangat signifikan untuk mengeksploitasi sebuah kotak.

Bagaimana menurut anda? Apa lagi yang ada di luar sana?


Anda juga dapat membatasi daftar pengguna yang diizinkan untuk terhubung menggunakan arahan AllowUsers atau DenyUsers. Lebih detail di posting ini .
Fred

Jawaban:


8

Login dengan kata sandi dan kunci sama dengan "hanya dengan kunci". Selama pembuatan kunci, Anda diminta untuk memasukkan frasa sandi. Jika Anda membiarkannya kosong, Anda tidak akan diminta kata sandi. Jika Anda mengisi beberapa frasa sandi, Anda akan dimintai setiap saat ketika Anda ingin masuk.

Jika Anda khawatir dengan keamanan, pertimbangkan beberapa saran yang disebutkan trilyun kali di forum ini:

  • Nonaktifkan ssh login untuk root
  • Izinkan akses ssh hanya dari alamat ip yang ditentukan (iptables, hosts.allow, ...)
  • Pindahkan port ssh ke port lain (lebih banyak ketidakjelasan daripada keamanan, tetapi berfungsi)
  • Monitor upaya masuk asing dan bereaksi sesuai itu
  • Selalu perbarui sistem Anda

Dll.

Pembaruan: Silakan merujuk ke jawaban di sini untuk cara meminta kunci publik dan kata sandi sistem lokal dengan server OpenSSH.


Terima kasih untuk semua tips Anda, akan melihat ke dalamnya. jika kunci dan kata sandi sama-sama diperlukan, maka jika seorang eksploitasi menemukan kata sandi (seperti jika pengguna menggunakannya di tempat lain yang tidak aman), mereka tidak dapat masuk tanpa kunci, dan jika pengeksploitasi mencuri kunci dari mesin pengguna , mereka tidak bisa masuk tanpa mengetahui kata sandi ... kan?
John Bachir

12
Ini tidak sama. Jika Anda hanya memerlukan kunci, server tidak dapat menerapkan kebijakan kekuatan kata sandi apa pun pada kunci tersebut. Seorang pengguna yang ceroboh dapat memiliki kunci pribadi yang tidak terenkripsi di sekitar klien yang membuat server Anda rentan jika kunci itu dicuri.
200_sukses

mkudlacek - saya tidak tahu tentang host. mari kita pergi dulu - googling sekitar, sepertinya ide daftar putih dyndns saya tidak begitu konyol, saya pikir saya akan mencobanya.
John Bachir

1
200_sukses - jadi mungkinkah diperlukan kunci dan kata sandi?
John Bachir

Saya juga menggunakan aplikasi DenyHosts untuk membantu mengunci orang yang terus mencoba masuk, dan gagal. Cara otomatis pro-aktif kecil yang bagus untuk daftar hitam orang-orang ..
James T Snell

6

Satu ide yang menurut saya menarik adalah port knocking - pada dasarnya, untuk membuat koneksi ssh, Anda harus terlebih dahulu menyelidiki urutan port lain, sebelum server ssh akan menerima permintaan koneksi. Jika urutan port yang benar tidak digunakan, tidak ada respons, sehingga secara efektif sepertinya tidak ada server ssh yang berjalan. Urutan port dapat disesuaikan dan dapat dibagikan dengan pengguna yang Anda inginkan; semua orang secara efektif tidak dapat terhubung.

Saya belum mencoba ini sendiri, tetapi dari apa yang saya dengar (yang sebenarnya tidak banyak, sebenarnya) overhead dapat diabaikan dan sangat menurunkan profil visibilitas Anda.


Saya akan menggunakan ini jika Anda hanya ingin "meningkatkan keamanan umum" tetapi Anda mungkin harus mencoba untuk memecahkan masalah keamanan tertentu.
Stefan Thyberg

Saya menggunakan ini di semua situs yang saya ssh, dan itu sangat efektif.
Sirex

Bukankah ini sama dengan memiliki kata sandi yang panjangnya 4 karakter?
John Bachir

tidak juga. Ada 65.536 port, dan 26 huruf. Anda juga memiliki urutan ketukan yang panjang, dan Anda dapat membatasi coba lagi menggunakan teknik firewall standar. Ini bukan keamanan per se, tapi itu bagus untuk dimiliki.
Sirex

lebih baik 8 atau 12 karakter lebih lama :-D
John Bachir

3

Tambalan terkait dengan mengaktifkan langsung di SSH dan banyak diskusi yang relevan:

Ini juga dapat dilakukan tanpa modifikasi dengan menggabungkan skrip verifikasi kata sandi dengan penggunaan ForceCommandopsi konfigurasi.

Akhirnya, meskipun tidak ada modul untuk itu, jika Anda memindahkan otentikasi kunci publik ke PAM maka Anda akan dapat meminta kedua langkah untuk lulus sebelum PAM dianggap otentikasi berhasil.


2

Gunakan saja

RequiredAuthentications publickey, password

di sshd_configjika Anda menggunakan sshd dari ssh.com. Fitur ini tidak tersedia di OpenSSH.


RequiredAuthenticationsjelas bukan ekstensi standar untuk OpenSSH
Hubert Kario

Apakah Anda tahu implementasi sshd mana yang mendukung ini?
John Bachir

Server Tectia SSH mendukungnya. BTW: gunakan @nameOfUser ketika membalas komentar mereka, dengan cara ini mereka akan diberitahu tentang balasannya
Hubert Kario

Fungsionalitas serupa didukung di OpenSSH pada versi 6.2: serverfault.com/a/562899
Søren Løvborg

1

Anda juga dapat menggunakan kata sandi satu kali untuk meningkatkan keamanan. Ini akan memungkinkan pengguna untuk masuk dari terminal tidak aman, yang mungkin memiliki keylogger, jika mereka sebelumnya membuat kata sandi berikutnya. Juga ada generator kata sandi yang dapat diinstal bahkan pada ponsel Java MIDP lama, yang selalu Anda bawa.


Ya, di server pribadi saya, saya menggunakan token Yubikey selain kata sandi saya. Token menghasilkan kata sandi satu kali. Keduanya diharuskan untuk mengautentikasi. Atau, saya mengizinkan mem-bypass pasangan kata sandi / otp jika Anda mengautentikasi dengan kunci SSH. Yubikey murah dan ada banyak perangkat lunak untuk mengintegrasikannya dengan Pam, sistem otentikasi Linux yang dapat diperluas.
Martijn Heemels

1

Saya akan merekomendasikan bahwa Anda tidak pernah menjalankan sshd, rdp atau layanan manajemen seperti itu tanpa batasan IP. Bahkan, saya sarankan membatasi akses ke layanan tersebut ke administrator yang terhubung melalui VPN.


1

Mengenai pertanyaan awal Anda tentang memerlukan kunci dan kata sandi, jika Anda menjalankan RHEL atau CentOS 6.3, ini sekarang dapat dilakukan. The catatan RHEL 6.3 rilis menggambarkannya, itu soal menambahkan ini ke sshd_config Anda

RequiredAuthentications2 publickey,password

0

Saya sangat setuju dengan 3molo. OpenSSH adalah server SSH standar untuk Linux dan Unix. Tidak ada alasan bagi kami untuk mengubahnya, terutama untuk keamanan. VPN harus menjadi solusi terbaik, yang dapat mengenkripsi lalu lintas kami dan memberikan otorisasi kata sandi 2 langkah.


0

Tidak yakin mengapa tidak ada yang menyebutkannya tetapi - Anda harus memastikan untuk menghasilkan kunci lebih lama dari 1024 bit default yang tidak lagi dianggap aman.

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.