GNU/Linux >> Linux Esercitazione >  >> Ubuntu

Come configurare osquery per monitorare la minaccia alla sicurezza su Ubuntu

OSQUERY è uno strumento open source sviluppato da Facebook per interrogare varie informazioni relative allo stato delle tue macchine come processi in esecuzione, moduli del kernel caricati, utenti collegati attivi, porte di ascolto attive ecc. Questo framework di strumentazione di sistema rende il sistema operativo analitico di basso livello e monitoraggio efficiente e intuitivo. OSQUERY espone un sistema operativo come un database relazionale virtuale ad alte prestazioni che consente di scrivere query SQL per esplorare i dati del sistema operativo e interrogare gli endpoint (Windows, OS X, Linux e FreeBSD) per identificare, sondare ed eliminare vari tipi di minacce . OSQUERY è diverso dal tradizionale HIDS/IPS. Qui è necessario scoprire quali dati sono presenti nella tabella per query e design query basate su questi dati. Inoltre, ha funzionalità integrate per monitorare l'integrità dei file, controllare le connessioni e i processi di rete e persino registrare le modifiche ai dispositivi hardware in tempo reale. In questo articolo, installeremo OSQUERY in Ubuntu 16 e ne verificheremo l'utilizzo tramite osqueryi e osqueryd.

1. Installa OSQUERY

Aggiungi le informazioni del repository OSQUERY al database apt e aggiorna il sistema.

 # sudo apt-key adv --keyserver keyserver.ubuntu.com --recv-keys 1484120AC4E9F8A1A577AEEE97A80C63C9D8B80B

Per utilizzare add-apt-repository, devi installare le proprietà del software Python.

 # sudo apt-get install software-properties-common python-software-properties

Aggiungi i dati del repository ad apt-database

 # sudo add-apt-repository "deb [arch=amd64] https://osquery-packages.s3.amazonaws.com/xenial xenial main"

Aggiorna il sistema e installa OSQUERY

 # sudo apt-get update
 # sudo apt-get install osquery

È possibile eseguire OSQUERY tramite la shell interattiva o in modalità demone. All'inizio, esploriamo come usarlo tramite l'interfaccia della shell OSQUERY e successivamente verificheremo la modalità demone. Per ottenere la shell osquery, digita osqueryi nel terminale per interrogare le tabelle osquery disponibili immediatamente.

 # osqueryi
 osquery>

Per elencare tutti gli utenti che hanno effettuato l'accesso nel sistema, eseguire la query seguente.

 osquery> select * from logged_in_users ;

Trova tutte le tabelle disponibili per la query.

 osquery> .tables

Per descrivere lo schema di una tabella, eseguire il comando seguente.

 osquery> .schema table-name

Esci dalla shell

 osquery> .exit

Puoi anche eseguire OSQUERY passando i flag della riga di comando. ad esempio

 # osqueryi --disable_events=false --worker_threads=2  --logger_plugin=filesystem --pidfile=/var/osquery/osquery.pidfile

Per scoprire più flag della riga di comando disponibili per la shell interattiva OSQUERY, eseguire il comando seguente dal terminale.

 # osqueryi --help

Esploreremo più query in una sezione separata, ma ora configuriamo OSQUERY.

2. Configura OSQUERY

È più facile eseguire OSQUERY con un file di configurazione. Invece di passare molti parametri della riga di comando per eseguire la shell interattiva osquery, questi parametri possono essere scritti nel file di configurazione di osquery. La shell interattiva di OSQUERY (osqueryi) leggerà questi parametri quando esegui osqueryi. OSQUERY non viene fornito con un file di configurazione. Piuttosto c'è un file di configurazione di esempio ( /usr/share/osquery/osquery.example.conf ) che puoi copiare. Cerca il file di configurazione in /etc/osquery/osquery.conf . Se il file di configurazione non è presente, osqueryi verrà eseguito con le opzioni predefinite. Inoltre, il file di configurazione è disponibile per il demone OSQUERY.

Il file di configurazione OSQUERY contiene le seguenti tre sezioni.

→ Un elenco di opzioni e impostazioni lette da osqueryi e osquery daemon ( osqueryd )
→ Query Schedule:l'insieme delle query SQL e degli intervalli.
→ Un elenco di pacchetti che contiene query più specifiche/mirate. ad es. Pacchetto Monitoraggio modifiche file:categorie e percorsi di file e directory monitorati

