Come controllare le connessioni in uscita in linux: OpenSnitch

Chi sta comunicando ?

OpenSnitch, un personal firewall progettato e sviluppato in Go e Python per i sistemi Linux di Simone Margaritelli.

Giova ricordare che : THIS SOFTWARE IS WORK IN PROGRESS, DO NOT EXPECT IT TO BE BUG FREE AND DO NOT RELY ON IT FOR ANY TYPE OF SECURITY.

OpenSnitch è un firewall a livello di applicazione, il che significa che durante l’esecuzione, rileverà e avviserà l’utente per ogni connessione in uscita che le applicazioni che sta eseguendo stanno creando. Questo può essere estremamente efficace per rilevare e bloccare le connessioni indesiderate sul vostro sistema che potrebbero essere causate da una violazione della sicurezza. Per fare questo, OpenSnitch si affida a NFQUEUEUE, un target/estensione di iptables che permette ad un software “userland”di intercettare i pacchetti IP.

La cosa principale che fa OpenSnitch è tenere traccia delle richieste internet fatte dalle applicazioni che hai installato. Ogni volta che un’applicazione che non ha una regola in vigore tenta di accedere a Internet, appare una finestra di dialogo. Questa finestra di dialogo offre la possibilità di consentire o bloccare la connessione.

Potete anche decidere se questa nuova regola si applica al processo, all’URL esatto che sta tentando di raggiungere, il dominio che sta tentando di raggiungere, a questa singola istanza, a questa sessione o per sempre.

opensnitch
opensnitch



 

NFQUEUEUE e Userland (Userspace)

NFQUEUEUE è un oggetto iptables e ip6tables che delega la decisione sui pacchetti ad un software di userspace.

Il termine userland (o Userspace) si riferisce a tutto il codice che gira al di fuori del kernel del sistema operativo. Userland di solito si riferisce ai vari programmi e librerie che il sistema operativo utilizza per interagire con il kernel: software che esegue input/output, manipola oggetti del file system, software applicativo, ecc.

Ogni processo di Userspace viene normalmente eseguito nel proprio spazio di memoria virtuale e, a meno che non sia esplicitamente consentito, non può accedere alla memoria di altri processi. Questa è la base per la protezione della memoria nei sistemi operativi mainstream di oggi. Con sufficienti privilegi, i processi possono richiedere al kernel di mappare parte dello spazio di memoria di un altro processo sul proprio, come nel caso dei debugger. I programmi possono anche richiedere regioni di memoria condivise con altri processi, sebbene siano disponibili anche altre tecniche per consentire la comunicazione tra processi.

Ritorniamo a OpenSnitch

Una volta avviato installerà le seguenti regole iptables:

OUTPUT -t mangle -m conntrack --ctstate NEW -j NFQUEUE --queue-num 0 --queue-bypass
INPUT --protocol udp --sport 53 -j NFQUEUE --queue-num 0 --queue-bypass

Questo reindirizzerà anche le query DNS a OpenSnitch, permettendo al software di eseguire e la risoluzione IP -> hostname senza eseguire query DNS attive.

Una volta rilevata una nuova connessione, il software si affida all’estensione del kernel ftrace per tracciare quale PID (quindi quale processo) sta creando la connessione.

ftrace (abbreviato da Function Tracer) è un framework di monitoraggio per il kernel Linux. Sebbene il suo nome originale, Function Tracer, derivi dalla capacità di ftrace di registrare informazioni relative a varie attività eseguite mentre il kernel è in esecuzione, le capacità di ftrace di tracciamento coprono una gamma molto più ampia di operazioni interne del kernel.

Installazione

Il repository di riferimento https://github.com/evilsocket/opensnitch  

dove troverete tutte le indicazioni per una corretta installazione.