Archivi categoria: Linux

PowerShell Core 6.0: una nuova era ha inizio

Facebooktwittergoogle_plusredditlinkedin

Da qualche giorno è disponibile una nuova versione di Windows PowerShell, giunta ormai alla sesta versione. La grande novità risiede nell’introduzione della versione Core, che ha l’obiettivo di portare l’utilizzo della shell Microsoft su tutti […]

Barcellona abbandona Microsoft in favore di Linux e dell’Open Source

Facebooktwittergoogle_plusredditlinkedin

Dopo il tentativo (purtroppo fallito) della città di Monaco, questa volta è il turno di Barcellona.

L’amministrazione cittadina ha rilasciato una roadmap che prevede, prima dell’estate 2019, di reindirizzare il 70% del proprio budget IT su software open source, abbandonando la piattaforma Microsoft ed, in generale, il software proprietario. La migrazione avverrà parallelamente in due parti: dando in outsourcing ad aziende locali i progetti IT ed assumendo 65 nuovi sviluppatori per scrivere i software ad uso specifico della città. Uno dei progetti più grossi che avrà vantaggi da entrambe queste attività è la creazione di un portale online in cui le piccole aziende potranno visualizzare e prendere parte ai bandi pubblici.

Inoltre abbiamo un cambio di sistema operativo: Barcellona opta per sistemi Ubuntu, scelta fatta a seguito di un progetto pilota (già in atto) che ha portato ad avere 1000 desktop basati su Ubuntu ad uso dell’amministrazione; con questa scelta verranno sostituiti anche i software utilizzati nella città, dal passaggio ad Open-Xchange al posto di Exchange Server, all’uso di Firefox come alternativa ad Explorer ed, ovviamente, LibreOffice a sostituzione di Microsoft Office.

Tantissima carne al fuoco, quindi, ma tutto questo porta un primato alla città spagnola: la prima a far parte della campagna “Public Money, Public Code” (‘Soldi pubblici, codice pubblico’) promossa dalla Free Software Foundation of Europe a seguito di una lettera aperta in cui affermava che il software sviluppato utilizzando soldi pubblici dovrebbe anch’esso essere pubblico.

Ovviamente, il motivo economico c’è sempre: se questa migrazione dovesse completarsi e dare buoni risultati, non solo l’amministrazione di Barcellona risparmierebbe parecchio denaro in licenze proprietarie, ma il codice da lei utilizzato e sviluppato potrebbe essere riutilizzato da altre municipalità, andando ad abbattere i costi a livello nazionale.

Siamo curiosi di sapere come andrà avanti la questione, sicuramente il lavoro da fare non è poco, ma la speranza è che un successo possa creare un precedente che, si sa mai, magari potremmo importare qui da noi.

L’esperimento: Linux gira ancora sui vecchi pc?

Facebooktwittergoogle_plusredditlinkedin

In questi giorni di maretta, tra Meltdown, Spectre ed il panico di massa, qualche persona ha ancora voglia di sperimentare mossa da questa domanda:

What is the oldest x86 processor that is still supported by a modern Linux kernel in present time?

Qual’è il processore x86 più vecchio ancora supportato da un kernel Linux moderno ad oggi?

Considerando che il supporto ai processori 386 è stato abbandonato a fine 2012, la risposta ovvia è il processore 486, rilasciato nel 1989.

L’avventura di Yeo Kheng Meng è stata quella di riesumare un vecchio PC IBM PS/1 Consultant 2133 19C del 1993 e provare ad installarci Gentoo Linux con un fiammante kernel 4.14.8, rilasciato lo scorso Dicembre.

L’hardware è il seguente:

  • CPU AMD 5X86 486-clone a 133mhz
  • Scheda grafica Cirrus Logic VLB CLGD5424 da ben 512KiB di memoria
  • 64MB RAM
  • Sound Blaster 16 PnP

Completa la lista un lettore CD, un emulatore hardware di floppy disk ed una scheda di rete ISA 3Com da 10Mbps.

