GnuPG dalla riga di comando


GPG è un programma per cifrare i messaggi di posta elettronica utilizzando una coppia di chiavi (pubblica e privata) generate dall’utente.

Sappiamo a cosa serve il programma GnuPG: il programma d’eccellenza per cifrare file su Linux. È molto semplice da usare anche dalla riga di comando, ad esempio all’interno di script per Bash.

Per criptare un file

gpg -c filedacrittare

Per decifrare un file precedentemente cifrato

gpg -o file_decifrato -d esempio.gpg

dove -o indica quale file verrà generato dopo la decifrazione, altrimenti il risultato viene soltanto visualizzato sul terminale comandi.

Per generare le chiavi, l’algoritmo predefinito è DSA/ElGamal

gpg -gen-key

questa funzione torna utile per esempio quando si deve impostare l’accesso SSH tra due sistemi senza dover inserire ogni volta la password.

Per esportare la chiave pubblica

gpg -export -a UID > pub.key

Per eseguire il backup della chiave privata

gpg -export-secret-key -a UID > priv.key

Per cifrare un file per il destinatario che possiede la chiave pubblica oppure per noi stessi

gpg -ear 0disse0 filediesempio

dove l’opzione -e indica che vogliamo cifrare, -a per impostare il formato file ASCII 7 bit e -r per cifrare per l’utente. L’opzione -c restituisce invece un file in formato binario.

Quando il file è giunto a destinazione si dovrà impartire

gpg -o filedadecifrare -d risultato.asc

Per importare una chiave pubblica nel proprio “portachiavi”

gpg -import public.key

Per importare la chiave da un repository pubblico (su Internet)

curl -s http://keyserver.ubuntu.com:11371/ciccopalla/pubkey.asc | gpg --import

ipotizzando nell’esempio che si voglia importare la chiave di “cicciopalla”.

Annunci

SqlNinja


Quando si parla di “penetration test” e “vulnerability assessment” spesso si ha l’impressione che tali attività siano semplici perché basate sull’utilizzo di strumenti automatizzati. Il mercato italiano è sempre di più infestato da “squali pavone” e “remore” che causano solo confusione nei clienti sull’esatto significato di termini quali Vulnerability Assessment, Penetration Test ed Ethical Hacking, e sulle differenze che li contraddistinguono.

Parimenti viene prestata scarsa attenzione al fatto che l’efficacia di queste tecniche è proporzionale alle competenze delle persone che le usano. Non si tratta di prendere a noleggio a 100 euro al giorno tutto incluso il “ragazzino appassionato di Linux” e fargli lanciare un paio di scan automatici.

Standard come l’OSSTMM sono in questo senso molto utili per definire una metodologia comune e condivisa, con una terminologia chiara, e per far sì che chi richiede questo tipo di attività possa verificare che dall’altra parte ci sia qualcuno che sappia fornire un elevato livello qualitativo.

Uno di questi strumenti è SqlNinja, un programma (scritto da Alberto Revelli) usato per effettuare “sql injection” su Microsoft SQL Server. Il sito ufficiale del progetto è sqlninja.sourceforge.net/ mentre una dimostrazione pratica del suo funzionamento è visibile sul sito sqlninja.sourceforge.net/sqlninjademo.html oltre che sul blog di Scott Herbert

SqlNinja è un utile strumento per testare la sicurezza di un Microsoft SQL Server. È un piccolo programma in Perl che funziona quindi su tutte le distribuzioni Unix, Linux incluso, ovviamente. Serve principalmente per sferrare attacchi sfruttando la vulnerabilità chiama “SQL Injection”.

SqlNinja permette di ottenere una shell sul database “obiettivo”. Il programma è in grado si di effettuare una fingerprint del server SQL, un attacco forza bruta della password dell’amministratore di sistema, un port scanning per individuare porte aperte e anche un tunnel tramite la porta DNS, quando tutte le porte TCP/UDP sono chiuse ma il server risolve i nomi host esterni.

Per installare SqlNinja su Ubuntu ecco come fare:

sudo apt-get install libnet-dns-perl libnet-pcap-perl libio-socket-ssl-perl libnet-rawip-perl

perl -MCPAN -e "install NetPacket"

Process accounting


