dum | žák

Linux

Název školy Vyšší odborná škola obalové techniky a Střední škola, Štětí, příspěvková organizace
Adresa školky Kostelní 134, 411 08 Štětí
46773509
Název operačního programu OP Vzdělávání pro konkurenceschopnost
Registrační číslo CZ.1.07/1.5.00/34.1006
Označení vzdělávacího materiálu
Název tématické oblasti (sady) Operační systémy
Název materiálu SSH
Anotace
Autor Ivan Pomykacz Jazyk český
Očekávaný výstup
Klíčová slova
Druh výukového zdroje Výklad Věková skupina žáků 17+
Typ interakce aktivita Ročník 4.
Speciální vzdělávací potřeby žádné
Zhotoveno, (datum/období) Celková velikost

pdf icon
SSH

Obsah

Služba SSH

Poskytuje (v zabezpečené formě):

  • Vzdálený přístup k shellu. Můžete tak provádět všechny příkazy, jakoby jste byli přímo u počítače.

  • Různé způsoby autentizace uživatele. Např. pomocí klasického jména a hesla nebo použitím tzv. klíčů.

  • Přenos souborů;

  • Tunelování portů;

  • VPN;

Instalace

Instalace spočívá v instalaci balíčku: openssh-server.

Ihned po instalaci je služba aktivní a lze se tedy připojit k serveru prostřednictvím SSH.

Službu lze vypnout (dočasně) příkazem service ssh stop, případně restartovat service ssh restart, a nebo spustit service ssh start. Dočasně znamená, že nově nastavený stav se vyruší restartem.

Trvalá deaktivace služby, resp. aktivace se provede příkazem: update-rc.d ssh disable, resp. update-rc.d ssh enable.

Uživatelé

Jakýkoli uživatel, který má platný login v systému se nyní může autentizovat proti serveru. Při úspěchu tak získá přístup k shellu, a může tedy spouštět libovolné příkazy (v rámci svých práv, samozřejmě).

Přístupy uživatelů a způsoby autentizace lze nastavit v konfiguračním souboru služby.

Parametry služby a konfigurace

Veškeré nastavení služby se odehrává v konfiguračním souboru /etc/ssh/sshd_config. Pokud provedete změny v tomto souboru, nebudou aktivní okamžitě. V takovém případě budete chtít provést "reload" služby příkazem: service ssh reload.

Lze použít i parametr restart. To záleží, do jaké míry chcete ovlivnit stávající spojení.

ListenAddress

Služba standardně naslouchá na všech síťových rozhraních. Tzn., můžete se připojit jak ze vzdáleného počítače (pokud je server v síti), a nebo přímo z localhostu.

Direktivou ListenAddress lze ovlivnit konkrétní rozhraní, na kterém má SSH naslouchat. Hodnoty ::, resp. 0.0.0.0 znamenají všechna rozhraní.

Port

Služba standardně naslouchá na TCP portu č. 22.

Z bezpečnostních důvodu se hodnota může změnit na jiné hodnoty, zpravidla z rozsahu od 1024 do 65535.

Je třeba ale upozornit na to, že změnou portu lze odrazit potenciální útok jen u hloupých robotů, kteří již dále nezkoumají, proč server odmítl spojení.

Logování

SSH používá logovací démon syslog a veškeré informace se zaznamenávají do souboru /var/log/auth.log.

Autentizace heslem

Ve výchozím stavu je standardně povolena autentizace heslem, tzn., že uživatel se během přihlašování k serveru autentizuje použitím přihlašovacího jména a hesla.

Přenos této informace je ovšem již šifrovaný. Šifrovaný spoj se tedy nevytváří na základě uživatelova hesla.

Autentizace klíčem

I tento způsob je ve výchozím stavu povolen. Uživatel může využít ověření pomocí privátního a veřejného klíče.

Předpokladem je, že uživatel má již na serveru umístěný svůj veřejný klíč v souboru AuthorizedKeysFile (jež je definovaný v konfiguračním souboru služby).

