Lekce 2 - SSH - Instalace a nastavení serveru
V minulé lekci, SSH - Konfigurace a připojení, jsme si představili protokol SSH, používané klienty pro různé operační systémy a také prošli základní možnosti nastavení.
Dnes se podíváme na to, jak server vytvořit a nastavit.
Instalace
Mac
Pro Mac zde jen umístím tento tutoriál. Nemám jak to vyzkoušet, ale princip by měl být podobný jako pro Linux.
Linux
Pro Linux existuje několik řešení, ale zdaleka nejpoužívanější je OpenSSH. Pro jeho instalaci stačí zadat příkaz:
$ sudo apt-get install openssh-server
případně pro Fedoru:
$ sudo yum install openssh-server
Windows
Zde opět najdeme několik alternativ SSH serverů např. freeSSHd.
Aby jste ale neřekli, že jsem Vás odbyl pár programy, přidávám zde
ještě odkaz na srovnání
různých SSH serverů například i podle systémů, které
podporují.
My si vyzkoušíme freeSSHd. Po stáhnutí a spuštění budete provedení krátkou instalací. zde bych podotknul, že je lepší neinstalovat to jako systémovou službu - je s tím více problémů než užitku. Po instalaci je třeba spustit freeSSHd (doporučuji s Admin právy - bez nich se mi neukládala konfigurace - to by šlo určitě řešit, ale jen jsem to vyzkoušel). Objeví se ikonka v systray. Pravé kliknutí na ni vyvolá jednoduchou nabídku - pomocí Unload můžeme program úplně vypnout.. Další možnost je vstoupit do nastavení.
Konfigurace
Linux a Mac
Hlavní úpravy konfigurace serveru na Linuxu a Macu se provádějí v souboru /etc/ssh/sshd_config. Konfigurace je ještě více než u klienta, popíšu opět jen základní možnosti.
Port 222
Změní port, na kterém server naslouchá - klienti jej musí znát a specifikovat, pokud je jiný než 22.
ListenAddress 192.168.1.2 ListenAddress 192.168.1.3
Definuje, ze kterých interfaců (v zásadě ze kterých síťových portů) je možné se přihlásit. Pokud má náš server například 4 porty (přičemž každým může být připojen do jiné sítě) a my chceme, aby se dalo přihlásit pomocí SSH jen z určité části sítě, přidáme toto do konfigurace.
ListenAddress 0.0.0.0
Výchozí je, že SSH naslouchá na všech interfacech. Takhle nějak by to vypadalo zapsané..
PermitRootLogin no
Zakazuje/povoluje přihlášení roota. Defaultně vypnuté, není důvod proč zapínat, když máme sudo. Je možné specifikovat volbu without-password. Pak se bude možně přihlásit na roota pouze jinými metodami než heslem.
PasswordAuthentication on
Zakáže/povolí autentifikaci heslem. Doporučeno vypnout a přihlašovat se jinými metodami - například klíčem. To ovšem není vždy možné a proto se i nadále často používá autentifikace heslem. Pokud je zapnutá, uživatelé musí zadat při přihlášení heslo, které je nastaveno u jejich účtu - jako by se přihlašovali k PC lokálně.
AllowTcpForwarding no
Zakáže/povolí TCP tunelování přes SSH. O Tunelování si povíme více v další části článku. Pokud tunelování nepoužíváte, doporučuji vypnout.
X11Forwarding no
Zakáže/povolí tunelování X serveru. Opět pokud nepoužíváte, vypnout.
GatewayPorts no
Povoluje vzdálený port forwarding, pokud nepoužíváte, vypnout.
AllowUsers bob alice franta
Povolí uvedeným uživatelům přístup k SSH. Pokud není volba uvedena, mohou se přihlásit všichni.
DenyUsers mallroy
Zakáže uživatelům přístup k SSH.
MaxStartups 2:30:10
Specifikuje 3 údaje (start:rate:full). Pokud se na server připojuje více než start připojení, každé nové připojení bude odmítnuto s pravděpodobností rate. Pravděpodobnost narůstá lineárně až do full, kdy se všechny nová připojení začnou odmítat.
LoginGraceTime 30
Doba v sekundách, za kterou server odpojí klienta, který se po připojení úspěšně nepřihlásil.
LogLevel VERBOSE
Nastavuje úroveň logování do souboru /var/log/auth.log. Možnosti jsou (seřazené od nejmíň upovídané po nejvíc) : QUIET, FATAL, ERROR, INFO, VERBOSE, DEBUG, DEBUG1, DEBUG2 a DEBUG3.
Banner /etc/issue
Nastavuje zprávu, co se zobrazí klientovi ihned po připojení. Lze takto upozornit někoho na logování systému, a vystrašit tak případné začínající útočníky.
Pro aplikování změn je nutné restartovat SSH server, jinak se změny neprojeví!
Windows
Podíváme se na konfiguraci freeSSHd serveru. Po otevření hlavního okna a tabu SSH, se vám zobrazí následující okno:

- Listen - Zvolte interface, na kterém bude SSH server naslouchat
- Port - Port, na kterém SSH bude naslouchat.
- Max number of connections - Maximální počet současných připojení
- Idle timeout - Čas, po kterém je nečinný (nezadává žádné příkazy, neběží program) uživatel odhlášen
- Banner message - Soubor, jehož obsah se zobrazí po připojení - typicky nějaké upozornění
- Command Shell - Shell, který bude použit pro uživatele (typicky cmd, ale je možné jej změnit třeba na PowerShell)
Dále zde jsou klíče - například při reinstalaci počítače je dobré je zálohovat a následně znovu načíst (obzvláště pokud jsme známý, používaný server). Pozor! Nikde nezveřejňovat - kdokoliv by se pak za vás mohl vydávat a ukrást údaje.
Po nastavení samotného připojení je třeba vytvořit uživatele, na které se budeme moci přihlašovat. Možností je několik, ale my si zatím vystačíme s ověřením pomocí hesla:

Po změně nastavení budete možná muset server restartovat (Unload a spustit znovu). Pokud se SSH server nespustí sám, můžete ho spustit ručně:

Pokud by se objevil error "specified address is already in use", znamená to, že v systému již běží služba, která naslouchá na portu 22 - můžeme buď změnit port a nebo se podívat na otevřené TCP připojení. To můžeme pomocí programu netstat z příkazové řádky.
netstat -anb
Vedle bude napsaný program, který toto připojení využívá. Jeho ukončení problém vyřeší. Pokud jste na Windows 8 nebo novější, je možné, že netstat není nainstalovaný - můžete ho doinstalovat z "Přidat nebo odebrat programy" a "Zapnout nebo vypnout funkce systému Windows" nebo použít nějakou alternativu.
Dnes jsme si ukázali základní nastavení a instalaci SSH serveru. Jestli
máte možnost, vyzkoušejte například komunikaci mezi dvěmi PC, na které si
nainstaluje a nastavíte SSH servery. Pokud tu možnost nemáte, můžete si
vyzkoušet rozchodit SSH spojení mezi vaším OS a virtuálním počítači v
něm běžícím. To už není tak jednoduché
V příští lekci, SSH - TCP tunelování, se podíváme na pokročilejší možnosti SSH, jako je například TCP tunelování, lokální port forwarding a SOCKS proxy.