Archivi categoria: Open Source

Inerente a software a codice aperto (open source)

Metti che sbagli a configurare il tuo apache e crei un «open proxy»

Lo so, la documentazione va letta bene e più volte, ma capita di avere fretta oppure che la documentazione sia vaga. Così mi è successo di configurare male un server apache che, dopo due anni, è stato usato come «open proxy», cioè come proxy senza nessun controllo. Questo vuol dire che chiunque, impostando come proxy l’ip del mio server, poteva accedere ad internet senza rivelare il proprio indirizzo ip.

L’errore che avevo commesso era il seguente: avevo abilitato il modulo proxy perché apache inoltrasse alcune richieste ad altri siti, nascondendoli ai client. In questo modo su un solo IP davo accesso a varie applicazioni gestite su diverse macchine virtuali. Apache riceveva la richiesta http://www.miodominio.tld/sitoA e la inoltrava all’apache sulla macchina virtuale A, se riceveva la richiesta http://www.miodominio.tld/sitoB la inoltrava all’apache sulla macchina virtuale B, eccetera.

La mia configurazione, una volta attivato il modulo proxy, era la seguente:

<IfModule mod_proxy.c>
   ProxyRequests On
   <Location "/sitoA">
      ProxyPass http://192.168.74.40/
   </Location>
   <Location "/sitoB">
      ProxyPass http://192.168.74.41:8080/
   </Location>
</IfModule>

L’errore sta nel fatto che ProxyRequests non serve ad attivare questo tipo di richieste (apache configurato come reverse proxy), ma quelle del normale proxy (configurato come forward proxy).

Evidentemente ci sono persone che scoprono quando un server web è configurato male e ne approfittano, sicché ieri pomeriggio mi è arrivato l’allarme automatico che indicava sia l’eccessivo utilizzo della banda, sia il carico anomalo in apache. Dopo aver capito cosa era successo, ed essermi documentato meglio, ho impostato il parametro ProxyRequests a Off e la cosa sarebbe stata risolta, ma…

… ma controllando i log di apache continuavo a vedere decine di richieste riferite a siti non miei, alle quali apache rispondeva 200 (HTTP OK). Come ad esempio queste due:

222.186.15.212 - - [02/Mar/2016:06:38:12 +0100] "GET http://909888.com/ HTTP/1.1" 200 272 "http://909888.com/" "Mozilla/5.0+(compatible;+Baiduspider/2.0;++http://www.baidu.com/search/spider.html)"
104.223.72.222 - - [02/Mar/2016:06:38:09 +0100] "GET http://www.heshijiuxian.net/ HTTP/1.1" 200 272 "http://www.baidu.com" "Mozilla/5.0 (compatible; Googlebot/2.1; http://www.google.com/bot.html)"

Proseguendo nella mia indagine sul server apache ho capito il problema. Il mio server gestisce sullo stesso IP siti diversi, quindi è accessibile sia come http://www.miodominio.tld/ che come http://www.altromiodominio.tld/. Per far questo ho dovuto abilitare il NameVirtualHost di apache che in pratica dice ad apache: ascolta su un IP, e quando ti arriva una richiesta, estrai l’intestazione chiamata «host» e in base a quella usa la configurazione del sito corrispondente (cercandola tra i vari VirtualHost configurati).

Non è che sia scritto proprio in caratteri cubitali, ma la documentazione dice anche, tra le righe, che se l’host non viene trovato né tra i ServerName dei vari VirtualHost e nessure tra i ServerAlias, allora viene usato il VirtualHost collegato all’hostname della macchina. Quindi tutte le richieste che si riferiscono a host non gestiti (come quelle che trovavo nei log) restituivano in realtà la pagina del sito principale di questa macchina.

Per risolvere il problema, ho creato un nuovo VirtualHost con un ServerAlias tale da farlo utilizzare per tutti questi siti. In quel VirtualHost viene restituito errore di autorizzazione, come ad esempio:

