GNU/Linux >> Belajar Linux >  >> Linux

Delapan cara untuk melindungi akses SSH di sistem Anda

SSH. Kami tahu itu. Kami menyukainya. Kita harus menggunakannya.

Saya akan membawa Anda melalui delapan langkah untuk lebih membantu Anda mengamankan layanan SSH di jaringan Anda. Saya pikir kita semua menghargai pentingnya SSH. Ini memungkinkan kita untuk terhubung ke dan dari perangkat Linux, server Unix, peralatan jaringan, dan terkadang bahkan kotak Windows. Saya tidak akan mencoba untuk menjual kepada Anda tentang seberapa sering SSH digunakan atau seberapa penting itu. Saya akan memberikan daftar periksa yang solid yang dapat Anda gunakan untuk memastikan layanan SSH di lingkungan Anda terkunci.

1. Cadangkan file konfigurasi

Pertama, buat cadangan file konfigurasi sebelum membuat perubahan besar. Ini adalah sedikit nasihat yang umum, tetapi ini adalah nasihat yang nyata. Sangat mudah, hanya membutuhkan waktu sebentar, dan melindungi Anda jika terjadi kesalahan saat mengedit file. Dan siapa yang tidak melakukan kesalahan di Vim?

# cp /etc/ssh/sshd_config ~/sshd_config_original

Lihat, itu tidak terlalu buruk.

Tantangan - Apakah Anda secara konsisten mencadangkan file konfigurasi sebelum melakukan pengeditan besar?

2. Setel pesan spanduk

Memang, ini tentang persyaratan hukum seperti yang lainnya, tetapi sekali lagi, pengaturan ini hanya membutuhkan beberapa saat. Anda sebenarnya dapat memberikan beberapa informasi yang cukup bagus dalam pesan spanduk juga. Pertama, kita akan menulis pesan banner di /etc/issue.net file dengan menggunakan Vim. Kemudian kita akan membuka sshd_config file dan suruh untuk menggunakan konten issue.net sebagai spanduk.

# vim /etc/issue.net
Warning! Authorized use only.
This server is the property of MyCompanyName.com

[ Anda mungkin juga menyukai: otomatisasi sandi SSH di Linux dengan sshpass ]

Jelas, Anda ingin membuat sesuatu yang spesifik untuk organisasi Anda. Hapus semua informasi yang sudah ada di issue.net berkas.

Selanjutnya, beri tahu SSH untuk menggunakan pesan spanduk. Buka sshd_config file di Vim, dan temukan baris yang bertuliskan Banner . Anda ingat bahwa Anda dapat menggunakan karakter garis miring dalam mode Perintah Vim untuk mencari kata kunci file, bukan? Misalnya, /banner

# vim /etc/ssh/sshd_config

Temukan baris yang bertuliskan # tidak ada jalur spanduk default , lalu batalkan komentar pada baris berikutnya (tertulis Banner ).


# no default banner path
Banner /etc/issue.net

Simpan perubahan Anda di Vim dengan :wq dan kemudian restart layanan SSH:

# systemctl restart sshd

Catatan:Saya tidak akan mengingatkan Anda untuk memulai ulang SSH mulai saat ini. Setiap kali Anda membuat perubahan pada file konfigurasi, Anda harus memulai ulang layanan.

Tantangan - Apakah pesan spanduk konsisten di semua perangkat SSH di jaringan Anda?

3. Cegah sandi kosong

Ini sepertinya tidak perlu dipikirkan, tetapi kata sandi kosong jelas merupakan ide yang buruk. Anda mungkin memiliki utilitas lain, seperti Pluggable Authentication Modules (PAM), yang mengatur kata sandi biasa Anda, tetapi sebaiknya pastikan juga SSH menerapkan pengaturan keamanan yang bertanggung jawab.

Buka /etc/ssh/sshd_config file di Vim, lalu temukan baris yang bertuliskan PermitEmptyPasswords . Batalkan komentar, dan ganti ya nilai dengan tidak .

PermitEmptyPasswords no

