GNU/Linux >> Belajar Linux >  >> Linux

Layanan OS Linux 'sshd'

Layanan sshd (Secure Shell Daemon) adalah bagian dari implementasi OpenSSH untuk Linux yang menyediakan komunikasi jaringan terenkripsi ujung-ke-ujung yang diautentikasi. Misalnya, pengguna di satu host dapat masuk ke sistem lain tanpa menggunakan kata sandi karena layanan sshd dapat dikonfigurasi untuk menggunakan teknik otentikasi alternatif seperti bertukar informasi kunci bersama.

OpenSSH menggunakan teknologi klien/server. Klien, seperti pengguna yang menjalankan program ssh, memulai koneksi ke server sshd pada host target. Pesan dalam protokol SSH dipertukarkan untuk mengotentikasi klien ke host target dan akses jarak jauh kemudian diizinkan atau ditolak. Jika diizinkan, maka koneksi TCP/IP dibangun untuk memungkinkan klien bertukar perintah dan data dengan aplikasi yang dibuat oleh daemon sshd pada sistem target.

Manfaat alat OpenSSH adalah semua pertukaran komunikasi dienkripsi. Informasi otentikasi seperti nama pengguna, kata sandi, dan data sesi tidak pernah dikirimkan dalam bentuk tidak terenkripsi. Tidak seperti alternatif seperti telnet atau ftp yang secara eksklusif menggunakan transmisi teks yang jelas.

openssh-server Paket RPM menyediakan /usr/sbin/sshd daemon dan file konfigurasinya.

Ada dua versi protokol komunikasi SSH, versi 1 dan versi 2. Baik klien, seperti scp, dan server sshd harus menggunakan versi protokol yang sama. Server sshd mendukung kedua versi protokol secara default, tetapi setiap versi dikonfigurasi secara terpisah.

Koneksi antara klien dan daemon sshd dibuat pada port TCP/IP 22 secara default, menggunakan protokol UDP atau TCP. Pertama, klien dan server harus menyetujui metode enkripsi:sshd mengirimkan daftar sandi yang didukung dan klien memilih preferensinya. Server mengidentifikasi host-nya menggunakan /etc/ssh/ssh_host_key (protokol versi 1) atau salah satu dari /etc/ssh/ssh_host_[rd]sa_key (versi protokol 2). Hal ini memungkinkan klien untuk mendeteksi spoofing IP atau serangan man-in-the-middle. Dengan ID host diverifikasi, klien kemudian mencoba satu atau lebih metode otentikasi untuk menetapkan kredensial akses sistem untuk pengguna. Kunci enkripsi publik dicoba terlebih dahulu, dengan kembali ke tantangan sandi tradisional. Menggunakan klien ssh, negosiasi lengkap dapat dilihat dengan menambahkan sakelar “-v”, seperti ini:

$ ssh -vvv myhost.example.com

Daemon sshd menggunakan /etc/pam.d/sshd file untuk menentukan aturan otentikasi yang diperlukan untuk host-nya. File default disediakan oleh paket RPM openssh-server dan cukup untuk sebagian besar situs.

Setelah akses pengguna diautentikasi, daemon sshd(8) kemudian memulai program aplikasi yang diinginkan klien dengan file input/error/output standar (stdin, stderr, stdout) yang dilampirkan ke sesi TCP/IP.

Fitur dan perilaku yang tersedia dengan daemon sshd(8) dikendalikan oleh konfigurasi seluruh sistem file /etc/ssh/sshd_config. File default disediakan dengan paket RPM tetapi dapat diedit agar sesuai dengan kebutuhan lokal. Misalnya, untuk mencegah login root menggunakan ssh, pengaturan sshd_config dapat diubah seperti pada cuplikan ini:

# vi /etc/ssh/sshd_config
PermitRootLogin no

Kontrol Layanan

Untuk mengelola layanan sshd sesuai permintaan, gunakan perintah layanan atau jalankan skrip /etc/init.d/sshd secara langsung:

# /sbin/service sshd help
Usage: /etc/init.d/sshd {start|stop|restart|reload|condrestart|status}
# /etc/init.d/sshd help
Usage: /etc/init.d/sshd {start|stop|restart|reload|condrestart|status}

Perintah yang tersedia adalah:

Perintah Deskripsi
mulai Mulai daemon sshd .
berhenti Hentikan daemon sshd.
mulai ulang Setara dengan berhenti lalu urutan perintah mulai.
muat ulang Paksa daemon sshd untuk membaca ulang file konfigurasinya tanpa gangguan layanan.
memulai ulang Jika daemon sshd sedang berjalan, ini sama dengan perintah restart. Jika daemon tidak berjalan, tidak ada tindakan yang diambil. Sering digunakan dalam instalasi paket RPM untuk menghindari memulai layanan yang belum berjalan.
status Jika daemon sshd sedang berjalan, laporkan PID (Process ID)-nya. Jika tidak berjalan, laporkan juga.

