Universal 2nd Factor (U2F) Security Key

La sicurezza non è mai abbastanza quando si tratta di digitare nomeutente e password per accedere ai nostri servizi preferiti. Molte aziende si affidano a sistemi del tipo (One-Time Password) OTP, che rilascia una password valida per una sola sessione di accesso o di una transazione.
Tuttavia ci sono altri metodi che garantiscono una maggiore sicurezza per il semplice fatto che non richiedono inserimenti di codici che potrebbero essere intercettati. Ho sentito parlare del token Fido U2F e con poco più di 5 euro ne ho comprato uno su amazon. Le dimensioni sono quelle di una carta di credito che contiene il token da staccare.

u2f-1

 

 

 

 

 

 

 

 

 

Una volta separato il token dalla plastica si presenta in una forma di una classica key USB.

u2f-2

 

 

 

 

 

 

Come accoppiarla al nostro account
Innanzitutto va detto che il token funziona solo con Chrome versione 38 o successiva. Google mette a disposizione un sistema di autenticazione in due passaggi dove ad ogni accesso viene inviato un sms al nostro numero di cellulare, precedentemente configurato, per convalidare l’accesso. Questo ultimo passaggio può essere evitato utilizzando il  token di sicurezza. Niente più sms, niente più codici da digitare, basta inserire il token nella porta USB del nostro PC e siamo autenticati. La procedura per accoppiare il token in nostro possesso all’account google è semplicissima. Basta andare qui e seguire le istruzioni.

Funzionamento su linux
Per quanto riguarda linux inizialmente non veniva riconosciuta, ma una ricerca veloce su google ha risolto il problema. In sostanza si tratta di creare un file rules, ad esempio /etc/udev/rules.d/60-u2f.rules ed inserire il contenuto seguente,

SUBSYSTEM=="hidraw", MODE="0666", ATTRS{idVendor}=="2581", ATTRS{idProduct}=="f1d0"

dopo le modifiche eseguire il seguente comando per rendere attivo il riconoscimento.

sudo udevadm trigger

Ora il nostro token funziona anche su Chrome per linux.

Software AVCPWeb in sicurezza con DMZ

Realizzare un applicativo web ci risparmia noiose installazioni locali, problemi di compatibilità di software con il sistema operativo installato. Non dobbiamo dimenticare però di mettere in sicurezza il nostro server web che ospita gli applicativi prodotti. Quella che è mostrata in figura è una classica configurazione con DMZ, acronimo di DeMilitarized Zone, usata per permettere ai server posizionati su questa zona di fornire servizi verso l’esterno senza compromettere la sicurezza della LAN interna. In sostanza si tratta di un segmento di rete isolato dalla rete LAN, che può essere quella di casa o quella dell’ufficio. L’isolamento avviene attraverso delle regole, anche dette policies, da applicare ad un apparato di rete che porta il nome di Firewall. Il firewall interagisce con le tre reti rappresentate regolando il traffico da e verso ognuna delle reti collegate.

DMZ

L’ipotesi mostrata, in relazione all’applicativo AVCPWeb, presenta un Server Web Intranet (192.168.0.5) sul quale è stato installato l’applicativo. In questo modo l’applicativo è raggiungibile solo dagli hosts (192.168.0.11..13) collegati alla LAN locale. Il secondo Server Web Internet (192.254.0.100) è quello esposto attraverso il firewall al traffico internet sulla sola porta 80. Su quest’ultimo server andremo a pubblicare i dataset da rendere pubblici e magari ad installare un portale di presentazione della nostra azienda. Gli script allegati sono già configurati per questa tipologia di rete ma per adattarli alle proprie esigenze basta cambiare gli indirizzi IP dei server.
Il server web internet necessita di un servizio web sulla porta 80 ed un server SSH sulla porta 23 configurato sul firewall in modo che accetti solo connessioni dalla rete 192.168.0.0/24 (classe C) dunque 256 host della rete (192.168.0). Il servizio web sulla porta 80 è configurato sul firewall in modo da accettare connessioni sia da internet sia dalla rete locale. Il servizio SSH serve per trasferire i dataset dal server web intranet al server web internet.
Gli script da configurare sul server web intranet sono due che possono coesistere con l’applicativo AVCPWeb nella stessa cartella.
Il file check.sh è uno script bash che può essere inserito nei processi pianificati. Il file checkxml.php è uno script php che esegue la convalida dei dataset xml secondo le specifiche contenute nei file XSD.

Le modifiche da fare sul software AVCPWeb sono relativamente semplici. Nel file class/xmlfun.php c’è la funzione creaUrl($anno) che crea il link del dataset che può essere personalizzato sostituendo opportunamente la riga

$url=substr($url,0,strripos($url,"/"))."/avcp-".$anno.".xml";

con

$url="http://www.tuodominio.com/avcp-".$anno.".xml";