Itu dia.

4. Cegah pengguna root melintasi jaringan melalui SSH

Idenya di sini cukup sederhana. Kirim kredensial pengguna standar di seluruh jaringan, bukan kredensial root. Setelah Anda membuat koneksi SSH menggunakan akun pengguna standar, gunakan su atau sudo untuk meningkatkan hak istimewa Anda.

Buka file konfigurasi SSH, lalu batalkan komentar PermitRootLogin garis. Edit setelan dari ya untuk tidak .

PermitRootLogin no

Tantangan - organisasi Anda telah menggunakan sudo , kan?

5. Daftar putih akun pengguna tertentu

Jika Anda sudah mencegah penggunaan akun pengguna root di seluruh SSH, mengapa tidak melangkah lebih jauh dan secara eksplisit menyatakan pengguna mana yang dapat terhubung ke server? Mungkin Anda memiliki akun admin non-root biasa yang Anda gunakan atau yang sudah dikonfigurasi dengan sudo hak istimewa.

Dalam file konfigurasi SSH, tambahkan baris berikut (tidak ada di sana secara default):

AllowUsers user1

Saya akan meletakkannya di dekat PermitRootLogin no pengaturan.

Omong-omong, Anda sebenarnya dapat memfilter dengan semua setelan berikut:AllowUsers , DenyUsers , AllowGroups , DenyGroups . Saya sengaja menulisnya dalam urutan itu—itulah urutan pemrosesannya. Anda dapat menemukan informasi lebih lanjut di halaman manual untuk sshd_config .

Tantangan - berhati-hatilah dengan siapa yang berwenang.

Catatan:Anda juga dapat membatasi koneksi melalui iptables.

6. Tidak ada lagi port 22

Perubahan umum lainnya adalah mengonfigurasi SSH untuk mendengarkan pada port yang berbeda dari 22/tcp standar yang kita semua hafal. Sudah ada entri di sshd_config berkas.

Anda dapat mengomentari pengaturan port default dan menambahkan baris lain, seperti yang saya lakukan di bawah ini:

#Run SSH on a non-standard port
#Port 22
Port 2222

Saya menduga banyak orang menggunakan 2222 sebagai nomor port pengganti, jadi Anda mungkin ingin membuat standar pada sesuatu yang sedikit lebih unik.

Anda harus ingat untuk menambahkan nomor port non-standar baru ke upaya koneksi SSH Anda mulai saat ini. Misalnya:

# ssh -p 2222 [email protected]

Tantangan - apakah Anda memiliki nomor port non-standar yang sama yang dikonfigurasi untuk semua tujuan SSH Anda? Konsistensi akan membuat hidup Anda lebih mudah.

7. Waktu habis!

Tip berikutnya berkaitan dengan koneksi waktu habis. ClientAliveInterval mengelola koneksi SSH yang tidak digunakan. Server mengirim pesan ke klien dan mengharapkan tanggapan. ClientAliveInterval adalah ruang waktu antara pesan. ClientAliveCountMax mendefinisikan berapa kali server akan melakukan ini sebelum memutuskan klien tidak benar-benar ada lagi. Pada saat itu, koneksi terputus.

Berikut adalah contoh konfigurasi yang memeriksa setiap 60 detik dan akan melakukannya tiga kali:

ClientAliveInterval 60
ClientAliveCountMax 3

Edit nilai-nilai ini menjadi sesuatu yang masuk akal bagi lingkungan Anda.

Catatan:Jika Anda menggunakan SSH untuk melakukan tunnel untuk koneksi lain, Anda mungkin perlu memastikan bahwa intervalnya cukup panjang untuk mendukung aplikasi lain yang menggunakannya dengan benar.

Ada ServerAliveInterval nilai yang dapat Anda konfigurasikan di sisi klien juga. Hal ini memungkinkan klien untuk memutuskan koneksi ke server SSH yang tidak responsif.

8. Ini kuncinya

