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.