2.1 Opzioni e impostazioni

L'elenco completo delle opzioni e delle impostazioni può essere trovato in questo wiki. Le opzioni e le impostazioni che verranno utilizzate per questo articolo sono descritte di seguito.

config_plugin: Nome del plug-in di configurazione. Il tipo di recupero della configurazione, il plug-in del filesystem predefinito legge un JSON di configurazione dal disco.

plugin_logger: Nome del plug-in logger. Il logger predefinito è il filesystem. Questo scrive i vari tipi di log come JSON in percorsi di file specifici. È possibile utilizzare più plug-in logger contemporaneamente, copiando efficacemente i registri su ciascuna interfaccia. Separare i nomi dei plug-in con una virgola quando si specifica la configurazione (--logger_plugin=filesystem,syslog).

percorso_logger: Percorso della directory per ERRORE/AVVISO/INFO e registrazione dei risultati.

disabilita_registrazione: Disabilita ERRORE/AVVISO/INFO (chiamati registri di stato) e la registrazione dei risultati della query.

schedule_splay_percent: Percentuale per visualizzare i tempi di configurazione. La pianificazione delle query include spesso più query con lo stesso intervallo. Spesso non è intenzione dell'autore della pianificazione eseguire queste query insieme a quell'intervallo. Ma piuttosto, ogni query dovrebbe essere eseguita all'incirca nell'intervallo. Una visualizzazione della pianificazione predefinita del 10% viene applicata a ciascuna query quando viene caricata la configurazione.

file pid: Percorso del demone pidfile mutex. Il file viene utilizzato per impedire l'avvio di più processi osqueryd.

scadenza_eventi: Timeout per la scadenza della pubblicazione dei risultati delle iscrizioni dal backing-store. Questa scadenza viene applicata solo quando vengono richiesti i risultati. Ad esempio, se --events_expiry=1, gli eventi esisteranno praticamente solo per una singola selezione dall'abbonato. Se non viene eseguita alcuna selezione, gli eventi verranno salvati nell'archivio di supporto a tempo indeterminato.

percorso_database: Se si utilizza un backup store basato su disco, specificare un percorso. osquery manterrà lo stato utilizzando un "backing store" utilizzando RocksDB per impostazione predefinita. Questo stato contiene le informazioni sull'evento in modo tale che possano essere richieste in seguito in base a una pianificazione. Contiene i risultati della query più recente per ciascuna query all'interno della pianificazione. L'ultimo risultato della query consente la registrazione differenziale della query.

prolisso: Abilita messaggi informativi dettagliati.

worker_threads: Numero di thread di invio del lavoro utilizzati per elaborare le query.

abilita_monitor: Utilizzato per abilitare o disabilitare il monitoraggio della pianificazione.

disabilita_eventi: Disabilita osquery Sistema operativo evento pubblica sottoscrivi API. Ciò disabiliterà implicitamente diverse tabelle che riportano in base agli eventi registrati.

disabilita_audit: Utilizzato per disabilitare la ricezione di eventi dal sottosistema di controllo del sistema operativo.

audit_allow_config: Consenti all'editore di audit di modificare la configurazione di audit

identificatore_host: Campo utilizzato per identificare l'host che esegue osquery:hostname, uuid, ephemeral, instance.

enable_syslog: Attiva l'editore di eventi di importazione syslog. Questa è un'abilitazione 'esplicita' perché richiede una configurazione esterna di rsyslog o syslog-ng.

audit_allow_socket: Ciò consente all'editore di audit di installare regole relative ai socket.

schedule_default_interval: Facoltativamente, impostare il valore dell'intervallo predefinito. Viene utilizzato se si pianifica una query che non definisce un intervallo.

# sudo vi /etc/osquery/osquery.conf
"options": {
    "config_plugin": "filesystem",
    "logger_plugin": "filesystem",
    "logger_path": "/var/log/osquery",
    "disable_logging": "false",
    "log_result_events": "true",
    "schedule_splay_percent": "10",
    "pidfile": "/var/osquery/osquery.pidfile",
    "events_expiry": "3600",
    "database_path": "/var/osquery/osquery.db",
    "verbose": "false",
    "worker_threads": "2",
    "enable_monitor": "true",
    "disable_events": "false",
    "disable_audit": "false",
    "audit_allow_config": "true",
    "host_identifier": "hostname",
    "enable_syslog": "true",
    "audit_allow_sockets": "true",
    "schedule_default_interval": "3600" 
  },
 ...........
 ...........
 ...........