acct ( http://www.gnu.org/software/acct/ ) è un programma che permette di conteggiare il tempo di “logon” degli utenti. Molto utile agli amministratori di sistema. Su Ubuntu si installa impartendo

sudo apt-get install acct

Successivamente occorre creare un apposito file di log

sudo touch /var/log/utentecosastaifacendo_acct

e lanciare il programma

sudo accton /var/log/utentecosastaifacendo_acct

è ammessa anche la sintassi canonica

/etc/init.d/acct start

Funzioni:

  • ac per visualizzare i dettagli sul tempo di connessione degli utenti
  • ac -dp per visualizzare il totale giornaliero delle connessioni per ciascun utente
  • sudo lastcomm jt per visualizzare i comandi eseguiti dall’utente “jt”
  • sudo lastcomm rm per cercare nel log chi ha impartito il comando rm
  • sudo lastcomm pts/1 cerca e visualizza il log relativo alle attività svolte dal terminale pts/1.

Sempre nell’ambito delle statistiche sulle attività degli utenti è utile conoscere anche il funzionamento del comando sa1

  • sudo sa elenco generale
  • sudo sa -u elenco per uno specifico utente
  • sudo sa -m numero di processi e numero dei minuti-cpu per utente
  • re è il “real time” della CPU (in secondi)
  • avio è la media di operazioni I/O
  • mentre tio è il numero totale di operazioni.

Mettere in sicurezza un server Linux


“Alzare” un server linux oggi è una operarazione tutto sommato alla portata dei più.
Metterlo in sicurezza sicuramente risulta più complesso.
Per agevolare i niubbi (e, per certi versi, i “dopolavoristi” come dice l’amico 0disse0) pubblico qualche info per evitare di essere “bucati” dopo poco tempo.
P.s.: per scoprire le vulnerabilità del proprio server si consiglia di utilizzare Nessus …

httpd.conf (Apache/WWW)
TraceEnable off
This directive overrides the behavior of TRACE for both the core server and mod_proxy. The default TraceEnable on permits TRACE requests per RFC 2616, which disallows any request body to accompany the request. TraceEnable off causes the core server and mod_proxy to return a 405 (Method not allowed) error to the client.
Finally, for testing and diagnostic purposes only, request bodies may be allowed using the non-compliant TraceEnable extended directive. The core (as an origin server) will restrict the request body to 64k (plus 8k for chunk headers if Transfer-Encoding: chunked is used). The core will reflect the full headers and all chunk headers with the response body. As a proxy server, the request body is not restricted to 64k.
ServerTokens
This directive controls whether Server response header field which is sent back to clients includes a description of the generic OS-type of the server as well as information about compiled-in modules.
Si consiglia di commentare il parametro “ServerTokens” in questo modo:
#ServerTokens OS
e di settare da :
ServerSignature Off
a
ServerSignature On
il parametro “ServerSignature

RPC (Remote procedure control)
RPC, acronimo di Remote Procedure Call, è un meccanismo generale per la gestione di applicazioni client/server. Il sistema si basa su un demone, il portmapper, e un file che elenca i servizi disponibili associati al demone relativo. Il portmapper è un classico esempio di un programma che gestisce un servizio di rete in modo autonomo, cioè senza essere controllato da inetd
Si consiglia di stoppare il servizio (service portmap stop) e di non attivare il servizio all’avvio del server …

SSLv2 vs. SSLv3
Editare il file /etc/httpd/conf.d/ssl.conf e modificare:

da
SSLProtocol all -SSLv2
a
SSLProtocol -ALL +SSLv3 +TLSv1

da
SSLCipherSuite ALL:!ADH:!EXPORT:!SSLv2:RC4+RSA:+HIGH:+MEDIUM:+LOW
a
SSLCipherSuite ALL:!aNULL:!ADH:!eNULL:!LOW:!EXP:RC4+RSA:+HIGH:+MEDIUM

Fare ripartire i servizi che si appoggiano a SSL (Dovecot, Apache ed eventualmente Postfix)
Per testare la funzionalità di SSLv3:

openssl s_client -ssl3 -connect localhost:443
openssl s_client -tls1 -connect localhost:443

Per controllare se il protocollo SSLv2 è stato correttamente disattivato digitare:

openssl s_client -ssl2 -connect localhost:443

Se correttamente disattivato dovrebbe comparire:

CONNECTED(00000003)
29102:error:1407F0E5:SSL routines:SSL2_WRITE:ssl handshake failure:s2_pkt.c:428:

/etc/squid.conf (Squid/Proxy server)
Disabilitare il protocollo gopher
#acl Safe_ports port 70 # gopher

/etc/postfix/main.conf (Postfix/SMTP)
Abilitare i protocolli SSLv3 e TLSv1 (sono se si usa autenticazione)

smtp_tls_mandatory_protocols = !SSLv3, !TLSv1