GNU/Linux >> Znalost Linux >  >> Linux

Neměl by klíč pro automaticky spouštěnou úlohu Cron, která běží přes Ssh, mít přístupovou frázi?

Čtu článek v Master Linux Now 2013 s názvem OpenSSH: Easy Logins a používá ssh-agent abyste mohli jednou zadat přístupovou frázi pro váš klíč, a pak se budete moci volně připojit ke vzdálenému počítači, aniž byste jej museli znovu zadávat, zatímco je spuštěn ssh-agent.

Důvod, proč mě článek zaujal na prvním místě, kromě toho, že jsem nemusel milionkrát znovu zadávat své heslo; bylo, abych mohl provádět bezobslužné zálohování ze /na vzdálené počítače voláním rsync z cronu na počítači vzdáleném k serveru přes ssh;

Viděl jsem jiný článek, kde někdo jen přeskočil heslo, aby cron mohl snadno použít klíč k přihlášení, nezdá se mi to správné, ale je to v praxi v pořádku? Chci říct, že kdyby se někdo zmocnil toho souboru klíče, mohl by způsobit zkázu na počítači, který se zálohuje.

Zdá se mi, že by bylo bezpečnější se ujistit, že je uživatel po restartu přihlášen, a nechat ho zadat heslo jednou, když se přihlašují, aby se agent spustil, a pak jen čekat na spuštění úlohy cron se zamknutou obrazovkou; ale pravděpodobně mi zde něco chybí, například o tom, s jakými typy uživatelů nebo typů uživatelů cron běží.

Přijatá odpověď:

Omezení příkazů, které lze klávesou vyvolat

Pokud bude klíč SSH používat jakýkoli druh automatizované nebo bezobslužné úlohy, měli byste omezit, jaké příkazy může provádět na vzdáleném počítači, bez ohledu na to, jaké rozhodnutí o tom, jak a kam klíč uložit, uděláte.

Použijte něco takového v ~/.ssh/authorized_keys :

command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAABBBBBXXXXXX.....

Tímto způsobem by alespoň klíč neměl být schopen, jak říkáte, způsobit zmatek. Může přistupovat pouze k tomu, k čemu má přistupovat atd... S největší pravděpodobností může stále způsobit škody, ale měl by mít méně než plný přístup ke vzdálenému systému.

Můžete také omezit IP adresy, kterým je povoleno se pomocí tohoto klíče připojit, a deaktivovat spoustu dalších funkcí SSH, jako je přesměrování portů pro připojení, kde se tento klíč používá:

from="10.1.2.3",no-port-forwarding,no-X11-forwarding,no-agent-forwarding,no-pty,command="/usr/sbin/the-backup-daemon" ssh-rsa AAAAAAAAAAAAXXXXXX.....

Vše, co musí jít na jeden řádek v ~/.ssh/authorized_keys .

Ochrana klíče

Záleží na tom, jaký je váš model hrozby.

Pokud se obáváte odcizení klíče, když je „studený“, například když vám fyzicky ukradnou počítač, ve kterém je uložen, nebudete jej chtít uložit bez přístupové fráze v tomto umístění.

Mohli byste po spuštění serveru ručně spusťte druh agenta SSH na pozadí, přidejte k tomuto agentovi klíč a zaznamenejte agentův $SSH_AUTH_SOCK pro budoucí použití v cronu, ale upřímně to zní jako větší problém, než za to stojí. Nezašifrovaný klíč můžete také uložit do tmpfs souborový systém a ať k němu úloha cron přistupuje odtud. V obou případech je klíč uložen pouze v paměti (pokud nemáte žádný swap nebo šifrovaný swap). Samozřejmě byste měli chown a chmod soubor tak, aby k němu měl přístup pouze cílový uživatel.

Související:Potřebujete vestavěný `builtin`?

Pak znovu, pokud se toho obáváte, pravděpodobně jste již nastavili tento počítač se zašifrovaným kořenovým souborovým systémem a swapem (např. luks), takže si s tím nemusíte dělat starosti.

Pokud se obáváte, že bude klíč odcizen, když je „horký“ (načtený v paměti), pak s tím nemůžete moc dělat. Pokud k němu může přistupovat úloha cron, může k němu přistupovat i něco jiného, ​​čemu se podařilo získat stejný přístup. Je to tak, nebo se vzdejte pohodlí provádění úlohy bez dozoru.

Závěrem lze říci, že byste měli se zálohovacím serverem zacházet jako s velmi privilegovaným systémem, protože mu bude nutně poskytnut přístup pouze pro čtení ke kompletním souborovým systémům všech počítačů, které zálohuje. Váš záložní server by neměl být dostupný například z internetu.


Linux
  1. CronJob neběží

  2. Spuštění aplikace Qt přes web

  3. Skript Nohup pro Python nefunguje, když běží na pozadí s &

  1. cron občas neběží

  2. Jak mohu naplánovat úlohu cron, která se v linuxu spouští každých 10 sekund?

  3. Nelze získat přístup SSH pro nového uživatele

  1. 3 způsoby, jak konfiguruji SSH pro soukromí

  2. Odstraňte soubory, ke kterým se v Linuxu po určitou dobu nepřistupovalo

  3. Úloha Cron zkontrolovat, zda skript PHP běží, pokud ne, pak spustit?