5.79.83.31 - - [02/Mar/2016:11:10:48 +0100] "GET http://pornobiz.org:81/test_url1/image.php HTTP/1.0" 403 486 "-" "Opera/9.50 (Windows NT 5.1; U; en)"
5.79.83.31 - - [02/Mar/2016:11:10:48 +0100] "CONNECT 74.125.133.138:443 HTTP/1.1" 400 0 "-" "-"

Il VirtualHost è fatto così:

<VirtualHost indirizzo-ipv4:80 [indirizzo-ipv6]:80>
  ServerName www.example.com
  ServerAlias *
  DocumentRoot /var/www/
  <Directory />
    Options FollowSymLinks
    AllowOverride None
  </Directory>
  <Directory /var/www/>
    Options Indexes FollowSymLinks MultiViews
    AllowOverride None
    Order allow,deny
    deny from all
  </Directory>
  ErrorLog /var/log/apache2/error-www.example.com.log
  LogLevel notice
  CustomLog /var/log/apache2/access-www.example.com.log combined
  ServerSignature On
</VirtualHost>

Notare che ServerAlias non contiene un hostname, ma un pattern che corrisponde a tutti gli hostname possibili, così da utilizzare questo VirtualHost per qualsiasi URL.
Ovviamente, per non fare ricadere in questo caso anche gli hostname che vengono invece gestiti dagli altri VirtualHost configurati in precedenza, è stato necessario chiamare il file di questo con un nome che fosse alfabeticamente ultimo, cioè zzz.conf. In questo modo, quando apache cerca il VirtualHost da usare, esamina tutti i file in /etc/apache2/sites-enabled nell’ordine alfabetico, e prende quest’ultimo solo se l’host della richiesta non corrisponde ad uno di quelli gestiti dagli altri VirtualHost.

smbclient e NT_STATUS_IO_TIMEOUT

A volte capita di dover trasferire file da macchine Windows a macchina Linux. In questi casi uno degli strumenti che si possono utilizzare è smbclient, che accede da Linux ad una cartella condivisa della macchina Windows e trasferisce file bidirezionalmente.

Nel caso che il trasferimento sia lento si può rilevare un timeout con il messaggio d’errore «parallel_read returned NT_STATUS_IO_TIMEOUT».

smb> get nomefile
parallel_read returned NT_STATUS_IO_TIMEOUT

Continua a leggere

Torino Map-Party: non mi è parso poi così legato all’«open data»

Sono stato al Torino map party organizzato da Piemonte Visual Contest (Consiglio Regionale del Piemonte, TOP-IX e CSI Piemonte) e dalla Fondazione Torino Musei nel giorno dell’«open data» (il 21 febbraio 2015).

L’evento aveva come scopo dichiarato quello di «mappare insieme alcuni percorsi storico-artistici torinesi» con le app Mapillary e Wheelmap. E in effetti così è stato: siamo stati brevemente edotti sul funzionamento delle app in questione e ci siamo dispersi per la città, a gruppi, secondo vari percorsi prestabiliti.

Mapillary è un servizio online di una azienda svedese che permette alle persone di pubblicare con licenza cc-by-sa foto georeferenziate. L’app permette di scattare foto a ripetizione e di inviarle al sito web, poi con il browser è necessario controllarle per sfocare le parti che possono generare problemi (almeno le targhe di auto e i visi delle persone). Una volta che le foto sono a posto, il sito cerca di collegarle alle altre foto del database per riproporre una visita della città (o, in generale, del luogo) visuale. Se le foto sono sufficienti allora sarà possibile visitare un percorso della città rimanendo al computer.
L’azienda Mapillary non lo fa gratis: anche se le foto sono distribuite con quella licenza e rimangono accessibili (si spera), i dati che vengono estrapolati non sono pubblici. Ad esempio l’azienda può cercare di recuperare dalle foto i cartelli stradali, rilevando i limiti di velocità o i civici delle abitazioni, per rivendere queste informazioni.
Da quanto ho capito, alcune informazioni prese dalla singola foto (dalla parte EXIF, non quelle estrapolate da Mapillary) sono passabili automaticamente a OpenStreetMap. L’incredibile collegamento richiede che l’utente inserisca nell’app sia le proprie credenziali di Mapillary, sia le proprie credenziali di OSM (che, a seconda da come viene implementata l’autenticazione, può voler dire che si consegnano le credenziali di OSM ad una azienda terza).