Daemon sshd paling sering dimulai oleh layanan sshd atau oleh daemon xinetd(8). Memberikan argumen baris perintah secara langsung dimungkinkan, tetapi biasanya tidak dilakukan. Sebagai gantinya, argumen baris perintah tambahan dapat diberikan ke daemon sshd(8) dengan membuat file /etc/sysconfig/sshd dan mendefinisikan variabel ${OPTIONS}:

# Additional command line options for sshd
OPTIONS="-q"

Contoh ini akan mengaktifkan mode senyap, mencegah sshd mencatat awal, autentikasi, dan akhir setiap sesi. Lihat halaman manual online untuk sshd untuk detail opsi baris perintah yang tersedia.

Konfigurasi

Untuk mengelola layanan sshd saat boot, gunakan alat chkconfig:

# /sbin/chkconfig --list sshd
sshd 0:off 1:off 2:off 3:off 4:off 5:off 6:off
# /sbin/chkconfig sshd on
# /sbin/chkconfig --list sshd
sshd 0:off 1:off 2:on 3:on 4:on 5:on 6:off

Berbagai file konfigurasi digunakan untuk menyesuaikan daemon sshd untuk operasi yang bergantung pada situs. Ini dijelaskan di bawah ini:

Jalur File Konfigurasi Deskripsi
/etc/ssh/sshd_config File konfigurasi yang diperlukan. Sebagian besar nilai default diberikan sebagai komentar.
/etc/ssh/ssh_host_key Berisi kunci host yang digunakan untuk protokol SSH versi 1. Diperlukan hanya jika protokol versi 1 digunakan.
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_dsa_key
Berisi kunci host yang digunakan untuk protokol SSH versi 2. Diperlukan hanya jika protokol versi 2 digunakan.
/etc/motd File pesan hari ini ditampilkan ke klien ssh setelah login berhasil.
~/.hushlogin Jika file ada, file /etc/motd tidak ditampilkan oleh ssh setelah login berhasil.
/etc/nologin Jika file ada, kontennya ditampilkan oleh klien dan sesi kemudian dihentikan. Diabaikan untuk login root.
~/.ssh/environment Jika file ada dan parameter sshd_config PermitUserEnvironmentis ditetapkan, maka variabel lingkungan shell dari file ini akan diekspor ke sesi SSH.
~/.ssh/rc
/etc/ssh/sshrc
Berkas diperiksa dalam urutan yang ditunjukkan dan yang pertama ditemukan dijalankan. Jika keduanya tidak ditemukan, utilitas xauth akan dijalankan.
~/.ssh/authorized_keys Mencantumkan kunci publik yang digunakan untuk otentikasi sesi RSA.
~/.ssh/known_hosts
/etc/ssh/ssh_known_hosts
Berisi kunci publik host untuk semua host yang dikenal. File per pengguna dipertahankan secara otomatis. File global opsional dikelola oleh administrator sistem.
/etc/moduli
/etc/ssh/moduli
Berlawanan dengan halaman manual, file /etc/moduli tidak digunakan dalam penerapan ini. File /etc/ssh/moduli berisi grup Diffie-Hellman yang digunakan untuk negosiasi protokol “Diffie-Hellman Group Exchange”.
/var/kosong/sshd direktori chroot yang digunakan selama pemisahan hak istimewa sebelum menyelesaikan fase autentikasi. Dimiliki oleh root dan tidak dapat ditulis oleh dunia, direktori ini biasanya hanya berisi file etc/localtime untuk presentasi waktu dan tanggal.
/etc/hosts.allow
/etc/hosts.deny
Kontrol akses akan diterapkan oleh fasilitas tcp_wrappers. Lihat tcpd untuk detail selengkapnya.
~/.rhosts Digunakan untuk otentikasi RSA atau otentikasi berbasis host. Daftar pasangan nama pengguna/nama host untuk mengidentifikasi login yang tidak memerlukan pertukaran kata sandi.
~/.shosts Mirip dengan ~/.rhosts, tetapi diabaikan oleh utilitas rlogin atau rshd.
/etc/hosts.equiv Daftar host di mana tantangan sandi tidak diperlukan selama nama pengguna cocok pada host klien dan server. Jika suatu baris juga berisi nama pengguna, pengguna di mesin klien tersebut dapat masuk ke akun server mana pun, bahkan akun root host; ini umumnya tidak disarankan.
/etc/shosts.equiv Diproses secara identik dengan file /etc/hosts.equiv , file ini diabaikan oleh daemon rsh dan rshd.

File konfigurasi /etc/ssh/sshd_config

Di bawah ini adalah contoh file Konfigurasi /etc/ssh/sshd_config.

#	$OpenBSD: sshd_config,v 1.100 2016/08/15 12:32:04 naddy Exp $

