V unixovém prostředí s více počítači je často potřeba vyvolat z jednoho počítače akci na jiném – např. synchronizace přes rsync z cronu. Oblíbeným způsobem je užití SSH spolu s klíčem, ale nejde o řešení bezpečné: aby přihlášení mohlo proběhnout v automatickém módu, vygenerované certifikáty nemají hesla. Riziko je zřejmé: při kompromitaci prvního serveru je automaticky kompromitován i druhý server.
Rád bych vám nabídl návod na bezpečné řešení, které vám umožní omezit dostupné akce na druhém serveru:
Vygenerujete certifikát jen pro danou akci – např. rsync a do souboru ~/.ssh/authorized_keys
na cílovém počítači ke klíči přidáte i pár magických slov, která musí být na stejném řádku:
command="rsync --server --daemon .",from="zdrojovy-server",no-port-forwarding,no-X11-forwarding,no-pty ssh-rsa KOD-SSH-KLIČE root@localhost
Po uložení souboru je pravidlo okamžitě aplikováno a je tedy povolen jen konkrétní příkaz z konkrétního stroje, naopak je zakázáno forwardování portu, forwardování X11 a alokování PTY.
Pokud potřebujete pro jeden počítač povolit více příkazů, stačí napsat více řádků.
Upozornění: při testování funkčnosti si nezapomeňte vypnout SSH-Agenta, aby nepoužil váš vlastní klíč jako alternativu při selhání ověření.
Více nabízí články Automated Backups With rdiff-backup na serveru HowtoForge a SSH Bouncing – How to get through firewalls easily na Hacking Linux Exposed.