se i dataset sono copiati nella root del portale. Altrimenti basta aggiungere una cartella al path, ad esempio:

$url=”http://www.tuodominio.com/datasetavcp/avcp-“.$anno.”.xml”;

Gli script sono abbastanza documentati quindi vi risparmio la tortura.

Scarica check.zipcheck.zip

 

Software AVCP Web

Software Open Source Php per la generazione dei dataset xml per gli adempimenti previsti dalla legge 190/2012.

(Ultimo aggiornamento al 28/12/2015)

Scarica

Il Software è fornito “as-is” (così com’è). Impegni di lavoro non mi consentono di apportare ulteriori modifiche, ognuno può sentirsi libero di utilizzarlo come previsto dalla licenza AGPLv3. Ringrazio chi ha contribuito attivamente.

Per facilitare la pubblicazione dei dati ai sensi dell’art. 1 comma 32 Legge n. 190/2012 Autorita per la Vigilanza sui Contratti Pubblici, nell’ambito delle disposizioni per la prevenzione e la repressione della corruzione e dell’illegalità nella PA, ho realizzato un software web-oriented in Php su base dati MySQL.

I requisiti per l’installazione del software sono i seguenti:

  • Server Web Apache
  • PHP dalla versione 5.2 in poi con moduli json e libxml
  • MySQL dalla versione 5 in poi

Alternativamente è possibile creare un ambiente web su una postazione di lavoro tradizionale con WampServer o simili.

Funzionalità del software:

  • Gare
    • Registrazione in lotti (CIG, Oggetto, Proponente, Contraente, Inizio, Ultimazione, Importo, Importo Liquidato)
    • Elenco per modifica lotto(gara) o modifica partecipanti/aggiudicatari
  • XML
    • Creazione dataset anno di competenza
    • Creazione dataset indice
  • Setup
    • Modifica dati proponente (per personalizzare la struttura proponente)
    • Inserimento/Modifica/Cancellazione Partecipanti
    • Inserimento/Modifica/Cancellazione Proponenti
    • Inserimento/Modifica/Cancellazione Utenti

 Nota: L’inserimento dei partecipanti è contestuale alla registrazione dei partecipanti alla gara(lotto). Si può scegliere il partecipante da un elenco a discesa oppure (senza selezionare dall’elenco) compilando sia ragione sociale che codice fiscale la ditta partecipante viene aggiunta automaticamente sia al database sia al lotto.

Per impostare la ditta aggiudicataria basta fare click sul pulsante “Aggiudica” che compare nell’elenco delle ditte partecipanti. Per selezionare un raggruppamento come aggiudicatario il pulsante aggiudica viene proposto solo sul capogruppo. In qualsiasi momento è possibile resettare l’aggiudicazione facendo click sul pulsante “reset” che compare solo in corrispondenza della ditta aggiudicataria.