Se conoscete Gentoo Linux saprete che anche per l’installazione minimale è necessaria un pò di compilazione, operazione a dir poco estenuante su un hardware del genere. E’ stato quindi scelto di procedere alla compilazione su un portatile più recente (un Thinkpad T430) per ridurre il tempo.

Che dire, pare che sia assolutamente possibile far girare un kernel recente su hardware decisamente vetusto, anche se con qualche compromesso, come 11 minuti di tempo di boot ed i 5 minuti e mezzo di shutdown, o l’uso di LILO come boot loader, dati i problemi di Grub2.

In ogni caso l’articolo è interessante perchè entra nei dettagli e spiega fondamentalmente passo passo le attività fatte per avere una macchina funzionante e, rullo di tamburi, non impattata dai recenti bug hardware di Intel, AMD & co.

Intanto che vi guardate il video del sistema funzionante, avete mai installato Linux su hardware vecchio o non ordinario?

Installazione di GLPI 9.2.0 in ambiente Linux

Facebooktwittergoogle_plusredditlinkedin

Sul sito ICTPower.it abbiamo pubblicato una serie di articoli relativi al Software di gestione ed inventory GLPI, che alla prova dei fatti si è rivelato molto potente principalmente grazie alla sua modularità che ne estende le funzioni tramite molteplici Plug-In.

Riprendendo articoli, già pubblicati, in cui si analizza il percorso passo-passo per la configurazione in ambiente Windows, e dato che GLPI è rilasciato anche per ambienti Linux, proponiamo qui la sua installazione e configurazione di base su questo sistema operativo.

Dato che questa guida prescinde dall’analisi più ad alto livello delle potenzialità del software e delle sue origini, consigliamo, prima di addentrarsi nell’installazione vera e propria, di dedicare un po’ di tempo alla lettura di questo articolo.

Installazione di GLPI in ambiente Windows

relativo all’installazione su Windows Server 2016 ma con una approfondita overview sul progetto e sulla sua documentazione

Premessa

Come è noto la galassia delle distribuzioni Linux è molto estesa, e pur se presenti in rete installazioni di GLPI già preconfezionate per Debian ed altre distribuzioni, in questo articolo è considerata l’installazione in ambiente CentOS, che per sua origine è molto vicina alle distribuzioni Redhat, Fedora ed Oracle Linux Enterprise.

La versione di CentOS che è stata utilizzata è la 7.4 nella sua opzione “minimal” che consente l’installazione di un sistema operativo molto leggero e quindi anche con limitata superficie di attacco.

GLPI è sviluppato in php e utilizza MariaDB (MySQL) per l’archiviazione delle proprie informazioni, mentre come web server è utilizzato l’onnipresente Apache.

Preparazione del sistema operativo

Terminata l’installazione di CentOS 7 nella configurazione Minimal, è utile prima di procedere, effettuare un aggiornamento del sistema tramite YUM, eseguendo il comando

yum update

Alla data di pubblicazione del presente articolo la versione ultima del sistema operativo è la 7.4.1708

il consiglio, per chi dovesse utilizzare questa guida tra qualche è di verificare le eventuali incompatibilità con le Build più recenti del Sistema Operativo.

Terminato l’aggiornamento base del sistema operativo è utile installare PHP (che verrà aggiornato successivamente) e l’utility WGET utile per il recupero di alcuni file di installazione da GitHub (il repository da cui è disponibile GLPI)

yum -y install wget

yum -y install php

Aggiornamento di PHP

A questo punto è necessario aggiornare PHP utilizzando i repository EPEL (Extra Packages for Enterprise Linux) e REMI

wget -q http://rpms.remirepo.net/enterprise/remi-release-7.rpm

wget -q https://dl.fedoraproject.org/pub/epel/epel-release-latest-7.noarch.rpm

rpm -Uvh epel-release-latest-7.noarch.rpm

rpm -Uvh remi-release-7.rpm

