GNU/Linux >> Belajar Linux >  >> Linux

Semua yang Perlu Anda Ketahui tentang Linux OpenSSH Server

Suite OpenSSH adalah kumpulan alat canggih yang dimaksudkan untuk memfasilitasi kendali jarak jauh dan transfer data antar sistem jaringan. Ini terdiri dari sejumlah alat, termasuk SSH, SCP, SFTP, SSHD, dan banyak lagi. Setiap kali Anda menggunakan ssh untuk masuk ke mesin jarak jauh, kemungkinan besar Anda akan memanfaatkan server OpenSSH. Dalam panduan ini, kami akan memberikan diskusi mendalam tentang cara kerja OpenSSH dan cara menggunakannya dengan benar untuk memenuhi tuntutan keamanan yang terus meningkat. Jadi, jika Anda ingin mempelajari lebih lanjut tentang seluk-beluk OpenSSH, tetaplah bersama kami di sepanjang panduan ini.

Mendalami Server &Layanan OpenSSH

Server OpenSSH berada di jantung komunikasi jarak jauh antara mesin Linux dan/atau BSD. Beberapa fitur utamanya termasuk enkripsi lalu lintas, beberapa metode otentikasi yang kuat, tunneling yang aman, dan kemampuan konfigurasi yang canggih. Bagian di bawah ini memberikan pemahaman yang berarti tentang layanan dasar dan tips keamanan.

Dasar-Dasar Server OpenSSH

Seperti namanya, OpenSSH menggunakan protokol SSH (Secure Shell) untuk menyediakan koneksi jarak jauh dan fasilitas transfer data. Ini menghilangkan kerentanan keamanan yang terkait dengan metode lama seperti perintah FTP Linux dan telnet. OpenSSH memudahkan untuk mengautentikasi pengguna yang sah dan mengenkripsi koneksi jarak jauh.

Utilitas inti dari rangkaian OpenSSH yang bertanggung jawab untuk mengelola koneksi jarak jauh adalah Server OpenSSH atau sshd. Itu terus-menerus mendengarkan permintaan masuk dan mengatur jenis koneksi yang sesuai ketika permintaan baru masuk.

Misalnya, jika pengguna menggunakan program klien ssh untuk berkomunikasi dengan server, sshd akan menyiapkan sesi kendali jarak jauh segera setelah otentikasi berhasil. Jika pengguna menggunakan SCP, sshd akan memulai sesi penyalinan aman.

Pengguna akhir perlu memilih mekanisme komunikasi yang sesuai untuk koneksi mereka. Ini difasilitasi oleh alat-alat seperti ssh-add dan ssh-keygen. Ketika pengguna berhasil terhubung ke mesin jarak jauh menggunakan perintah ssh, dia akan disambut oleh konsol berbasis teks. Setiap perintah yang dimasukkan pada konsol ini akan dikirim melalui terowongan SSH terenkripsi untuk dijalankan pada mesin jarak jauh.

Menginstal dan Mengonfigurasi Server OpenSSH

Bagian berikut akan membahas cara menginstal daemon server OpenSSH dan mengkonfigurasinya. Kami akan menunjukkan opsi konfigurasi terbaik untuk penggunaan pribadi dan tujuan perusahaan. Kami juga akan menguraikan praktik terbaik untuk mengonfigurasi dan memperkuat OpenSSH di akhir bagian ini.

Cara Memasang Server OpenSSH

- -

Sebagian besar distribusi Linux modern datang dengan OpenSSH yang sudah diinstal. Namun, jika Anda perlu menginstalnya secara manual, Anda dapat melakukannya dengan menggunakan perintah sederhana berikut ini.

$ sudo apt install openssh-server

Perintah ini akan menginstal daemon server. Gunakan perintah di bawah ini untuk menginstal klien OpenSSH di sistem Anda.

$ sudo apt install openssh-client

Cara Mengonfigurasi Server OpenSSH