Wheelmap è invece interamente un servizio che sembra veramente pubblico: i dati sono quelli di openstreetmap e prevede la catalogazione dell’accessibilità per persone che si muovono con la sedia a rotelle, o comunque con limitata mobilità. L’idea che ovunque si vada, l’app mostra i PDI di OSM di un colore specifico: grigio per non catalogato, verde per completamente accessibile, giallo per parzialmente accessibile, rosso per non accessibile.

La cosa veramente triste di questo incontro è stata la motivazione che dovrebbe indurci al partecipare a questa raccolta di dati: più volte è stato disegnato google come grande antagonista che grazie ai soldi compra le aziende che hanno i dati e ci fa fantastiche applicazioni (google maps e street view) contro il quale noi piccoli impotenti possiamo fare qualcosa nonostante lo scontro sia titanico. E cosa possiamo fare? Chiaro: popolare i dati di Mapillary e Wheelmap.

Perché ritengo che questo approccio sia semplicemente penoso? Perché non è assolutamente vero che noi siamo dei poveri tapini che, messi assieme, possono fare qualcosa. No, non è vero per nulla. Siamo qui sotto l’egida della Regione Piemonte, e allora perché non chiedere: che cosa sta facendo la regione Piemonte in questo senso? Perché non rende completamente fruibili i propri dati, magari mettendoli proprio su OSM? E che ci vuole a organizzare delle squadre di persone che vadano in giro con il telefono tutto il giorno seguendo percorsi predefiniti per ottenere le foto che di certo mancano al catasto? Siamo un paese in recessione, abbiamo una percentuale elevata di disoccupati, sicuramente molti accetterebbero di fare questo lavoro ad un prezzo decoroso. Cara regione: fai una bella leggina che dice: tu che sei senza lavoro o in cassa integrazione, se vuoi uno stipendio minimo, devi in cambio svolgere dei lavori. E tra questi lavori ci metti pure quello di aggiornare le mappe e magari quello di aggiungere le foto. Ovviamente non lo puoi fare su Mapillary, visto che è privato, ma se ti metti d’accordo con altre regioni, e visto che possiedi quell’azienda informatica chiamata CSI Piemonte, perché non ti organizzi per realizzare un servizio decente, basato su software open source, che rilasci come software open source, e al quale permetti l’accesso partecipativo da parte di tutti i cittadini?

Beh, io una domanda così non l’avevo in mente, ma ne avevo in mente la prima parte e l’ho posta. Mi hanno risposto, dal «palco» sia un esponente del consiglio regionale, sia un secondo relatore. Il primo ha riferito che in effetti eventi come quello attuale sono la scintilla di quanto la pubblica amministrazione sta facendo (mi viene da ridere al solo pensiero che questa sia veramente la scintilla: persone che regalano dati ad una azienda straniera sarebbero la scintilla della liberazione dei dati della PA); il secondo ha fatto notare che più che nelle alte sfere i problemi sono alla base: i geometri che hanno questi dati sono molto gelosi e non li vogliono rendere «aperti» (e inoltre non li aggiornano neppure al computer: ricordano a memoria tutte le cose più evidenti senza dover ricorrere al computer, quindi perché dovrebbero perdere tempo ad aggiornare i dati?)

In tutto questo, ho avuto la fortuna di fare parte di un gruppetto che aveva persone molto preparate sulla storia della città, e sono stato molto contento di aver potuto vedere qualche angolo interessante del quale ero completamente all’oscuro, come il passaggio che arriva da piazza San Giovanni al Palazzo Reale, ma non quello che arriva al cortile davanti il Palazzo Reale, bensì quello ospita la caffetteria di Palazzo Reale.

A proposito, le mappe che segnano i luoghi da mappare, nonché i punti pubblici WiFi, sono sul sito di Palazzo Madama.