GNU/Linux >> Znalost Linux >  >> Linux

Služba OS Linux „sshd“

Služba sshd (Secure Shell Daemon) je součástí implementace OpenSSH pro Linux, která poskytuje ověřenou, end-to-end šifrovanou síťovou komunikaci. Například uživatel na jednom hostiteli se může přihlásit do jiného systému bez použití hesla, protože službu sshd lze nakonfigurovat tak, aby používala alternativní techniky ověřování, jako je výměna informací o sdíleném klíči.

OpenSSH využívá technologii klient/server. Klient, jako například uživatel spouštějící program ssh, zahájí připojení k serveru sshd na cílovém hostiteli. Zprávy v protokolu SSH jsou vyměňovány za účelem autentizace klienta k cílovému hostiteli a vzdálený přístup je pak povolen nebo zakázán. Pokud je to povoleno, je vytvořeno připojení TCP/IP, které klientovi umožní vyměňovat si příkazy a data s aplikací vytvořenou démonem sshd v cílovém systému.

Výhodou nástrojů OpenSSH je, že všechny komunikační výměny jsou šifrované. Ověřovací informace, jako jsou uživatelská jména, hesla a data relace, nejsou nikdy přenášeny v nezašifrované podobě. Je na rozdíl od alternativ, jako je telnet nebo ftp, které používají výhradně přenosy ve formátu prostého textu.

server openssh Balíček RPM poskytuje /usr/sbin/sshd démon a jeho konfigurační soubory.

Existují dvě verze komunikačního protokolu SSH, verze 1 a verze 2. Klient, jako je scp, i server sshd musí používat stejnou verzi protokolu. Server sshd standardně podporuje obě verze protokolu, ale každá verze se konfiguruje samostatně.

Spojení mezi klientem a démonem sshd se standardně provádí na portu TCP/IP 22 pomocí protokolů UDP nebo TCP. Nejprve se musí klient a server dohodnout na metodě šifrování:sshd odešle seznam podporovaných šifer a klient vybere svou preferenci. Server identifikuje svého hostitele pomocí /etc/ssh/ssh_host_key (protokol verze 1) nebo jeden z /etc/ssh/ssh_host_[rd]sa_key (protokol verze 2). To umožňuje klientovi detekovat falšování IP adres nebo útoky typu man-in-the-middle. S ověřeným ID hostitele pak klient zkouší jednu nebo více metod ověřování, aby vytvořil přihlašovací údaje pro přístup k systému pro uživatele. Veřejné šifrovací klíče jsou vyzkoušeny jako první, s návratem k tradičním problémům s heslem. Pomocí ssh klienta lze celé vyjednávání zobrazit přidáním přepínačů „-v“, jako je tento:

$ ssh -vvv myhost.example.com

Démon sshd používá /etc/pam.d/sshd k určení nezbytných pravidel ověřování pro svého hostitele. Výchozí soubor poskytuje balíček openssh-server RPM a je dostačující pro většinu webů.

Po ověření uživatelského přístupu spustí démon sshd(8) požadovaný aplikační program klienta se standardními vstupními/chybovými/výstupními soubory (stdin, stderr, stdout) připojenými k relaci TCP/IP.

Funkce a chování dostupné s démonem sshd(8) jsou řízeny celosystémovým konfiguračním souborem /etc/ssh/sshd_config. S balíčkem RPM je dodáván výchozí soubor, ale lze jej upravit tak, aby vyhovoval místním požadavkům. Chcete-li například zabránit přihlášení uživatele root pomocí ssh, může být nastavení sshd_config změněno jako v tomto úryvku:

# vi /etc/ssh/sshd_config
PermitRootLogin no

Řízení služeb

Chcete-li spravovat službu sshd na vyžádání, použijte příkaz service nebo spusťte skript /etc/init.d/sshd přímo:

# /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}

Dostupné příkazy jsou:

Příkaz Popis
start Spusťte démona sshd.
stop Zastavte démona sshd.
restartovat Ekvivalent sekvence příkazů stop a poté spustit.
znovu načíst Donutit démona sshd, aby znovu načetl konfigurační soubory bez přerušení služby.
condrestart Pokud je démon sshd aktuálně spuštěn, jedná se o stejný příkaz jako příkaz restartovat. Pokud démon neběží, neprovede se žádná akce. Často se používá při instalaci balíčků RPM, aby se zabránilo spuštění služby, která ještě není spuštěna.
stav Pokud je spuštěn démon sshd, nahlaste jeho PID (ID procesu). Pokud neběží, nahlaste to také.