OpenSSH mendukung sejumlah besar opsi konfigurasi untuk mengontrol hal-hal seperti pengaturan komunikasi dan mode otentikasi. File sshd_config menentukan parameter konfigurasi dan menyimpan alamat file konfigurasi lainnya, termasuk satu atau lebih kunci host file dan authorized_keys file. Itu terletak di /etc/ssh/ direktori sistem file Anda.

Sebelum melanjutkan untuk mengubah beberapa parameternya, kami sarankan Anda mencadangkan salinan sshd_config saat ini. mengajukan. Anda dapat melakukannya dengan membuka emulator terminal Linux favorit Anda dan mengeluarkan perintah berikut.

$ sudo cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

Dengan cara ini, jika Anda mengacaukan sshd_config . Anda file, Anda selalu dapat kembali ke konfigurasi asli. Sekarang, Anda dapat melanjutkan untuk mengkonfigurasi server ssh Anda. Sebelum itu, kami menyarankan pembaca untuk menguji konfigurasi sshd yang efektif dengan menggunakan perintah sederhana di bawah ini.

$ sudo sshd -T

Sekarang setelah Anda mencadangkan sshd_confi . Anda g dan melihat pengaturan default, sekarang saatnya untuk mengedit file konfigurasi. Kami akan menggunakan editor teks vim untuk membuka dan mengedit file konfigurasi kami. Namun, Anda dapat menggunakan editor teks Linux apa pun yang Anda inginkan.

$ sudo vim /etc/ssh/sshd_config

Seperti yang harus Anda perhatikan, sudah ada sejumlah opsi yang telah dikonfigurasi sebelumnya. Namun, kebanyakan dari mereka berkomentar. Anda dapat mengaktifkannya dengan menghapus komentar pada baris tertentu yang menentukan parameter opsi. Keluarkan pound “#” simbol dari awal baris untuk menghapus komentarnya. Kami membahas beberapa opsi penting di bawah ini.

  • TerimaEnv

Opsi ini menentukan variabel lingkungan mana yang dikirim oleh klien yang dapat disalin ke lingkungan jarak jauh.

  • AlamatKeluarga

Mendefinisikan keluarga alamat IP untuk penggunaan sshd. Tiga opsi yang tersedia adalah – any, inet, dan inet6.

  • AllowAgentForwarding

Opsi ini menentukan apakah penerusan ssh-agent diizinkan atau tidak.

  • AllowStreamLocalForwarding

Menentukan apakah penerusan soket domain Unix diizinkan atau tidak.

  • AllowTcpForwarding

Menentukan apakah penerusan TCP diizinkan atau tidak.

  • IzinkanPengguna

Opsi ini dapat menentukan daftar nama pengguna yang diizinkan mengakses berdasarkan pola. Semua nama pengguna diizinkan secara default.

  • Metode Otentikasi

Opsi ini menyatakan metode otentikasi yang harus diselesaikan pengguna sebelum menerima akses.

  • AuthorizedKeysFile

Opsi ini menentukan file yang berisi kunci publik untuk otentikasi pengguna.

  • ChallengeResponseAuthentication

Saat diaktifkan, opsi ini memungkinkan autentikasi tantangan-tanggapan.

  • Direktori Chroot

Menentukan direktori root, yang akan ditampilkan kepada pengguna yang telah berhasil mengautentikasi.

  • Cipher

Opsi ini mendefinisikan sandi kriptografi yang diizinkan oleh server OpenSSH. Ada beragam pilihan yang tersedia.

  • Kompresi

Menentukan apakah kompresi diperbolehkan dan, jika diperbolehkan, pada tahap mana.

  • TolakPengguna

Opsi ini dapat digunakan untuk menentukan daftar nama pengguna yang ditolak aksesnya berdasarkan suatu pola.

  • ForceCommand

Ini dapat digunakan untuk memaksa menjalankan perintah tertentu. Itu membuat server mengabaikan perintah apa pun yang disediakan oleh klien ssh dan apa pun yang ada di ~/.ssh/rc .

  • GatewayPorts

Opsi ini menentukan apakah host jarak jauh dapat terhubung ke port yang telah diteruskan untuk sisi klien.

  • GSSAPIAutentikasi