# This is the sshd server system-wide configuration file.  See
# sshd_config(5) for more information.

# This sshd was compiled with PATH=/usr/local/bin:/usr/bin

# The strategy used for options in the default sshd_config shipped with
# OpenSSH is to specify options with their default value where
# possible, but leave them commented.  Uncommented options override the
# default value.

# If you want to change the port on a SELinux system, you have to tell
# SELinux about this change.
# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER
#
#Port 22
#AddressFamily any
#ListenAddress 0.0.0.0
#ListenAddress ::

HostKey /etc/ssh/ssh_host_rsa_key
#HostKey /etc/ssh/ssh_host_dsa_key
HostKey /etc/ssh/ssh_host_ecdsa_key
HostKey /etc/ssh/ssh_host_ed25519_key

# Ciphers and keying
#RekeyLimit default none

# Logging
#SyslogFacility AUTH
SyslogFacility AUTHPRIV
#LogLevel INFO

# Authentication:

#LoginGraceTime 2m
#PermitRootLogin yes
#StrictModes yes
#MaxAuthTries 6
#MaxSessions 10

#PubkeyAuthentication yes

# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2
# but this is overridden so installations will only check .ssh/authorized_keys
AuthorizedKeysFile .ssh/authorized_keys

#AuthorizedPrincipalsFile none

#AuthorizedKeysCommand none
#AuthorizedKeysCommandUser nobody

# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts
#HostbasedAuthentication no
# Change to yes if you don't trust ~/.ssh/known_hosts for
# HostbasedAuthentication
#IgnoreUserKnownHosts no
# Don't read the user's ~/.rhosts and ~/.shosts files
#IgnoreRhosts yes

# To disable tunneled clear text passwords, change to no here!
#PasswordAuthentication yes
#PermitEmptyPasswords no
PasswordAuthentication no

# Change to no to disable s/key passwords
#ChallengeResponseAuthentication yes
ChallengeResponseAuthentication no

# Kerberos options
#KerberosAuthentication no
#KerberosOrLocalPasswd yes
#KerberosTicketCleanup yes
#KerberosGetAFSToken no
#KerberosUseKuserok yes

# GSSAPI options
GSSAPIAuthentication yes
GSSAPICleanupCredentials no
#GSSAPIStrictAcceptorCheck yes
#GSSAPIKeyExchange no
#GSSAPIEnablek5users no

# Set this to 'yes' to enable PAM authentication, account processing,
# and session processing. If this is enabled, PAM authentication will
# be allowed through the ChallengeResponseAuthentication and
# PasswordAuthentication.  Depending on your PAM configuration,
# PAM authentication via ChallengeResponseAuthentication may bypass
# the setting of "PermitRootLogin without-password".
# If you just want the PAM account and session checks to run without
# PAM authentication, then enable this but set PasswordAuthentication
# and ChallengeResponseAuthentication to 'no'.
# WARNING: 'UsePAM no' is not supported in Red Hat Enterprise Linux and may cause several
# problems.
UsePAM yes

#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
#X11DisplayOffset 10
#X11UseLocalhost yes
#PermitTTY yes
#PrintMotd yes
#PrintLastLog yes
#TCPKeepAlive yes
#UseLogin no
#UsePrivilegeSeparation sandbox
#PermitUserEnvironment no
#Compression delayed
#ClientAliveInterval 0
#ClientAliveCountMax 3
#ShowPatchLevel no
#UseDNS yes
#PidFile /var/run/sshd.pid
#MaxStartups 10:30:100
#PermitTunnel no
#ChrootDirectory none
#VersionAddendum none

# no default banner path
#Banner none

# Accept locale-related environment variables
AcceptEnv LANG LC_CTYPE LC_NUMERIC LC_TIME LC_COLLATE LC_MONETARY LC_MESSAGES
AcceptEnv LC_PAPER LC_NAME LC_ADDRESS LC_TELEPHONE LC_MEASUREMENT
AcceptEnv LC_IDENTIFICATION LC_ALL LANGUAGE
AcceptEnv XMODIFIERS

# override default of no subsystems
Subsystem sftp	/usr/libexec/openssh/sftp-server

# Example of overriding settings on a per-user basis
#Match User anoncvs
#	X11Forwarding no
#	AllowTcpForwarding no
#	PermitTTY no
#	ForceCommand cvs server


Linux
  1. Layanan OS Linux 'dhcpd'

  2. Layanan OS Linux 'anacron'

  3. Layanan OS Linux 'iptables'

  1. 'jaringan' Layanan OS Linux

  2. Layanan OS Linux 'smartd'

  3. Layanan OS Linux 'irqbalance'

  1. 'portmap' layanan OS Linux

  2. Layanan OS Linux 'rpcgssd'

  3. Layanan OS Linux 'yum-updatesd'