Démon sshd je nejčastěji spouštěn službou sshd nebo démonem xinetd(8). Přímé zadávání argumentů příkazového řádku je možné, ale obvykle se to nedělá. Místo toho lze dodat démonu sshd(8) další argumenty příkazového řádku vytvořením souboru /etc/sysconfig/sshd a definováním proměnné ${OPTIONS}:

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

Tento příklad zapne tichý režim, který zabrání sshd v protokolování začátku, ověřování a ukončení každé relace. Podrobnosti o dostupných možnostech příkazového řádku naleznete na stránce online manuálu pro sshd.

Konfigurace

Chcete-li spravovat službu sshd při spouštění, použijte nástroj 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

K přizpůsobení démona sshd pro provoz závislý na webu se používá řada konfiguračních souborů. Ty jsou popsány níže:

Cesta konfiguračního souboru Popis
/etc/ssh/sshd_config Požadovaný konfigurační soubor. Většina výchozích hodnot je poskytnuta jako komentáře.
/etc/ssh/ssh_host_key Obsahuje hostitelský klíč používaný pro protokol SSH verze 1. Potřebné pouze při použití protokolu verze 1.
/etc/ssh/ssh_host_rsa_key
/etc/ssh/ssh_host_dsa_key
Obsahuje hostitelský klíč používaný pro protokol SSH verze 2. Potřebné pouze v případě, že se používá protokol verze 2.
/etc/motd Soubor se zprávou dne předložený ssh klientovi po úspěšném přihlášení.
~/.hushlogin Pokud soubor existuje, soubor /etc/motd ssh po úspěšném přihlášení nezobrazí.
/etc/nologin Pokud soubor existuje, jeho obsah zobrazí klient a relace je poté ukončena. Ignorováno pro přihlášení uživatele root.
~/.ssh/environment Pokud soubor existuje a je nastaven parametr sshd_config PermitUserEnvironment, pak se proměnné prostředí shellu z tohoto souboru exportují do relace SSH.
~/.ssh/rc
/etc/ssh/sshrc
Soubory se kontrolují v uvedeném pořadí a spustí se první nalezený. Pokud není nalezen ani jeden, spustí se nástroj xauth.
~/.ssh/authorized_keys Uvádí seznam veřejných klíčů používaných pro ověřování relace RSA.
~/.ssh/known_hosts
/etc/ssh/ssh_known_hosts
Obsahuje veřejné klíče hostitele pro všechny známé hostitele. Soubor pro jednotlivé uživatele je udržován automaticky. Volitelný globální soubor spravuje správce systému.
/etc/moduli
/etc/ssh/moduli
Na rozdíl od manuálové stránky se v této implementaci nepoužívá soubor /etc/moduli. Soubor /etc/ssh/moduli obsahuje skupiny Diffie-Hellman používané pro vyjednávání protokolu „Diffie-Hellman Group Exchange“.
/var/empty/sshd adresář chroot používaný během oddělení oprávnění před dokončením fáze ověřování. Tento adresář je vlastněn uživatelem root a nelze do něj zapisovat světem. Tento adresář obvykle obsahuje pouze soubor etc/localtime pro prezentaci času a data.
/etc/hosts.allow
/etc/hosts.deny
Ovládací prvky přístupu, které bude vynucovat nástroj tcp_wrappers . Další podrobnosti najdete v tcpd.
~/.rhosts Používá se pro ověřování RSA nebo ověřování založené na hostiteli. Seznam párů uživatelské jméno/název hostitele k identifikaci přihlášení, která nevyžadují výměnu hesla.
~/.shosts Podobné jako ~/.rhosts, ale ignorované nástroji rlogin nebo rshd.
/etc/hosts.equiv Seznam hostitelů, kde nejsou vyžadovány výzvy k zadání hesla, pokud se uživatelské jméno shoduje na hostiteli klienta i serveru. Pokud řádek obsahuje také uživatelské jméno, může se tento uživatel na klientském počítači přihlásit k libovolnému účtu serveru, dokonce i k účtu root hostitele; to se obecně nedoporučuje.
/etc/shosts.equiv Zpracovává se stejně jako soubor /etc/hosts.equiv , tento soubor je ignorován démony rsh a rshd.

Konfigurační soubor /etc/ssh/sshd_config

Níže je ukázkový konfigurační soubor /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. Služba operačního systému Linux „nfs“

  2. Služba operačního systému Linux „microcode_ctl“

  3. Služba Linux OS „NetFS“

  1. Služba operačního systému Linux „hplip“

  2. Služba Linux OS „ldap“

  3. Služba OS Linux „yppasswdd“

  1. Linux OS Service ‚xendomény‘

  2. Služba Linux OS „nscd“

  3. Služba Linux OS „chobotnice“