2.2 Programma delle query

La sezione di pianificazione contiene le query identificate da una chiave univoca seguita dall'intervallo che specifica la frequenza delle query in secondi. La configurazione per la sezione di pianificazione che useremo è simile a quella di seguito-

 ...........
 ...........
{
"schedule": {
    "crontab": {
      "query": "SELECT * FROM crontab;",
      "interval": 300
    },
    "largest_process": {
     "query": "select pid, name, uid, resident_size from processes order by resident_size desc limit 10;",
      "interval": 60
    }, 
 }
...........
...........

La prima query esamina la tabella crontab ogni 300 secondi e la seconda query sniffa le estensioni del kernel caricate ogni 10 secondi. I risultati della query vengono memorizzati nella cache su disco utilizzando RocksDB. Alla prima esecuzione della query, tutti i risultati vengono archiviati in RocksDB. Nelle esecuzioni successive, in RocksDB vengono registrate solo le differenze tra set di risultati (modifiche).

Un'altra query speciale denominata decoratori viene utilizzata per anteporre i dati ad altre query pianificate. I seguenti decoratori anteporranno l'UUID dell'host che esegue osquery e il nome utente dell'utente a ogni query pianificata.

..........
..........
"decorators": {
    "load": [
      "SELECT uuid AS host_uuid FROM system_info;",
      "SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;"
    ]
  },
..........
..........

2.3 Pacchetti di query

La configurazione supporta insiemi, chiamati pacchetti, di query che aiutano a definire la pianificazione. I pacchetti sono distribuiti con osquery ed etichettati in base ad ampie categorie di informazioni e visibilità. Ad esempio, un pacchetto di "conformità" includerà query che verificano le modifiche alle funzionalità del sistema operativo bloccate e alle impostazioni dell'utente. Un pacchetto di "gestione delle vulnerabilità" può eseguire query di gestione delle risorse generali che creano registri eventi attorno alle modifiche all'installazione di pacchetti e software. Il set predefinito di pacchetti che si trova nella cartella /usr/share/osquery/packs. Aggiungi questi pacchetti al file di configurazione.

..........
..........
"packs": {
 "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
 "incident-response": "/usr/share/osquery/packs/incident-response.conf",
 "it-compliance": "/usr/share/osquery/packs/it-compliance.conf",
 "vuln-management": "/usr/share/osquery/packs/vuln-management.conf"
 }

2.4 Crea un pacchetto personalizzato per il monitoraggio dell'integrità dei file

I pacchetti che abbiamo aggiunto nella sezione precedente vengono spediti fuori dalla scatola. Ora vogliamo aggiungere il nostro pacchetto il cui compito è monitorare l'integrità dei file per le cartelle configurate tramite file_paths. Crea un file con il nome fims.conf all'interno di /usr/share/osquery/packs/ e aggiungi la seguente sezione.

# vi /usr/share/osquery/packs/fims.conf

{
  "queries": {
    "file_events": {
      "query": "select * from file_events;",
      "removed": false,
      "interval": 300
    }
  },
  "file_paths": {
    "homes": [
      "/root/.ssh/%%",
      "/home/%/.ssh/%%"
    ],
      "etc": [
      "/etc/%%"
    ],
      "home": [
      "/home/%%"
    ],
      "tmp": [
      "/tmp/%%"
    ]
  }
}

La query file_events è pianificata per raccogliere tutti gli eventi FIM che si sono verificati su qualsiasi file all'interno dei percorsi specificati da file_paths in un intervallo di cinque minuti. Ad alto livello, ciò significa che gli eventi vengono memorizzati all'interno di osquery e inviati al logger configurato ogni cinque minuti.

Modifica la sezione dei pacchetti in osquery.conf per includere il file sopra.

# sudo vi /etc/osquery/osquery.conf
.................
"packs": {
     "fim": "/usr/share/osquery/packs/fims.conf",
     "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
     "incident-response": "/usr/share/osquery/packs/incident-response.conf",
     "it-compliance": "/usr/share/osquery/packs/it-compliance.conf",
     "vuln-management": "/usr/share/osquery/packs/vuln-management.conf"
  }

Il file di configurazione OSQUERY finale è simile a questo-

{
  "options": {
    "config_plugin": "filesystem",
    "logger_plugin": "filesystem",
    "logger_path": "/var/log/osquery",
    "disable_logging": "false",
    "log_result_events": "true",
    "schedule_splay_percent": "10",
    "pidfile": "/var/osquery/osquery.pidfile",
    "events_expiry": "3600",
    "database_path": "/var/osquery/osquery.db",
    "verbose": "true",
    "worker_threads": "2",
    "enable_monitor": "true",
    "disable_events": "false",
    "disable_audit": "false",
    "audit_allow_config": "true",
    "host_identifier": "hostname",
    "enable_syslog": "true",
    "syslog_pipe_path": "/var/osquery/syslog_pipe",
    "audit_allow_sockets": "true",
    "schedule_default_interval": "3600" 
  },
"schedule": {

"crontab": {
      "query": "SELECT * FROM crontab;",
      "interval": 300
    },
    "largest_process": {
     "query": "select pid, name, uid, resident_size from processes order by resident_size desc limit 10;",
      "interval": 60
    } 
  },
  "decorators": {
    "load": [
      "SELECT uuid AS host_uuid FROM system_info;",
      "SELECT user AS username FROM logged_in_users ORDER BY time DESC LIMIT 1;"
    ]
  },
  "packs": {
     "fim": "/usr/share/osquery/packs/fims.conf",
     "osquery-monitoring": "/usr/share/osquery/packs/osquery-monitoring.conf",
     "incident-response": "/usr/share/osquery/packs/incident-response.conf",
     "it-compliance": "/usr/share/osquery/packs/it-compliance.conf",
     "vuln-management": "/usr/share/osquery/packs/vuln-management.conf",
     "hardware-monitoring": "/usr/share/osquery/packs/hardware-monitoring.conf"
  }
}

Verifica la validità del file di configurazione.

# sudo osqueryctl config-check

Esegui la shell interattiva OSQUERY in modalità dettagliata.

# osqueryi --verbose

3. Configura OSQUERY per utilizzare i log syslog-ng

In questo passaggio, configureremo OSQUERY per utilizzare i syslog. Ubuntu ha un'applicazione rsyslog predefinita che genera syslog, ma in questo articolo scopriremo come configurare syslog-ng in modo che i registri da esso generati vengano consumati da OSQUERY. La tabella syslog delle query OSQUERY registra i log inoltrati su una named pipe da un demone syslog-ng correttamente configurato. Quando syslog viene assimilato in osquery, viene scritto nel backing store (RocksDB) e reso disponibile per l'esecuzione di query. Pertanto la configurazione di syslog-ng creerà una named pipe attraverso la quale OSQUERY consumerà i log.

Installa syslog-ng

 # sudo apt-get install syslog-ng

Cambia il gruppo di file creato da syslog-ng in syslog. Modifica il file di configurazione principale di syslog-ng e cambia il gruppo in adm.

# vi /etc/syslog-ng/syslog-ng.conf
 .........................
 .........................
 options { chain_hostnames(off); flush_lines(0); use_dns(no); use_fqdn(no);
 owner("root");  group("adm"); perm(0640); stats_freq(0); bad_hostname("^gconfd$"); threaded(yes); }; ......................... .........................

Quindi, crea la configurazione syslog-ng per OSQUERY. La sezione seguente mostra come configurare syslog-ng per i log di sistema e riscrive questi log in formato CSV. Quindi viene utilizzato un modello per formattare il messaggio/registro in modo che i campi del registro si fondano con la tabella syslog di OSQUERY. Infine, i log vengono inviati alla named pipe per l'utilizzo da parte di OSQUERY. Le autorizzazioni per la pipe devono almeno consentire a syslog-ng di leggere/scrivere e osquery di leggere.

 # vi /etc/syslog-ng/conf.d/osquery.conf

 source s_osquery {
 system();
 };
 rewrite r_csv_message {
 set("$MESSAGE", value("CSVMESSAGE") );
 subst("\"","\\\"", value("CSVMESSAGE"), flags(global) );
 };
 template t_csv {
 template("\"${ISODATE}\", \"${HOST}\", \"${LEVEL_NUM}\", \"${FACILITY}\", \"${PROGRAM}\", \"${MESSAGE}\"\n");
 template_escape(no);
 };
 destination d_osquery {
 pipe("/var/osquery/syslog_pipe" template(t_csv));
 };
 log {
 source(s_osquery);
 rewrite(r_csv_message);
 destination(d_osquery);
 };

Il file di configurazione di osquery ( /etc/osquery/osquery.conf ) che abbiamo creato in precedenza necessita di un piccolo aggiustamento per syslog-ng. Cambia logger_plugin in syslog dal filesystem o mantieni entrambi.

 "logger_plugin": "syslog" or  "logger_plugin": "filesystem,syslog"

Le seguenti opzioni sono necessarie anche per l'importazione di syslog.

 .................
 .................
 "enable_syslog": "true",
 "syslog_pipe_path": "/var/osquery/syslog_pipe",
 "disable_events": "false",
 .................
 .................

Quindi dobbiamo modificare solo le opzioni logger_plugin in /etc/osquery/osquery.conf che abbiamo creato in precedenza e il resto delle tre opzioni è già presente nel file di configurazione.

Ora riavvia syslog-ng e controlla se la pipe è stata creata con i permessi appropriati.

# sudo systemctl start syslog-ng

# ls -l /var/osquery/syslog_pipe
prw-r----- 1 root adm 0 Apr 27 14:29 /var/osquery/syslog_pipe

Controllare i tronchi che scorrono attraverso il tubo

 # cat /var/osquery/syslog_pipe
 "2017-04-27T14:42:33+00:00", "ubuntu", "6", "auth", "sshd", "Accepted password for root from 117.227.81.214 port 61849 ssh2"
 "2017-04-27T14:42:33+00:00", "ubuntu", "6", "authpriv", "sshd", "pam_unix(sshd:session): session opened for user root by (uid=0)"
 "2017-04-27T14:42:41+00:00", "ubuntu", "5", "local3", "osqueryi", "severity=0 location=options.cpp:61 message=Verbose logging enabled by config option"
 ...................................
 ...................................

Avvia la shell interattiva OSQUERY.

# osqueryi
I0427 14:32:07.981422  3730 options.cpp:61] Verbose logging enabled by config option
I0427 14:32:08.085734  3730 syslog.cpp:97] Successfully opened pipe for syslog ingestion: /var/osquery/syslog_pipe
I0427 14:32:08.101172  3730 file_events.cpp:68] Added file event listener to: /etc/**
....................
I0427 14:32:08.101784  3730 audit.cpp:226] Adding audit rule: syscall=59 action=2 filter=''
....................
I0427 14:32:08.278990  3737 events.cpp:749] Starting event publisher run loop: syslog
I0427 14:32:08.279242  3736 events.cpp:749] Starting event publisher run loop: inotify
I0427 14:32:08.279353  3735 events.cpp:749] Starting event publisher run loop: audit

osquery>

Ora interroga la tabella syslog.

osqueryi> select * from syslog;

La query precedente mostrerà i syslog consumati da osquery tramite la pipe denominata /var/osquery/syslog_pipe

4. Rilevamento delle minacce e DFIR tramite OSQUERYi

In questa sezione, esploreremo alcuni controlli di sicurezza di base tramite la shell interattiva osquery.

a) Esegui la seguente query per scoprire chi sono gli utenti che hanno effettuato l'accesso nel sistema ora.

osquery> select * from logged_in_users ;

b) Trova tutti gli accessi precedenti

osquery> select * from last ;

c) Per trovare le regole del firewall, eseguire la query seguente. Se la query seguente non produce alcun output significa che il firewall non è configurato.

osquery> select * from iptables ;

d) Per trovare tutti i lavori pianificati da crontab, eseguire la query seguente. Con questa query, puoi scoprire se è presente un malware pianificato per l'esecuzione a intervalli specifici.

osquery> select command, path from crontab ;

e) Trova i file che sono abilitati per setuid. Per impostazione predefinita, alcuni file sono abilitati per setuid in Ubuntu 16 ma a parte questi, quali sono gli altri file che sono abilitati per setuid. Questo aiuterà a rilevare i binari backdoor.

osquery> select * from suid_bin ;

f) Trova l'elenco dei moduli del kernel caricati.

osquery> select name, used_by, status from kernel_modules where status="Live" ;

g) Trova tutte le porte di ascolto per verificare se ci sono backdoor nel sistema. Se c'è una porta aperta che non hai configurato, potresti dover esaminare il processo che ha aperto questa porta.

osquery> select * from listening_ports ;

h) Trova l'attività del file nel server insieme all'utente responsabile eseguendo la query seguente.

osquery> select * from  file_events ;

i) Trova i primi 10 processi più grandi in base alla dimensione della memoria residente.

osquery> select pid, name, uid, resident_size from processes order by resident_size desc limit 10;

j) Trova tutti i processi in esecuzione.

osquery> select * from processes;

k) Trova il conteggio dei processi, nomina i primi 10 processi più attivi.

osquery> select count(pid) as total, name from processes group by name order by total desc limit 10;

l) In genere, il malware ascolterà le porte e inoltra la shell inversa all'attaccante. Esegui la query seguente e trova le differenze con qualsiasi stato di sicurezza noto precedente del tuo sistema.

osquery> SELECT DISTINCT process.name, listening.port, listening.address, process.pid FROM processes AS process JOIN listening_ports AS listening ON process.pid = listening.pid;

m) Spesso un utente malintenzionato eliminerà il file binario dannoso dopo averlo eseguito nel sistema. Per trovare tali processi, eseguire la query seguente.

osquery>  SELECT name, path, pid FROM processes WHERE on_disk = 0;

n) Esegui la seguente query per scoprire se è presente una shell inversa bash inoltrata all'attaccante.

osquery> SELECT * FROM processes WHERE cmdline LIKE '/bin/bash -i >& /dev/tcp/%';

5. OSQUERY in modalità demone

Come abbiamo visto, OSQUERY restituirà i risultati dello stato del sistema operativo in tempo reale che possono essere interrogati in una fase successiva. Ma non è possibile eseguire sempre query per il rilevamento delle minacce. Oltre a questo, OSQUERY non include anche alcun meccanismo di avviso. La soluzione è eseguire OSQUERY come demone che eseguirà query pianificate e pacchetti inclusi nel file di configurazione a intervalli regolari e scriverà i risultati in un file. Crea i tuoi pacchetti all'interno di /usr/share/osquery/packs e includi i pacchetti per il monitoraggio nel file di configurazione di OSQUERY. I risultati delle query e dei pacchetti pianificati vengono scritti nel file /var/log/osquery/osqueryd.results.log Questo file di registro verrà creato solo quando OSQUERY viene avviato come modalità demone e OSQUERYD inizia a inviare i risultati. Il demone OSQUERY leggerà lo stesso file di configurazione /etc/osquery/osquery.conf. Ricordati di ripristinare il valore di logger_plugin nel filesystem in /etc/osquery/osquery.conf se lo hai modificato in precedenza in 'syslog'.

Per avviare il demone, usa uno dei seguenti comandi.

# sudo systemctl start osqueryd
       OR
# sudo osqueryctl start

I risultati dovrebbero essere disponibili in breve tempo una volta che OSQUERYD ha eseguito le query e i pacchetti pianificati. Usa il comando tail per verificare che i risultati siano scritti nel file /var/log/osquery/osqueryd.results.log

# tail -f  /var/log/osquery/osqueryd.results.log

Ora puoi inoltrare i registri dei risultati a qualsiasi applicazione esterna come lo stack ELK per l'analisi dei registri e la generazione di avvisi.

Conclusione

OSQUERY è un fantastico strumento che espone i dati del sistema operativo al database relazionale virtuale e ti consente di interrogare i dati di sistema con SQL. osqueryi è utile per eseguire query una tantum per trovare back-door, malware, processi zombi o scoprire utenti che hanno effettuato l'accesso ecc. mentre osqueryd può essere utilizzato per eseguire query pianificate e pacchetti personalizzati per archiviare risultati a lungo termine e generare avvisi utilizzando qualsiasi applicazione esterna.


Ubuntu
  1. Come aggiungere un file di scambio su Ubuntu

  2. Come configurare HAProxy in Ubuntu 16.04

  3. Come configurare UFW Firewall su Ubuntu 18.04

  4. Come installare Bro Network Security Monitor su Ubuntu 16.04 LTS

  5. Come installare g++ su Ubuntu

Come abilitare gli aggiornamenti di sicurezza automatici non presidiati su Ubuntu

Come configurare OpenVPN su Ubuntu Server

Come configurare Git Server su Ubuntu 20.04

Come comprimere file PDF in Ubuntu

Come eliminare un file in Ubuntu

Suggerimenti per Ubuntu:come configurare il doppio monitor