scaricati ed installati i riferimenti ai repository si dovrà abilitare il ramo del repository REMI relativo alla versione 7.1 di PHP

yum-config-manager --enable remi-php71

e successivamente eseguire l’update di PHP

yum update php

a questo punto è possibile verificare la versione di PHP installata

php -v

Terminata questa prima fase di configurazione ed aggiornamento è necessario installare una serie di pacchetti PHP e database necessari al funzionamento di GLPI

yum -y install http

yum -y install php-mysql

yum -y install php-pdo

yum -y install php-gd

yum -y install php-imap

yum -y install php-mbstring

yum -y install php-ldap

yum -y install php-xml

yum -y install php-opcache

yum -y install php-pecl-apcu

yum -y install php-xmlrpc

yum -y install mariadb-server

yum -y install net-tools vim

Configurazione del Firewall di sistema operativo

Configurazione delle componenti di sicurezza Firewall per consentire l’accesso a GLPI

firewall-cmd --permanent --add-service=http

firewall-cmd --reload

in questo esempio è utilizzato il protocollo http, nel caso in cui si intenda attivare il protocollo Https sarà necessario adattare il comando di configurazione per le regole del firewall e configurare Apache per l’uso di certificati.

nel caso si utilizzi un dominio pubblico tramite Letsencrypt è possibile ottenere certificati validi gratuitamente. In alternativa per ambiti lan con domini privati è possibile gestire il rilascio di gertificati tramite l’installazione di CA private.

Impostazione di avvio dei servizi

Impostazione delle opzioni di avvio per Apache e MariaDB al fine di avviare a boot-time i servizi base per GLPI

systemctl enable httpd

systemctl start httpd

systemctl enable mariadb

systemctl start mariadb

Configurazione dell’ambiente MariaDB e creazione del Database per GLPI

Completata questa fase, che definisce i pacchetti base e di supporto per GLPI, è necessario proseguire con la configurazione di ambiente e successivamente creando il DB e la credenziale di accesso che GLPI utilizzerà per il suo funzionamento.

mysql_secure_installatio

questo comando esegue una configurazione dell’ambiente di sicurezza del Database a partire dall’impostazione della password dell’utente root (di database).

Per la nostra installazione, definita la password, è sufficiente confermare tutte le scelte di default fino al temine.

Il passo successivo permette la creazione del Database per GLPI

mysql -u root -p

create database glpi;

CREATE USER 'GlpiUser'@'localhost' IDENTIFIED BY '
1!UserGlpi';

GRANT ALL PRIVILEGES ON glpi. * TO 'GlpiUser'@'localhost' IDENTIFIED BY '
1!UserGlpi';

FLUSH PRIVILEGES;

Installazione di GLPI

I passaggi per l’installazione vera e propria di GLPI sono pochi e molto semplici, è sufficiente scaricare il pacchetto GLPI da repository GitHub e, una volta scompattato, copiarlo nella cartella di Apache.

wget https://github.com/glpi-project/glpi/releases/download/9.2.1/glpi-9.2.1.tgz

tar -xvf glpi-9.2.1.tgz

cp -R glpi /var/www/html

è fortemente consigliato prima di procedere al download di GLPI verificare in GitHub la versione disponibile. Di norma è consigliato il download dell’ultima versione stabile

terminata la copia del pacchetto GLPI è necessario definire le impostazioni di accesso ai file copiati in modo da impostare correttamente la sicurezza dell’installazione.

chmod -R 755 /var/www/html/glpi

chown -R apache:apache /var/www/html/glpi

Prima di procedere con l’avvio della configurazione bisogna modificare il file httpd.conf, relativo alla configurazione di Apache, ed impostare la direttiva AllowOverride per la cartella Docroot a Limit

vi /etc/httpd/conf/httpd.conf

un’ultima configurazione è necessaria per la corretta impostazione in Selinux (che di default è attivo) al fine di permettere a GLPI di operare correttamente

chcon -R -t httpd_sys_rw_content_t /var/www/html/glpi/