Ini digunakan untuk menunjukkan apakah otentikasi pengguna berbasis GSSAPI diizinkan atau tidak.

  • Otentikasi Berbasis Host

Opsi ini menentukan apakah kunci publik yang ada di mesin klien dapat mengotentikasi host di server jauh.

  • HostbasedUsesNameFromPacketOnly

Opsi ini menentukan apakah server perlu melakukan pencarian nama terbalik untuk nama yang ada di /.shosts , ~/.rhosts , dan /etc/hosts.equiv file.

  • HostKey

Ini dapat digunakan untuk mendefinisikan file yang berisi kunci host pribadi. Admin dapat menentukan beberapa file kunci. yang default adalah /etc/ssh/ssh_host_dsa_key , /etc/ssh/ssh_host_ecdsa_key , /etc/ssh/ssh_host_ed25519_key dan /etc/ssh/ssh_host_rsa_key .

  • Algoritma HostKey

Opsi ini mendefinisikan algoritme kunci host yang disediakan oleh server ssh. OpenSSH mendukung sejumlah besar algoritme untuk tujuan ini.

  • AbaikanRhost

Memberi tahu server untuk mengabaikan .rhosts dan .shosts file untuk RhostsRSAAuthentication dan Otentikasi Berbasis Host .

  • KbdInteractiveAuthentication

Opsi ini menentukan apakah server mengizinkan otentikasi keyboard-interaktif atau tidak.

  • KexAlgorithms

Ini digunakan untuk menyatakan algoritma yang tersedia untuk pertukaran kunci ssh. OpenSSH mendukung semua algoritme pertukaran kunci utama, termasuk Diffie Hellman dan Elliptic Curves.

  • ListenAddress

Mendefinisikan alamat lokal mana yang harus didengarkan daemon sshd.

  • LoginGraceTime

Opsi ini menentukan waktu setelah sshd memutuskan koneksi pengguna jika gagal login dengan sukses.

  • Level Log

Ini mendefinisikan tingkat verbositas pesan log untuk sshd.

  • MAC

Opsi ini digunakan untuk menentukan algoritma Message Authentication Code (MAC) yang tersedia. Ini digunakan untuk melindungi integritas data.

  • MaxAuthTries

Opsi ini menentukan berapa kali pengguna dapat mencoba mengautentikasi ke server.

  • Otentikasi Sandi

Menentukan apakah pengguna jarak jauh dapat masuk menggunakan otentikasi berbasis kata sandi.

  • PermitEmptyPasswords

Opsi ini menentukan apakah pengguna dapat menggunakan sandi kosong untuk login jarak jauh.

  • IzinRootLogin

Opsi ini menentukan apakah login root diperbolehkan atau tidak.

  • IzinTTY

Opsi ini menentukan apakah TTY semu diizinkan atau tidak.

Batalkan komentar pada baris yang berisi salah satu opsi di atas dan atur nilai opsi yang diinginkan. Bagian di bawah ini mengilustrasikan beberapa praktik pengerasan keamanan umum untuk OpenSSH.

Cara Memperkuat Keamanan Server OpenSSH

Karena OpenSSH bertindak sebagai pintu depan ke server Anda, sangat penting untuk memperkuat keamanannya. Coba pertahankan saran berikut untuk membuat login jarak jauh ekstra aman.

1. Nonaktifkan Login Root

Anda tidak boleh mengizinkan login root di server ssh Anda karena eskalasi akun root dapat membahayakan seluruh server. Selain itu, akun pengguna root terus-menerus ditargetkan oleh pengguna jahat. Jadi, lebih baik untuk membuat pengguna biasa dan mengizinkan izin sudo untuk itu. Anda dapat Menonaktifkan login root dengan menyetel nilai PermitRootLogin ke tidak.

PermitRootLogin no

2. Batasi Upaya Autentikasi

Admin harus membatasi jumlah upaya login dari host jarak jauh untuk mencegah upaya login paksa. Munculnya tentara bot yang besar telah membuat ini lebih penting dari sebelumnya. Gunakan opsi MaxAuthTries untuk mengatur jumlah upaya otentikasi yang diizinkan ke server Anda. Banyak admin menganggap tiga sebagai nilai yang dapat diterima untuk opsi ini. Namun, Anda dapat mengaturnya berdasarkan standar keamanan Anda.

