Jistě znáte klienta PuTTY. Tento klient slouží pro komunikaci s druhou stranou za pomocí protokolů SSH, Telnet, rlogin i nešifrovaného TCP. Abychom však mohli komunikovat, musí na druhé straně být nějaký server se službou, která bude komunikaci zajišťovat. V následujícím textu si vysvětlíme instalaci a konfiguraci SSHD serveru na systému Linux OpenSuse. Pevně věřím, že to pro vás bude přínosné.
Co je to SSHD?
SSHD se skládá z těchto slov: Secure SHell Daemon. Jedná se o tzv. "démona" nebo-li službu, která běží nepřetržitě na serveru nebo prostě nějakém operačním systému, a zajišťuje komunikaci s klienty jako je právě klient PuTTY.
SSH slouží jako náhrada za zastaralý TELNET. Lze jej s výhodou použít pro bezpečnější komunikaci skrz intranet nebo internet. Pokročilejší uživatelé dokáží snadno vytvořit tzv. tunel, kterým na určitém portu přistupují na internet "zevnitř". Tento tunel je šifrovaný a komunikace pro vnějšího pozorovatele nesrozumitelná. Tunel lze implementovat v internetových prohlížečích jako výchozí "proxy". V budoucnosti si přineseme článek s postupem pro zřízení takového bezpečného tunelu. Výhoda takové komunikace je, že nikdo, ani ten, kdo má přístup k HTTPS šifře, nedokáže rozklíčovat posílaná data. A proč? Šifrovací klíč k asymetrické šifře používáte "off-line", nepřenáší se po síti a to zvyšuje bezpečnost tohoto způsobu komunikace. Výsledkem je tedy nejen šifrování SSH, ale také přenos již šifrované komunikace např. v rámci HTTPS (nejčastěji šifrování SSL). Některá přenášená data jsou tedy z pohledu externího šmíráka na váš tunel šifrována hned DVAKRÁT.
Postup instalace SSHD (OpenSSH) na operačním systému Linux OpenSuse 13.1 a pravděpodobně vyšší
1. Zkontrolujte, jestli SSHD je přítomen ve vašem systému. Napište do konzole např. "man sshd". SSHD by mělo být defaultně v systému nainstalováno a mělo by běžet. Dalším příkazem lze otestovat, zda je SSHD aktivní: "/etc/init.d/sshd status".
Další místo, kde můžeme zjistit, jak je to s SSHD, je přes YAST (nebo jiný správce nainstalovaných programů) - zvolit menu Správce programů - a dáme najít "ssh". Vpravo v seznamu uvidíme "openssh". To je ono. Na záložce Seznam souborů můžeme vidět, kde všude je v adresářové struktuře "zasyslen". Pokud není nainstalován, tak jej doinstalujeme a dostaneme se tak na správný výchozí stav. Pokud jsme něco "zprasili", můžeme odinstalovat a následně nainstalovat.
2. Je třeba ošetřit systémový firewall (o kterém předpokládám, že jej používáte).
V konzoli dáme "kwrite /etc/sysconfig/SuSEfirewall2". Najdeme si řádek s parametrem FW_SERVICES_EXT_TCP a dopíšeme např. toto:
FW_SERVICES_EXT_TCP="
ssh 10331 smtp www bla bla bla"
Tímto jsme nastavili, aby firewall byl povolený pro příjem dat na portu 10331 (vy si vyberete jiný port) a předtím si zkontrolujete, jestli tento port není obsazený jinou aplikací příkazem: netstat -ltnup | grep ":10331"
3. Restartujeme firewall v konzoli:/sbin/SuSEfirewall2 off
/sbin/SuSEfirewall2 on
4. Nastavení portu pro SSHDNyní nastavíme portu 10331 (vámi vybraný jiný port) pro SSHD.
V konzoli: kwrite /etc/ssh/sshd_config
Odkomentujeme řádek s defaultním portem (22) a přepíšeme na port 10331.
Dále musíme nastavit toto:PermitRootLogin no (nepovolíme přihlašování roota)
MaxAuthTries 2 (maximální počet pokusů o zalogování)
RSAAuthentication no (povolení RSA autentifikace)
PermitEmptyPasswords no (povolení prázdného hesla)
LoginGraceTime 2m (max. prodleva)
Protocol 2 (typ protokolu)
X11Forwarding no (povolení X11 protokolu)
MaxSessions 10 (maximální počet relací v jednom okamžiku)
ChallengeResponseAuthentication no (negací si vynucujeme certifikační přihlášení s privátním klíčem, což chceme, jinak by si server vystačil pouze s heslem a bezpečnost by byla nižší)
PermitTunnel no (pokud nepovolíme, tak tunel např. pro surfování po netu bude zakázaný, pokud povolíme, tak vytvoření tunelu bude povoleno). Tj. v případě varianty "no" budeme moci pouze pracovat vzdáleně na stanici, kde jsme se přes PuTTY přihlásili, pokud dáme "yes", rozšíříme si možnost nastavit komunikační tunel přes daný port a přistupovat přes net šifrovaně skrze server s SSHD.
5. Restartujeme SSHDV konzoli:
/etc/init.d/sshd stop
/etc/init.d/sshd start
6. Zajistění spuštění SSHD po startu, pokud se po startu nespouští a je neaktivní:
V konzoli:
chkconfig --level 3 sshd on
7. Zajistění a nastavení privátního šifrovacího klíčeNejrychlejší variantou pro mě bylo stažení putty souborů z oficiálního webu a použití aplikace na windowsech "puttygen.exe", kterou jsem si klíč "openssh" vygeneroval. Tento klíč jsem zkopíroval na operační systém Linux, konkrétně do souboru: /home/Uzivatel/.ssh/authorized_keys
Na adresáři nastavíme správná práva: setfacl -m u:Uzivatel:rx .ssh
8. Otestování PuTTY klientemNa PuTTY klientovi je potřeba nahrát privátní klíč (který jsme si uložili z aplikace puttygen.exe) ve volbě Auth - Private Key - Open. Nakonfigurujeme si zbytek nastavení PuTTY pro připojení (můžeme si ukázat v některém z dalších článků) a přihlásíme se k serveru.
Aby se šlo přihlásit zvenčí k serveru, je potřeba na routeru nastavit správný "port forwarding", tj. přesměrovat vnější volání na vnitřní.
např. zvenčí 10331 na 192.168.1.1 (IP serveru s SSHD)
9. Log SSHDLog se nachází v souboru /var/log/messages, lze vygrepovat podle SSH.
10. Omezení přístupu na openssh serverNa závěr můžeme zeditovat soubor
kwrite /etc/security/access.conf
a upřesnit, kdo se může odkud hlásit k openssh serveru např. takto:
- : Uzivatel : 127.0.0.1
- : Uzivatel : 111.112.113.114
+ : Uzivatel : 111.112.113.115
- : Uzivatel : ALL
- : ALL : ALL
Chápete? Mínusem zakazujeme, plusem povolujeme. Uzivateli jsme povolili pouze přístup z IP adresy 111.112.113.115, ostatní přístupy jsou ZAKÁZANÉ. A tomu říkám zabezpečení :-).
Poslední řádek v konfiguráku MUSÍ být prázdný.
11. Editace souboru "sshd" v pam.dObčas je potřeba zeditovat soubor "sshd" takto:
kwrite /etc/pam.d/sshd
Přidáme řádek (klidně na konec):
account required pam_access.so
Celkově by konfigurace tohoto souboru měla vypadat takto:
auth requisite pam_nologin.so
auth include common-auth
account requisite pam_nologin.so
account include common-account
password include common-password
session required pam_loginuid.so
session include common-session
session optional pam_lastlog.so silent noupdate showfailed
account required pam_access.soHOTOVO
Tak. Je potřeba utřít pot z čela, právě jsme absolvovali poměrně běžnou konfiguraci, jakých se v Linuxu dělá mnógo mnógo jest.
Snad se vám tedy instalace úspěšně povedla, v budoucnu si vysvětlíme tunel = bezpečné surfování přes váš server a také si vysvětlíme nástrahy výměny privátního klíče. Ovšem... uvítal bych, kdybyste mi do diskuse napsali, že další pokračování bude přínos.
K tomuto postupu jsem se dopracoval po MNOHA hodinách laborování.Zdroj:
názor a zkušenosti autora
https://cs.wikipedia.org/wiki/PuTTY
https://cs.wikipedia.org/wiki/Secure_Shell
https://cs.wikipedia.org/wiki/HTTPS