setsebool -P httpd_can_network_connect 1
setsebool -P httpd_can_network_connect_db 1

setsebool -P httpd_can_sendmail 1

al termine dei vari passaggi descritti è utile eseguire un riavvio del servizio Apache prima di procedere alla seconda fase della configurazione tramite il browser Web

systemctl restart httpd.service

Completamento della configurazione

a questo punto accedendo tramite un browser all’indirizzo http://<Fqdn>/glpi
è possibile in pochi ulteriori passi portare a termine la configurazione.

Selezionare la lingua di utilizzo dell’applicativo

Accettare i termini della licenza d’uso

Selezionare “install” in quanto si tratta di una nuova installazione

viene eseguito un controllo sulla validazione dei componenti installati


L’installazione procede con la richiesta delle credenziali di accesso al DB creato in precedenza


Selezionare il db GLPI


La configurazione dell’ambiente DB termina con messaggio di conferma


Viene riproposto un riepilogo delle credenziali di accesso default


È possibile accedere direttamente al software


Da cui sarà necessario procedere ad alcune successive impostazioni

Considerazioni

L’installazione è terminata ed il prodotto è utilizzabile la documentazione ufficiale e descrittiva delle varie funzionalità ed impostazioni è reperibile qui:

http://glpi-project.org/

sul sito IctPower sono disponibili i seguenti articoli relativi alla configurazione e gestione di GLPI in ambiente Windows Server


configurazione di GLPI

backup di GLPI


Come effettuare un PenTest – Parte 4: Enumerazione dei target

Facebooktwittergoogle_plusredditlinkedin

Siamo arrivati alla fase definita “Enumerating Target”. Tale fase è il processo per il quale vengono raccolte informazioni sulla macchina target come:

  • Elenco di Porte aperte (Port Scan);
  • Identificazione OS (fingerprint);
  • Servizi Applicativi Attivi.

Prima di affrontare questi tre punti, provando a descrivere alcuni approcci utili, è opportuno definire in maniera chiara la definizione di Port Scanning:

Port Scanning è un’attività che permette di determinare lo stato delle porte TCP o UDP su una macchina vittima. Una porta aperta significa che un host è in ascolto e dunque vi è un servizio accessibile. Al contrario una porta chiusa sta ad indicare che il target non è in ascolto su quella specifica porta.

Un esempio pratico di port scanning e il suo possibile risultato può essere questo:

Un attaccante, interrogando una porta aperta (dunque un servizio attivo su una potenziale vittima), è in grado di recuperare la versione di un Web Server (Esempio molto banale ma chiarificatore).

Se la versione del Web Server risulta vulnerabile, secondo le ultime scoperte, potrebbe essere possibile sfruttare la vulnerabilità.

Prima di affrontare una simulazione di scansione, occorre ricordare due concetti base a livello di trasporto nello STACK TCP/IP:

  • Il protocollo TCP è considerato statefull in quanto ha dei controlli interni inerenti la ritrasmissione dei pacchetti; utilizza il concetto del Three Way-HandShake ed è utilizzato, data la sua affidabilità, per trasmettere dati come HTTP, FTP o SSH.

  • Il protocollo UDP è al contrario Stateless. I pacchetti inviati non sono controllati e qualora un pacchetto vada perso, dovrà essere ritrasmesso dall’applicazione.

    Un modo per poter identificare porte aperte e relativi servizi, è utilizzando il network tool NMAP. La possibilità di conoscere la versione dei servizi esposti può essere un buon punto di partenza per ricercare eventuali vulnerabilità o exploit pubblici.

Nmap risulta essere uno dei tools più famosi e completi presenti nel panorama dell’IT security. Oltre al semplice port scan può essere usato anche per:

  • Host Discovery;
  • Identificazione di Host/Servizi;
  • Os (Operating System) Fingerprint;
  • Network Traceroute;
  • Custom Nmap Script.

Per installare NMAP basta eseguire il comando:

# apt-get update

# apt-get install nmap

# nmap