MaxAuthTries 3

3. Kurangi Waktu Tenggang Masuk

Cara lain untuk mencegah bot otomatis adalah dengan mengurangi waktu tenggang login. Ini adalah jumlah waktu di mana pengguna harus berhasil mengotentikasi setelah terhubung ke server. sshd_config file mendefinisikan nilai ini dalam hitungan detik.

LoginGraceTime 20

4. Nonaktifkan Otentikasi Kata Sandi

Anda hanya boleh mengizinkan pengguna untuk masuk ke server menggunakan otentikasi berbasis kunci. Jadi, pastikan untuk menonaktifkan skema otentikasi berbasis kata sandi. Anda dapat melakukannya dengan menyetel nilai PasswordAuthentication ke tidak.

PasswordAuthentication no

Ini juga merupakan ide yang baik untuk menonaktifkan kata sandi kosong. Setel nilai bidang PermitEmptyPasswords ke no.

PermitEmptyPasswords no

5. Nonaktifkan Metode Otentikasi Lainnya

OpenSSH mendukung beberapa metode otentikasi tambahan selain otentikasi berbasis kunci dan kata sandi. Anda harus menonaktifkannya sama sekali setelah menyiapkan autentikasi berbasis kunci dan menonaktifkan autentikasi kata sandi.

ChallengeResponseAuthentication no
KerberosAuthentication no
GSSAPIAuthentication no

6. Nonaktifkan Penerusan X11

Penerusan X11 digunakan untuk menampilkan aplikasi grafis di server ke mesin host jarak jauh. Namun, itu tidak diperlukan untuk sebagian besar server perusahaan. Jadi, nonaktifkan jika Anda tidak memerlukan fitur ini.

X11Forwarding no

