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 “<=”