Quanto è utile impedire alle applicazioni Linux di configurare connessioni non affidabili e può essere fatto facilmente?

1

Minaccia: la tua macchina Linux viene compromessa in qualche modo (app non sicura, pacchetto di installazione o aggiornamento compromesso, o un'app viene compromessa a causa di una vulnerabilità, ecc.) e qualcosa sul tuo sistema cerca di "chiamare casa". Quindi vuoi evitare la chiamata, sostanzialmente neutralizzando la vulnerabilità. Lo vedresti perché potresti vedere una notifica che dice "Gimp vuole connettersi a example.com sulla porta 80: consentire, consentire una volta, negare?". Penso che abbia senso come difesa, vero?

Tuttavia, a quanto pare, se non mi sbaglio, non ci sono modi semplici per farlo su Linux, e non sono state sviluppate applicazioni popolari e attendibili (ho cercato su Google e ho trovato diverse domande a riguardo anche qui su stackexchange) . Applicazioni come AppArmor o SeLinux sono state sviluppate per controllare quali file possono essere utilizzati da un processo, ma lo stesso non è stato fatto per le connessioni di rete. Su Windows tali applicazioni sono molto comuni e fanno parte dei firewall. C'è una ragione per cui lo stesso non è mai stato comune su Linux? Non penso che la configurazione delle connessioni di rete consentite possa essere più difficile della configurazione dei file consentiti in AppArmor o SeLinux, quindi non può essere una questione di usabilità.

Devo dire che forse ho trovato un modo per eludere tali metodi. La maggior parte degli utenti probabilmente dovrà impostare una regola che permetta al browser di connettersi a qualsiasi host sulla porta 80. Pertanto il malware potrebbe semplicemente provare a copiare se stesso all'interno del browser (patch o come plugin), e quindi sarebbe libero di connettersi ovunque sulla porta 80. Tuttavia, non penso che questo faccia tentare di evitare connessioni non fidate del tutto inutili. Con lo stesso ragionamento, il malware potrebbe applicare AppArmor o le sue regole per essere libero di fare ciò che vuole, ma questo non rende completamente AppArmor inutile.

    
posta reed 16.09.2018 - 15:32
fonte

3 risposte

1

Richiami un buon punto. EDR (Endpoint Detection and Response) è stato creato proprio per questo motivo. Fornitori come Crowdstrike fanno un ottimo lavoro a protezione degli endpoint. A mia conoscenza, la maggior parte del software EDR è sviluppata per essere invisibile all'utente finale. Principalmente perché gli host sono gestiti centralmente da un amministratore. Un EDR decente potrebbe rilevare quando un utente scarica ed esegue una nuova applicazione e puoi tenere traccia di tutto ciò che fa il programma, ad esempio creare connessioni in uscita.

Questo tipo di software deve essere molto robusto e intelligente, quindi di solito è costoso. Immagino che sia la ragione più probabile per cui non è preinstallato sulla maggior parte dei sistemi operativi. EDR è disponibile per la maggior parte dei sistemi operativi, incluso Linux.

Per rispondere direttamente alla tua domanda, è molto utile monitorare le connessioni di rete dalle app di fiducia e di solito è difficile farlo in modo efficace.

    
risposta data 16.09.2018 - 18:46
fonte
1

Questo sta diventando più comune con i nuovi formati di pacchetto sandboxing - ad esempio, il pacchetto Snap per GIMP non ha o non ha avuto accesso a:

Supporto rimovibile

link

Stampanti

link

Rete

link (Non sono sicuro che se il messaggio di errore corrisponde a quello, l'abbiamo visto anche in altri contesti)

Ora immagina le distrozioni in cui praticamente qualsiasi software che stai utilizzando viene installato tramite tali sandbox e ottieni ciò che stai cercando. Per quanto ne so, non è ancora abbastanza dettagliato per gestire ogni singolo accesso, ma non dovrebbe esserci nulla per impedire che tali autorizzazioni vengano fornite caso per caso.

Questo richiederà un certo aggiustamento delle aspettative degli utenti, ovviamente - come puoi vedere, tutti questi sono stati segnalati come problemi perché la gente pensava che il pacchetto fosse rotto:)

    
risposta data 16.09.2018 - 21:30
fonte
1

Ci sono molti punti nella tua email, alcuni dei quali sono idee sbagliate.

Gimp wants to connect to example.com on port 80: allow, allow once, deny?

Sembra che tu voglia trasferire la tua esperienza da MS Windows a Linux. In Linux, è difficile associare le connessioni di rete con il firewall. Il firewall su Linux si trova sotto il livello TCP, il che significa che può proteggere il livello TCP, ma ha una visibilità limitata nello stack. Al contrario, su MS-Windows il firewall si trova sopra il livello TCP. Ma, naturalmente, strumenti come netstat possono assorbire socket di rete con processi, quindi non è impossibile.

Dai un'occhiata a netstat: quanti dei socket vedi appartengono ai processi utente interattivi e quali no? Come dovrebbe il sistema decidere a livello di programmazione se applicare una politica di default o chiedere all'utente?

Applications like AppArmor or SeLinux ... hasn't been done for network connections

Entrambi SELinux e Apparmour può applicare controlli di rete, ma nessuno dei due è molto ben documentato. Inoltre con gli spazi dei nomi di rete puoi applicare diverse regole del firewall a diversi gruppi di processi.

there are no easy ways to do this on Linux,

È sorprendentemente semplice da fare per le connessioni in entrata con i wrapper TCP (anche se richiede una certa conoscenza di come la GUI implementa l'isolamento della sessione e la separazione dei privilegi). È anche relativamente semplice controllare le connessioni in uscita tramite (ad esempio) calamari anche se qui è ancora più difficile risolvere l'applicazione client.

Sospetto che nessuno abbia implementato una soluzione pacchettizzata al problema perché non lo percepiscono come un problema. Forse potresti scrivere bene.

    
risposta data 17.09.2018 - 14:01
fonte

Leggi altre domande sui tag