Setelah menonaktifkan Penerusan X11, Anda perlu mengomentari semua referensi ke AcceptEnv . Cukup tambahkan hash(#) sebelum baris untuk mengomentarinya.

7. Nonaktifkan Opsi Lain-lain

Nonaktifkan opsi berikut yang digunakan untuk tunneling dan forwarding jika Anda tidak membutuhkannya untuk server Anda.

AllowAgentForwarding no
AllowTcpForwarding no
PermitTunnel no

8. Nonaktifkan Spanduk SSH

Spanduk ssh verbose diaktifkan secara default dan menampilkan informasi penting tentang server. Peretas dapat memanfaatkan informasi ini untuk merencanakan serangan di server Anda. Jadi, sebaiknya nonaktifkan banner ssh verbose.

DebianBanner no

Jika opsi ini tidak ada di sshd_config Anda file, tambahkan untuk menonaktifkan spanduk.

9. Terapkan Daftar Izin Alamat IP

Dalam kebanyakan kasus, Anda akan mengakses server jarak jauh dari beberapa alamat IP yang diketahui. Anda dapat membuat alamat IP yang memungkinkan daftar untuk mencegah orang lain mengakses server Anda. Ini mengurangi risiko pelanggaran server, bahkan jika kunci pribadi Anda telah disusupi.

Namun, Anda harus berhati-hati saat menerapkan daftar izin IP dan menahan diri untuk tidak menggunakan alamat dinamis karena alamat tersebut sangat sering berubah.

Untuk menentukan daftar yang diizinkan, pertama-tama cari tahu alamat IP yang sedang Anda gunakan untuk terhubung ke server OpenSSH. Anda dapat melakukannya dengan menjalankan perintah berikut di terminal Anda.

$ w

Catat alamat IP di bawah label ‘FROM '. Kami akan menganggap contoh alamat IP 203.0.113.1 untuk sisa panduan ini. Sekarang, buka file konfigurasi ssh Anda dan gunakan AllowUsers arahan konfigurasi, seperti yang ditunjukkan di bawah ini.

AllowUsers *@203.0.113.1

Baris di atas akan membatasi semua pengguna jarak jauh ke alamat IP tertentu. Anda dapat mengubahnya ke rentang alamat IP menggunakan notasi Classless Inter-Domain Routing (CIDR), seperti yang diilustrasikan di bawah.

AllowUsers *@203.0.113.0/24

10. Batasi Shell Pengguna Jarak Jauh

Itu selalu merupakan praktik yang baik untuk membatasi operasi yang dilakukan oleh pengguna jarak jauh. Anda dapat melakukan ini dengan membatasi shell pengguna jarak jauh. OpenSSH memungkinkan beberapa opsi konfigurasi untuk membantu tugas ini. Kami akan menunjukkan cara membatasi akses shell pengguna ke SFTP saja menggunakan opsi ini.

Pertama, kita akan membuat pengguna baru bernama mary menggunakan /usr/sbin/nologin kerang. Ini akan menonaktifkan login interaktif untuk pengguna tersebut tetapi tetap menyediakan sesi non-interaktif untuk melakukan operasi seperti transfer file.

$ sudo adduser --shell /usr/sbin/nologin mary

Perintah ini membuat pengguna mary dengan shell nologin. Anda juga dapat menonaktifkan shell interaktif untuk pengguna yang sudah ada dengan menggunakan perintah berikut.

$ sudo usermod --shell /usr/sbin/nologin alex

Jika Anda mencoba masuk sebagai salah satu pengguna di atas, permintaan Anda akan ditolak.

$ sudo su alex
This account is currently not available.

Namun, Anda masih dapat melakukan tindakan yang tidak memerlukan shell interaktif dengan menggunakan akun ini.

Selanjutnya, buka konfigurasi sshd Anda sekali lagi dan gunakan ForceCommand internal-sftp dan ChrootDirectory direktif untuk membuat pengguna khusus SFTP yang sangat ketat. Kami akan membatasi pengguna alex untuk contoh ini. Selain itu, sangat disarankan untuk menambahkan blok Pencocokan apa pun di bagian bawah sshd_config . Anda .

Match User alex
ForceCommand internal-sftp
ChrootDirectory /home/alex/

Keluar dari file konfigurasi dan uji apakah file konfigurasi menyebabkan kesalahan atau tidak. Anda dapat melakukannya dengan menjalankan perintah berikut di emulator terminal Linux Anda.

$ sudo sshd -t

Jika semuanya berjalan dengan baik, Anda seharusnya membuat konfigurasi yang kuat untuk pengguna alex. Sesi login interaktif dinonaktifkan untuk pengguna ini, dan dia hanya memiliki akses ke direktori beranda akunnya.

Mengakhiri Pikiran

Karena OpenSSH merupakan bagian integral dari keamanan server jarak jauh Anda, penting untuk mempelajari cara kerjanya. Itulah sebabnya editor kami telah menyajikan berbagai informasi berguna mengenai server OpenSSH dalam panduan ini. Topiknya mencakup cara kerja OpenSSH, cara membaca dan mengedit file konfigurasi, dan cara menerapkan praktik keamanan terbaik.

Semoga kami dapat memberikan informasi yang Anda cari. Tandai panduan ini untuk referensi di masa mendatang. Dan jangan lupa untuk meninggalkan komentar jika Anda memiliki pertanyaan atau saran untuk membuat panduan ini lebih bermanfaat.


Linux
  1. Semua yang Perlu Anda Ketahui Tentang Ubuntu 13.04

  2. Direktori tmp Linux:Semua yang Perlu Anda Ketahui

  3. Kompresi File Linux:Semua yang Perlu Anda Ketahui

  1. Izin File Linux:Semua yang Perlu Anda Ketahui

  2. Swappiness di Linux:Semua yang perlu Anda ketahui

  3. Semua yang Perlu Anda Ketahui Tentang Sistem File Linux

  1. Semua yang Perlu Anda Ketahui Tentang Perintah Chmod Linux

  2. Semua yang Perlu Anda Ketahui tentang Linux Containers (LXC)

  3. Semua yang Perlu Anda Ketahui Tentang Server DNS Ubuntu