Autentizace uživatele pak proběhne "jakoby" bez hesla. Heslo, resp. passphrase může být po uživateli požadována v případě použití zašifrovaného privátního klíče. (Pokud ovšem uživatel nepoužívá ssh-agent)

Další konfigurační volby

AuthorizedKeysFile

Umístění souboru s autorizovanými veřejnými klíči.

PermitRootLogin

Povolení přihlášení uživatele root (hodnota: yes | no).

PubkeyAuthentication

Povolení přihlašování pomocí klíčů (hodnota: yes | no).

AllowGroups

Povolené skupiny, které se mohou přihlásit prostřednictvím SSH (jména skupin jsou odděleny mezerou).

DenyGroups

Skupiny, které mají odepřený přístup k SSH.

AllowUsers

Obdobně jako skupiny, tak seznam povolených uživatelů.

DenyUsers

Seznam blokovaných uživatelů.

Podstatné je, v jakém pořadí se direktivy pro Allow a Deny vykonávají, zde: DenyUsers, AllowUsers, DenyGroups, a nakonec AllowGroups.

Připojení k serveru

Obecná syntaxe pro připojení klienta je:

    ssh [-p 22] username@hostname

Port je výchozí, netřeba tedy zadávat. Jediné, co je třeba doplnit je username a hostname (což může být i IP adresa). Na heslo budete vyzváni záhy.

Konfigurace klienta

Linuxový ssh klient načítá konfiguraci ze souborů: (globální) /etc/ssh/ssh_config a (lokální) ~/.ssh/config.

V tom druhém si uživatelé zpravidla konfigurují přístupy k serverům.

Příklad nastavení hostitele

Řekněme, že se pravidelně připojuji do školy přes SSH s účtem spravce. Služba běží záměrně na jiném portu, zde 2014.

Sestavený příkaz by mohl vypadat: ssh -p 2014 spravce@ssh.odbornaskola.cz

Pokud ovšem mám takovýchto serverů více, každý na jiném portu, s jiným uživatelem, pak by se hodila možnost si nastavení pro jednotlivá připojení někam uložit. A to je právě možné do souboru ~/.ssh/config.

Záznam pro výše uvedený příklad by mohl vypadat takto:

    Host skola
    HostName ssh.odbornaskola.cz
    Port 2014
    User spravce

Nyní bude příkaz vypadat: ssh skola

SFTP server

Následuje příklad, jak využít SSH pouze pro přenos souborů (a nikoli pro přístup k příkazovému shellu)

I v tomto případě je nezbytné mít založený lokální účet - nechť se jmenuje: webmaster.

Webmaster je takový atypický uživatel - potřebuje přístup k webovým stránkám, ale už nechceme, aby měl přístup k shellu, a mohl tak spouštět lib. příkazy.

Založení účtu by mohlo vypadat např. takto:

    # useradd -d /srv/www -s /usr/lib/sftp-server webmaster

Všimněte si, že účet webmastera je nasměrován do jiného adresáře (ten jsme vytvořili jako uživatel root). Zároveň má webmaster nastavený zcela jiný příkazový shell, který se postará možnost transféru souborů, ale ničeho jiného.

Vnucený sftp-server

Další možností je, vnutit sftp přímo v konfiguračním souboru SSH služby. Např.:

    Match User webmaster
        ChrootDirectory /srv/www
        AllowTCPForwarding no
        X11Forwarding no
        ForceCommand internal-sftp

Match User se postará o to, že se po něm následující volby aplikují pouze na daného uživatele. Zde se pak nabízí použití dalších direktiv a sice:

ChrootDirectory

Uzamkne uživatele v daném adresáři (tj, nemůže jej opustit). Velice výhodné, uživatel se tak alespoň bezprizorně neprochází po našem serveru.

AllowTCPForwarding

Zamezí použití dalších služeb ssh, jako např. přesměrování portů.

X11Forwarding

Zamezí použití konkrétně protokolu X11 (grafická nadstavba).

ForceCommand

Vynutí spuštění příkazového "shellu" (v příkladu internal-sftp, což výše v souboru ukazuje právě na /usr/lib/sftp-server).