Fórum Root.cz
Hlavní témata => Server => Téma založeno: hknmtt 02. 11. 2022, 11:59:59
-
Je mozne aby serverova aplikacia po spusteni zmazala samu seba a bezala z pamete? Cize spustim normalne binarku najekaho http serveru ako sluzbu na pozadi a on sa pri spusteni proste zmaze z disku ale bezi normalne dalej. A ked spadne tak proste admin musi manualne na server nahrat zase binarku a spustit ju.
Pytam sa len zo zvedavosti a ako potencialna ochrana pri hacknuti serveru. Ta manualna praca mi nevadi, neporebujem mat vsetko plne automatizovane a ziskat udaje z ramky bude asi znacne narocnejsie nez z disku aj pre skuseneho cloveka.
-
Je to možné asi stejně, jako je možné smazat binárku jakéhokoliv jiného běžícího programu. Čili ano, je to možné.
-
Já ještě dodám, že jako ochrana to moc nefunguje, protože root může vyčíst paměť libovolného procesu nebo celého systému třeba v /proc/.
-
Je to mozne ale to je tak zle riesenie. Ktore ani nicomu nepomoze.
Pytam sa len zo zvedavosti a ako potencialna ochrana pri hacknuti serveru. Ta manualna praca mi nevadi, neporebujem mat vsetko plne automatizovane a ziskat udaje z ramky bude asi znacne narocnejsie nez z disku aj pre skuseneho cloveka.
Nie, na linuxe je rovnako narocne citat z RAM ako citat z disku.
-
Dokud to nespojis s nejakym triggerem na prukak* ktery zhodi danou instanci tak to nedava smysl.
(napr. pokud je pocet uzivatelu / obsazenych virtualnich terminalu vetsi nez typicka hodnota po dobu jednotek vterin, tak se provede nasilny shutdown, vyjma pripadu kdy se prihlasujes ty, a muzes tento trigger zneplatnit treba necim jako touch /dev/shm/dontkillme )
-
Nejak mi unika zmysel, ale ano, da sa to. Ved ked niekto hackne masinu a napr. bude chciet dat podvrhnutu binarku, tak tu povodnu predsa musi nahradit a killnut povodnu a spustit novu.
-
Podle mě záleží na operačním systému, jeho nastavení a na tom, zda ta aplikace neobsahuje nějaké knihovny, které by se dynamicky linkovaly za běhu - pak by mohl proces po odstranění souborů selhat.
Poměrně běžně se aplikace spouštějí z read-only filesystému, což brání jak přepsání tak i odstranění aplikace.
Možnost přepsat same sebu může být zajímavá, pokud má mít aplikace možnost se sama aktualizovat.
Tazateli jde nejspíš o to aby mu aplikaci někdo neukradl nebo neokopíroval?
-
Na Linuxu (a unixech obecně) to lze. Nicméně to, že smažete ten soubor, neznamená, že přestane existovat na disku. Souborový systém na unixech funguje tak, že máte data na disku, a na ně vede jeden nebo více ukazatelů (hard linky). Když počet ukazatelů klesne na nulu, soubor se smaže. Když spustíte aplikaci, ta běžící aplikace má na soubor hardlink, který lze najít třeba v adresáři /proc. Tj. v tu chvíli budou existovat minimálně dva odkazy. Když smažete jméno ze souborového systému (to, čemu říkáte „smazat soubor“), smaže se ten jeden link ze souborového systému, ale pořád zůstává ten druhý z běžící aplikace. Takže data na disku zůstávají – a kdo má právo číst třeba z /proc, může ten soubor pořád přečíst nebo na něj vytvořit nový odkaz (a tím zase soubor zviditelnit pod nějakým jménem v souborovém systému).
Pozor také na to, že tohle platí, když se spouští jednoduchá nativní binárka. Když budete spouštět nějaký skript, virtuální stroj nebo binárku s odkazy na další knihovny, může se stát, že přistupuje k dalším souborům a otvírá je až v průběhu toho, co aplikace běží. Takže kdybyste smazal celou aplikaci se všemi soubory, může se stát, že najednou v průběhu běhu aplikace bude chtít otevřít další soubor, který ale bude už smazaný. A čistě teoreticky by k tomu mohlo dojít i v rámci jedné binárky – že by aplikace sama svou binárku z nějakého důvodu chtěla otevřít znova na základě cesty k souboru.
Na Windows to udělat nepůjde, protože tam se při spuštění soubor zamkne.
-
Možnost přepsat same sebu může být zajímavá, pokud má mít aplikace možnost se sama aktualizovat.
Tohle uplne nejde - zapisovat do beziciho souboru se neda a typicka error hlaska je "text file busy" (segment .text je jakoze spusteny kod).
Muzete ale binarku smazat a vytvorit soubor znova.
-
lze to, dokonce to i používáme v produkcích. Hlavní use case je připojení disku s aplikacemi přes nfs, spuštění aplikace a odpojení disku. Děláme to tak u diskless virtuálů, není pak potřeba udržovat dlouhodobé nfs spojení, snadněji se migrují mezi hosty a nemusíme mít složité mechanismy pro distribuci posledních verzí aplikace.
Ale jak píšou ostatní, dokud k tomu nemáš jasný důvod, je zbytečné to dělat, bezpečnost s tím nijak nezvedneš a je to zbytečně komplikované.
-
lze to, dokonce to i používáme v produkcích. Hlavní use case je připojení disku s aplikacemi přes nfs, spuštění aplikace a odpojení disku. Děláme to tak u diskless virtuálů, není pak potřeba udržovat dlouhodobé nfs spojení, snadněji se migrují mezi hosty a nemusíme mít složité mechanismy pro distribuci posledních verzí aplikace.
To je ale trochu něco jiného – to spoléháte na to, že soubor aplikace se nahraje do paměti nebo zůstane v NFS cache. Ale obecně odpojení disku je jiná operace než smazání souboru.
-
lze to, dokonce to i používáme v produkcích. Hlavní use case je připojení disku s aplikacemi přes nfs
Ano, aj my sme to tak robili volakedy u nasich app. Ked bola nova verzia, tak sa len prepisala na servri, a uzivatelom sa dalo echo, ze ked vypnu/zapnu program, tak budu mat novu verziu.
-
.