Nell’interrogare una porta, essa potrebbe rispondere in più modi, a seconda del suo stato. NMAP si preoccupa di interpretare le risposte e fornirci un riscontro User-Friendly.

Le porte possono essere:

  • Open: significa che ha la porta in ascolto ha accettato un pacchetto TCP o un UDP datagram;
  • Closed: significa che anche se la porta risulta accessibile, non vi è nessun servizio esposto;
  • Filtered: sta ad indicare che il tool non è in grado di identificare se la porta è aperta o no, in quanto vi può essere un packet-filter
  • Unfiltered: non riesce ad identificare se la porta è aperta o chiusa;
  • Open | Filtered: è solito ricevere questo stato quando nmap non è in grado di capire se la porta è aperta o filtrata. Accade quando vi è un drop dei pacchetti;
  • Closed | Filtered: in quest’ultimo caso, il tool non è in grado di determinare se la porta è filtrata o chiusa.

L’utilizzo basilare di Nmap è stato già affrontato in un precedente articolo che vi invito a leggere prima di proseguire la lettura di questo articolo: https://www.ictpower.it/sicurezza/testare-la-sicurezza-della-propria-rete-utilizzando-nmap.htm

Tipologie di Scansione: una per ogni occasione

Nmap utilizza numerose tipologie di scansioni: ognuna di esse ha una funzione specifica e con finalità ben precise.

  • TCP Connect scan (-sT): questa scansione va a stabilire un three-way handshake su tutte le porte specificate dall’attaccante. Risulta essere molto intrusiva, lenta e loggabile dalla vittima;
  • SYN Scan (-sS): è la tipologia di scansione utilizzata da Nmap per default, veloce e non intrusiva. Definita anche half-open in quanto vengono inviati pacchetti TCP con FLAG SYN, senza completare il three-way Handshake.

    In base alla risposta della vittima è facile capire se un servizio risulta essere in ascolto.

  1. Se la risposta ad un pacchetto SYN risulta essere SYN/ACK siamo in presenza di una porta aperta e con un servizio attivo;
  2. nel caso di risposta RST/ACK, significa che la porta non è in ascolto.
  3. Se dovessimo ricevere un pacchetto ICMP di tipo “destination unreacheble” potrebbe trovarci di fronte ad una porta filtrata.
  • TCP NULL Scan (-sN), FIN scan (-sF) o XMAS scan (-sX): sono 3 tipologie di scansione che agiscono sempre sui flag del protocollo TCP. NULL scan tende a non settare nessun bits di controllo. FIN Scan setta il FLAG FIN nel TCP, XMAS Scan setta i FLAG URG, FIN e PSH.
    • Se si riceve un pacchetto con FLAG RST, la porta risulta chiusa; se non si riceve risposta significa che la porta può essere aperta o filtrata.
  • TCP Maimon scan (-sM): è una tecnica di scansione basata sul settare i FLAG TCP con FIN/ACK.
    • Se riceviamo un pacchetto RST la porta risulterà chiusa;
    • se il pacchetto sarà droppato la porta è da considerarsi aperta. (Droppato da DROP, dunque scartato)
  • TCP ACK scan (-sA): Utilizzato prevalentemente per vedere se vi è un firewall di tipo stateful e quali porte sono filtrate.
    • Se riceviamo un pacchetto con FLAG RST la porta non è filtrata;
  • TCP Idle scan (-sI) : è una scansione indiretta, utilizzata per nascondere il vero attaccante. Utilizza infatti uno “Zombie”. Potrebbe essere un buon modo per mascherare alcune tracce.

Fino ad ora abbiamo descritto le scansioni più utilizzate con il protocollo TCP. Per il protocollo UDP le performance di scansione tendono ad essere molto inferiori.

Dunque mettetevi comodi…

Un buon consiglio potrebbe essere quello di concentrarsi su le porte standard o condurre una scansione in modo distribuito.

# nmap -sU 8.8.8.8 -p 53

[UDP scan sulla porta 53, host 8.8.8.8]