Salah satu pengaturan keamanan paling umum untuk SSH hari ini adalah otentikasi berbasis kunci. Selama bertahun-tahun saya mengajar Linux, metode otentikasi ini menjadi semakin umum. Sebenarnya, saya tidak akan mencoba ujian admin Red Hat tanpa merasa percaya diri dalam proses ini. Untungnya, itu tidak sulit.

Mari kita lakukan tinjauan singkat. Otentikasi berbasis kunci menggunakan kriptografi asimetris. Itu berarti ada dua kunci, berbeda tetapi secara matematis terkait satu sama lain. Satu bersifat pribadi dan tidak pernah dikirim melalui jaringan. Yang lainnya bersifat publik dan dapat ditransfer melalui jaringan. Karena kunci terkait, kunci tersebut dapat digunakan untuk mengonfirmasi identitas—identitas seperti upaya autentikasi SSH.

Anda harus membuat pasangan kunci pada komputer klien SSH lokal dan kemudian mentransfer kunci publik melalui jaringan ke server SSH tujuan. Dengan kata lain, kunci akan mengidentifikasi Anda di stasiun kerja admin Anda. Setelah konfigurasi ini diterapkan, Anda tidak lagi dimintai sandi saat membuat koneksi SSH.

Prosesnya hanya membutuhkan beberapa langkah.

Pertama, buat pasangan kunci:

# ssh-keygen

Kunci disimpan di direktori home Anda di direktori tersembunyi bernama .ssh , dan nama kunci default adalah id_rsa (kunci pribadi) dan id_rsa.pub (kunci publik).

Selanjutnya, kirim kunci publik pengguna1 melalui jaringan ke server SSH tujuan yang terletak di 10.1.0.42:

# ssh-copy-id [email protected]

Terakhir, uji koneksi:

# ssh [email protected]

Perhatikan bahwa Anda tidak ditantang untuk mendapatkan kata sandi.

Karena Anda sekarang telah menggunakan otentikasi berbasis kunci, Anda dapat mengedit sshd_config file untuk mencegah login apa pun berdasarkan kata sandi. Setelah Anda mengonfigurasi setelan ini, hanya autentikasi berbasis kunci yang akan diterima.

Edit dua baris ini dalam file:

PasswordAuthentication no
PublicKeyAuthentication yes

[ Ingin mempelajari lebih lanjut tentang keamanan? Lihat daftar periksa keamanan dan kepatuhan TI. ] 

Menutup

Saya telah membuat daftar beberapa konfigurasi SSH yang umum namun efektif untuk membantu Anda mengamankan lingkungan dengan lebih baik. Ingat, dengan keamanan, tidak ada pengaturan yang mungkin melindungi perangkat Anda. Tujuannya adalah lapisan keamanan, kombinasi yang membantu mengurangi ancaman keamanan. Saya sangat menyarankan agar Anda mengatur kunci Anda dengan hati-hati jika Anda menerapkan otentikasi berbasis kunci. Anda mungkin juga mempertimbangkan untuk menggunakan /etc/ssh/sshd_config terpusat file untuk mempertahankan konfigurasi keamanan yang konsisten di server SSH Anda. Jangan lupa untuk memulai ulang SSH setiap kali Anda mengubah file konfigurasi.


Linux
  1. Cara Membandingkan Sistem Anda (CPU, File IO, MySQL) dengan Sysbench

  2. Bagaimana Anda Dapat Melindungi Komputer Anda?

  3. [Linux] :Shellinabox – Akses berbasis web ke Terminal SSH Anda

  1. Keamanan Linux:Lindungi sistem Anda dengan fail2ban

  2. Ssh – Salin File Kembali Ke Sistem Lokal Dengan Ssh?

  3. SSH - Cara memasukkan perintah -t di file ~/.ssh/config

  1. 4 Cara untuk Mengidentifikasi Siapa yang Masuk di Sistem Linux Anda

  2. 5 Metode untuk Mengidentifikasi Jenis Sistem File Linux Anda (Ext2 atau Ext3 atau Ext4)

  3. Bagaimana cara memberikan akses ssh ke pengguna di Ubuntu