Il processo di creazione dei dataset è conforme alle specifiche tecniche descritte nell’allegato alla legge, reperibile sul sito dell’AVCP (http://www.avcp.it/portal/rest/jcr/repository/collaboration/Digital%20Assets/pdf/AllCom27.05.13SpecificeTecnichev1.0.pdf). I dataset creati sono disponibili nella cartella dell’applicazione o scaricabili dal link proposto dopo la generazione. In caso di errori compare un elenco di errori che si possono verificare aprendo il file xml creato nella cartella.

Il software è liberamente utilizzabile in licenza AGPLv3. Per l’installazione seguire le istruzioni contenute nel file INSTALL.TXT contenuto nel pacchetto avcpweb.

Avcp-Home

Avcp-Gare

Avcp-NuovoRagg

schema

Questo lo schema del DB

Al momento della generazione del dataset annuale è possibile scegliere da un elenco a discesa l’anno da considerare. Si possono generare N dataset a seconda dell’anno di competenza delle gare registrate. La generazione del dataset indice considera gli anni di competenza delle gare, quindi è necessario verificare di aver generato tutti i dataset per ogni anno di competenza.

Una volta generati, i dataset, si possono salvare ed inviare ai tecnici preposti alla pubblicazione nell’area predisposta del portale aziendale.

Scarica avcpweb-2.21

Rev. 2.21 – 28-12-2015

  • header.php,
    index.php,
    class\utenti.php Aggiunto menu per cambio password utente
  • class\gare.php Modificato layout visualizzazione gare, aggiunto filtro per anno.
  • class\xmlfun.php Modificato criterio di scelta dei lotti da includere nel dataset annuale, rimosso blocco sulla mancanza di partecipanti.
    linea 260 ( (`l`.`anno` ={$anno}) or Anno in estrazione
    linea 261 (`l`.`anno`<={$anno} and `l`.`dataUltimazione`=’0000-00-00′) or Lotti ancora aperti
    linea 262 (year(`l`.`dataUltimazione`)={$anno}) ) Lotti con data Ultimazione lavori nell’anno in estrazione

Rev. 2.20 – 16-11-2015
(Si ringrazia Massimo Volpicelli per il contributo)

  • class\gare.php Estesa visualizzazione a partecipanti ed importo liquidato
  • class\login.php Implementata multi-istanza includendo il path nella sessione
  • class\partecipanti.php Perfezionata visualizzazione
  • class\proponenti.php Perfezionata visualizzazione
  • class\utenti.php Perfezionata visualizzazione
  • css\* Perfezionata visualizzazione
  • header.php Verifica istanza di sessione

Rev. 2.19 – 10-07-2015

  • class\gare.php Aggiunto anno corrente per la creazione dei dataset e indice
    Linea 1290 sostituito confronto “<” con “<=”
  • class\xmlfun.php Aggiunto anno corrente per la creazione dei dataset e indice
    Linea 77 sostituito confronto “<” con “<=”
    Linea 426 sostituito confronto “<” con “<=”

kernel di troppo

Ogni volta che la nostra distro ubuntu preferita effettua un avanzamento di release, il vecchio kernel rimane li, inutilmente, occupando spazio che magari possiamo utilizzare a nostro piacimento. Non ci resta che cancellare il vecchio kernel con due semplici passi.

Verifichiamo intanto quali kernel sono presenti con il comando

dpkg --get-selections | grep linux-image

–get-selections elenca tutti i pacchetti installati, | grep linux-image filtra solo i pacchetti che contengono la stringa linux-image

Shell

A questo punto notiamo che il kernel 3.5.0-23 non lo utilizzeremo più, per cui una volta che ci siamo assicurati che il kernel 3.5.0-40 funziona possiamo eliminare il precedente con il comando:

sudo apt-get purge linux-image-3.5.0-23-generic

Shell

Non ci resta che rispondere “S” per cancellare definitivamente il vecchio kernel e recuperare lo spazio indicato.

 

Perché un blog?

In genere la scelta di avere un blog è per pubblicizzare il proprio prodotto. Un’azienda, uno studioso, un pioniere, un singolo individuo, chiunque può aprire un blog finalizzato alla promozione dei propri servizi, per condividere le proprie conoscenze e perché no, per il semplice gusto di avere un blog personale.

Il motivo per cui ho deciso di aprire questo blog è per pura pigrizia. Si, pigrizia. Nel corso degli anni si raccolgono informazioni, si cerca di archiviarle, organizzarle, classificarle, in modo tale da poterle tirare fuori al bisogno come fa il mago con il suo cilindro. Puntualmente a me succede di perderle, o meglio, sono li, archiviate da qualche parte, magari anche criptate che mi risulta difficile recuperarle, tiro fuori dal cilindro un gatto, una giraffa, un cavallo, ma  non il coniglio sperato. Ma io non sono un mago, con i giochi di prestigio non ci so fare per niente. Proprio non mi va di portarmi dietro dischi, box, pennette usb che non hanno mai abbastanza spazio per contenere informazioni talvolta anche inutili perché doppioni.

Ho deciso, creo un blog, quando mi serve qualcosa vado li, so di trovare le informazioni che cercavo, e magari trovo un commento che mi suggerisce di provare a seguire un’altra strada per risolvere il problema in minor tempo. Grandioso, è proprio quello che ci vuole. Perché non l’ho fatto prima ?

Questo blog, sarà quindi una raccolta di “spezzoni di codice” farina del mio sacco o reperiti in rete (citandone la fonte) o prodotti completi che decido di condividere, che mi aiutano nel lavoro quotidiano e potrebbero essere utili ad altri, per risolvere criticità, ma anche crearne di nuove, chi lo sà.

Buona permanenza.

Permalink di WordPress

C’è a chi piace, a chi invece no. Vedere nell’URL del nostro blog index.php?page_id=999.  Ma non è solo una questione di “stile”. WordPress ci viene in aiuto con la modifica del cosiddetto Permalink. Il Permalink è la contrazione del binomio “permanent link”, un URL che non cambia quando vogliamo indicare un link ad un articolo o una pagina sul nostro blog. Ricordiamoci però di assegnare i giusti diritti al file .htaccess, in genere il proprietario è apache:apache oppure www-data:www-data con diritti 644.
Se ancora non funziona vuol dire che il nostro httpd.conf non è configurato correttamente.
Con i diritti di root modifichiamo il file /etc/httpd/conf/httpd.conf.

[[email protected]]$ sudo nano /etc/httpd/conf/httpd.conf

cerchiamo la direttiva

<Directory "/var/www/html">

cambiamo la riga

AllowOverride None

in

AllowOverride All

Questa parola chiave, “AllowOverride”, controlla quali direttive possono essere definite nel file .htaccess. Il file .htaccess può essere presente in ogni directory del nostro server web e, per ogni directory, può impostare delle configurazioni specifiche che si sostituiscono o perfezionano quelle del file di configurazione generale.