Srp 5

Poté co mně již podruhé hackli můj server :-( jsem se musel již konečně rozhoupat a zavést na něm přihlašování na SSH pomocí certifikátů. Celá tato authentizace je založená na nepoužívání hesel, ale specifických klíčů (key), z nichž jeden je veřejný (ten vždy nahrajete na server, na který se chcete přihlašovat) a jeden je osobní (ten si máte uložený u sebe v PC, z kterých se chcete přihlašovat). Jde vlastně o princip zámku a klíče (z toho pramení ten název) – ve finální fázi se při pokusu přihlásit po naším uživatelem bude nejprve server testovat, zda jsou klíče navzájem kompatibilní a při úspěchu vás propustí dále. Výhodou, ale i nevýhodou je, že se vlastně na serveru můžete dostat pouze ze svého PC. Pokud od něho budete několik stovek km daleko, tak máte smůlu :-)

Návod:

Nejdříve si vygenerujte ssh klíče příkazem ssh-keygen (defaultně generuje RSA klíče, můžete použít paramatr t pro změnu na DSA), poté budete vyzvání k udání cesty, kam klíče uložit (defaultně ukládá do /home/uživatel/.ssh/) a nakonec k zadání fráze, kterou klíč zakódujete:

quimi@quimi-pc:~$ ssh-keygen -t dsa
Generating public/private dsa key pair.
Enter file in which to save the key (/home/quimi/.ssh/id_dsa):
Enter passphrase (empty for no passphrase):
Enter same passphrase again:
Your identification has been saved in /home/quimi/.ssh/id_dsa.
Your public key has been saved in /home/quimi/.ssh/id_dsa.pub.
The key fingerprint is:
8d:0f:9f:0a:a1:aa:73:b3:02:30:f8:72:c2:a8:ad:59 quimi@quimi-pc

Soubor id_dsa je náš privátní klíč, a proto může zůstat ve složce /home/quimi/.ssh/. Nyní vám již stačí pouze nahrát na server váš veřejný klíč – na serveru si vytvořte stejnojmennného uživatele jako u vás v PC a vytvořte i složku .ssh ve vašem domovském adresáři. Do ní pak nahrejte soubor id_dsa.pub, který nakonec přejmenujte na autohorized_keys.

Nakonec jen vypneme přihlašování přes hesla a zapneme přihlašovaní přes certifikáty – v souboru /etc/ssh/sshd_config editujeme řádek

PasswordAuthentication yes

na

PasswordAuthentication no.

Příště si ukážeme, jak generovat certifikáty ve Windows XP.

Bře 25

Po hacknutí mého serveru neznámým útočníkem jsem začal hledat lepší způsoby ochrany (každopádně jsem si za to mohl sám, heslem totiž byla 5-písmenná kámošova přezdívka:-) ) a jedním z prvních, na který jsem při tom narazil, je zakázání přihlašování pod rootem přes ssh.

O co přesně jde? Při klasickém povolení přihlašování pod rootem, musí útočník uhádnout heslo pro root. To je dejme tomu 6-mistné = 38x38x38x38x38x38 možných kombinací. I to samozřejmě dost, ale člověk nikdy neví:-) Kdežto při zakázání logování pod rootem musí útočník uhádnout jak jméno uživatele, jeho heslo, a pak se přihlásit jako root (příkaz su root) a samozřejmě zadat rootovského hesla. Za předpokladu, že jméno uživatelovi vytvoříme náhodné 6-mistné, uživatelovo i rootovské heslo bude 6-místné => 38 na osmnáctou možných kombinací – což dost těžko představitelné číslo;-)

Jak na to? První si v konzuli vytvořte na serveru uživatele s libovolným jménem (klidně postačí vaše přezdívka) pomocí příkazu adduser jméno (následně budete vyzvání k zadání heslo pro toho uživatele). Pak už jen stačí zakázat logování pod rootem, v /etc/ssh/sshd_config najděte řádek PermitRootLogin yes a přepište jej na PermitRootLogin no. Pak by jste měli ssh restartovat (/etc/init.d/ssh restart). Při přísštím pokusu o přihlášení se vám již nepůjde pod rootem přihlásit, jediná možnost je přihlášení pod vaším uživatelem, a následným zadáním příkazu su root.

Problém však je, pokud jste líný a máte u sebe na desktopu windows (XP) a ke kopírování na váš server používáte WinSCP. V něm mě totiž tato úprava dělá problém a budete muset nahrávat soubory pouze do vašeho domovského adresáře a pak přes Putty je překopírovat pod rootem do požadovaného umístění.

Pokud hledáte způsob jak zabezpečit své daty a chcete se vyhnout potupné a hlavně otravné
re-instalaci serveru (se špatnou zálohou dat = ztrátou 100% dat), zakázání logování pod rootem jenom doporučuji. Jinak dalším způsobem je používání certifikátů, ale o tom napíšu až někdy jindy.