Ricorda: Nmap, per default, scansiona le top 1000 porte. Per specificare le porte usa il comando -p.

Bypass delle protezioni

Esistono alcune tecniche molto utili per Bypassare controlli basati su IDS o Firewall:

  • Fragment packets (-f): nmap si preoccuperà di dividerà i pacchetti in 8 byte o meno dopo l’header IP;
  • (–mtu): permette di specificare la dimensione della frammentazione di un pacchetto. Il Maximum Transmission Unit (MTU) deve essere un multiplo di otto o Nmap restituirà errore;
  • –source-port <portnumber> permette di specificare la porta sorgente. È utile per ingannare un firewall qualora esso accetti una determinata porta in ingresso;
  • –data-length: permette di specificare la grandezza dei pacchetti inviati;
  • –max-parallelism: con questa istruzione possiamo specificare quanti tentativi/prove possono esser fatte verso un target in un certo tempo;
  • –scan-delay <time>: può essere utile per ingannare IPS/IDS basati su rilevazione degli eventi con soglia.

Una combinazione tra una scansione ben studiata e delle impostazioni di evasione potrebbe garantirvi un ottimo risultato in poco tempo.

Per chi volesse, esiste la possibilità di avere una GUI per utilizzare Nmap. Parliamo di ZenMap. Oltre ad un’interfaccia più semplice ed intuitiva, vi è la possibilità di salvare profili o configurazioni personalizzate.

Inoltre vi è la possibilità di osservare una possibile topologia di rete scansionata.

Enumerazione SMB

Se stiamo andando a testare un ambiente con prevalenza di macchine Windows, questo approccio può essere molto utile. Si tratta di una enumerazione basata sul collezionare informazioni del protocollo Server Message Block.

Tale protocollo è usato per condividere file e stampanti in rete ed è utilizzato da Sistemi Windows.

Per affrontare un enumerazione SMB è possibile scaricare il tool nbtscan.

Per utilizzarlo, basta digitare:

# nbtscan 192.168.1.1-254

[Si noti come ho specificato un intervallo di IP]

Il risultato del comando restituisce il range di ip con le risposte alle query NetBIOS. La differenza sostanziale tra il comando nbtscan e nbtstat è che nello script nbtscan è possibile inserire un range di Ip.

Tale tipologia di enumerazione resta sconsigliata in quanto facilmente loggabile in una macchina vittima.

Esistono altre tecniche di enumerazione più avanzate come quella basata su SNMP (snmpcheck) o VPN (ike-scan) che non affronteremo. Per ulteriori dettagli vi rimando ai rispettivi tools:

Snmpcheck: https://tools.kali.org/information-gathering/snmp-check

Ike-scan: https://github.com/royhills/ike-scan

Siamo giunti al termine di questo articolo con la consapevolezza e l’abilità di poter identificare servizi esposti e possibilmente vulnerabili. Nel prossimo passo cercheremo di mappare tutte le possibili vulnerabilità presenti sulla macchina target per poi sfruttarle a nostro vantaggio.

PASSGIVC – Introduzione a SQL Server su Linux

Facebooktwittergoogle_plusredditlinkedin

Il prossimo webinar del PASS Italian Virtual Chapter è programmato per mercoledì 20 dicembre 2017 alle ore 18:00.

Danilo Dominici (@danilo_dominici) ci spiegherà come utilizzare SQL Server su Linux nella sessione dal titolo “Introduzione a SQL Server su Linux”.

Questo è l’abstract del webinar:

Da sempre i DBA SQL Server hanno utilizzato Windows come sistema operativo ed interfaccia utente. Con il rilascio di SQL Server su Linux lo scenario cambia, ancora una volta, per consentire una ancor maggiore diffusione di SQL Server anche laddove finora non era stato preso in considerazione. In questa sessione vediamo le caratteristiche di SQL Server su Linux e quali sono le modalità per interagire con esso da Linux e da Windows.

Per effettuare la registrazione, puntate il vostro browser qui.