Portál AbcLinuxu, 5. května 2025 18:55
iptables
umím nastavit příchozí (a i odchozí) pravidla, ale nemá to tu interaktivitu. Tedy kromě accept/reject/drop tak nemám nic jako "ask".
Řešení dotazu:
.bashrc
wget nebo netcat, který spojení udělá za něj - a u wgetu spouštěného z Bashe budeš mít spojení určitě povolená. Ďábelský proces může přes firefox-remote otevřít ve Firefoxu stránku - a u Firefoxu budeš mít určitě internetovou komunikaci povolenou. Nebo ti může rovnou nainstalovat do Firefoxu addon, který mu spojení zprostředkuje. A milion dalších věcí.
Izolace aplikací od sebe navzájem je v Linuxu bohužel mizerná, takže není možné izolovat ani síť.
Pokud tě to trápí, mrkni na QubesOS - je to pokus (bohužel zatím pouze pokus, nevím, jak je to momentálně použitelné) o zabezpečení Linuxu.
Tedy když přijde interupt z karty, že má paket pro IP, nebo přijde požadavek z vyššího protokolu na vytvoření IP paketu, tak ty požadavky jdou do firewallu, ten to buď posoudí automaticky, má-li explicitní pravidlo, nebo mi podá informaci, kdo a jaký paket posílá.No ale k čemu je tohle dobrý?
Izolovat s dá. Stejně jako izoluješ síť (SELinuxem, jmennými prostory), můžeš izolovat souborové operace a cokoliv jiného. Jenom je to nechutně složité implementovat a otravné používat.
Windows mají s každým procesem asociovány credentials, které proces může použít k získání oprávnění. Něco jako SELinux má domény, ale credentials jsou dynamické.
Co je ale problém, je, jak vést dialog s firewallem, aby dotaz neschválil ďábelský proces. Ve Windows se na to právě používají ony credentials, případně systém odpojí celé GUI a překryje jej svým dotazem (UAC od Vist).
Tohle by šlo udělat X11 klientem, který by grabbnul veškerý vstup (něco jako dělá pinentry), ale jak říká pan Bžatek, X11 je mrtvý, teď se dělá Wayland.
Nakonec udělat interaktivní firewall není těžké. Přes NFQUEUE se nechá prvotní TCP SYN packet poslat do uživatelského prostoru, který přes atributy socketu identifikuje zdrojový proces a přes onen X11 klient se dotáže uživatele.
Mám pocit, že podobná vymoženost se připravovala do Fedory, ale kam se to dostalo, netuším.
bash --login
. Naopak v žádném z mých dvaceti spuštěných terminálů login shell neběží. Dělám tedy s/login shell/interaktivní shell/.
Je to I tak omezení, byť by mi asi vadilo jen zřídka. Především ale jednak řeší jedinou situaci, kdy se něco spouští automaticky. Co takový scénář ‚portmaster -f
a odejdu na oběd‘? Co prostě cokoli, co probíhá typicky unixovým způsobem: správně to nastavím, a pak to funguje samo?
Druhak lze v podobných případech následovat cestičku z drobků a neměnit přímo crontab, ale wrapnout ty skripty z něj spouštěné. To samozřejmě předpokládá sofistikovanějšího útočníka, ale když už by se někdo rozhodl využít zrovna crontab, tak dává smysl přilepit se k něčemu, co uživatel čeká, že se děje.
Druhak lze v podobných případech následovat cestičku z drobků a neměnit přímo crontab, ale wrapnout ty skripty z něj spouštěné. To samozřejmě předpokládá sofistikovanějšího útočníka, ale když už by se někdo rozhodl využít zrovna crontab, tak dává smysl přilepit se k něčemu, co uživatel čeká, že se děje.Samozřejmě by to nesmělo mít možnost editovat ani ty skripty z něj spouštěné.
Samozřejmě by to nesmělo mít možnost editovat ani ty skripty z něj spouštěné.To je ale už velmi vážné omezení ve smyslu ‚nic, co uživatel [podle vybrané definice] nedělá interaktivně, nemůže změnit nic, co by mohlo jakkoli nepřímo ovlivnit jinou automatizovanou/naskriptovanou věc‘. Tedy znepoužitelnění systému, pokud ho nemáš akorát na updatovéní statustu na facebooku.
SELinux umožňuje rozlišit, kdo spouští který program. Takže ve výsledku proces wgetu spuštěný cronem bude mít jinou selinuxovou doménu než wget spuštěný jinak.
Ale na tohle nepotřebuješ ani firewall, protože jinak spuštěnému wgetu se nepodaří ani volání socket(2), protože ho zařízne SELinux.
Pokud bys chtěl řešení čistě firewallové, tak nakonec nepotřebuješ SELinux, protože se můžeš sám podívat, který proces packet odeslat. Co je jeho binárka, kdo je jeho rodič a tak dále.
Tohle by šlo udělat X11 klientem, který by grabbnul veškerý vstupPokud ty izolované aplikace provozuješ na jednom X serveru, tak je veškerá izolace úplně k ničemu.
Kolem roku 2010 se NSA snažila rozšířit X11 o SELinux. Netuším, kam to dotáhla.
Ale občas používám i nějaké programy pod wine, připadně i některé closedsource programy pod linux, a tam dost netuším, kdy a kam program komunikuje a rád bych to věděl. Interaktivní firewall mi to pomůže zjistit a rozhodnout se.Ale toto nezistis vdaka interaktivnemu firewallu ani na windowse. To je len iluzia. Je kopa technik ako to obchadzat. Ani na windowse sa sofistikovany skodlivy kod nekomunikuje priamo ale vyuziva prostriedky windows a tie firewall pusta bez pytania. Ak chces naozaj vediet,co program robi a posiela, tak jedine logovanim komunikacie a jej naslednym studovanim.
Ale občas používám i nějaké programy pod wine, připadně i některé closedsource programy pod linux, a tam dost netuším, kdy a kam program komunikuje a rád bych to věděl. Interaktivní firewall mi to pomůže zjistit a rozhodnout se.Ne, nepomůže. Pokud jsi nainstaloval nedůvěryhodný program, mohl si tento třeba někam zkopírovat SUIDnutý wget nebo rovnou nahrát rootkit do kernelu (pokud při instalaci měl roota) a ty prostě nemáš jak to zjistit.
Tiskni
Sdílej:
ISSN 1214-1267, (c) 1999-2007 Stickfish s.r.o.