Maremontana 2016

Maremontana 2016
In partenza poco dopo il ristoro del 24°km (foto di Walter Nesti)

Quest’anno sto aumentando le distanze e difatti, mentre nell’edizione scorsa ho partecipato al percorso da 23km della Maremontana, nel 2016 ho scelto il 45km. C’era anche il 60km, ma per me sarebbe l’equivalente della morte certa. Meglio di no.

È stata proprio una bella corsa. L’organizzazione si è mostrata all’altezza come sempre: posti medici disseminati sul percorso, sentieri sempre percorribili anche se spesso non ci si sta due affiancati, personale dell’organizzazione disseminato un po’ lungo tutto il percorso, disponibilità di una doccia e di un pasto caldo a fine corsa, controllo del contenuto dello zaino con materiale obbligatorio. E addirittura, qualcuno è partito a controllare il sentiero due ore e mezza prima della partenza, cioè alle 3:30 di notte.

Il mio allenamento non è mai stato sufficiente per correre in maniera competitiva, quindi lo spirito con il quale sono partito è quello del campestre che va a fare una passeggiata, anche se impegnativa. Ovviamente ho fatto i miei controlli medici, ho corso almeno una volta a settimana cercando di coprire distanze lunghe (almeno mezza maratona per ciascuno degli ultimi 4-6 allenamenti), ho fatto un po’ strada di collina e una volta ho corso con la neve inaspettata.

La sera prima della corsa ho cenato abbondantemente (sapete, il menu del ristorante diceva «minimo due porzioni»…) e sono andato a letto puntando la sveglia alle 4:50.

(altro…)

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.

Metti che prendi un IBM Power8 per risolvere tutti i tuoi problemi

Di recente ho lavorato alla configurazione di un nuovo server baan IV con oracle. Si trattava del passaggio da un cluster con 2 server HP Integrity rx2660 con sistema operativo HP-UX B.11.31 e processore Intel Itanium 2 9140 (2 core, 1,66GHz, 4 logical CPU dovute all’attivazione dell’hyper-threading) con 32GB di RAM, ad un cluster con 2 server IBM 8286-41A con degli LPAR con sistema operativo AIX 7.1.3.45 TL03 e processore POWER8 (6 core dei quali solo 2 abilitati, 3,02GHz, quindi 2 virtual CPU con in tutto 4/8/16 logical CPU configurabili con SMT) con 32GB di RAM.

Sul vecchio sistema era utilizzato oracle 10g (10.2.0.4.0 standard edition), sul nuovo è stato scelto oracle 12c (12.1.0.1.0 standard edition) perché il vecchio 10g non è più supportato da oracle e non va su AIX 7.1. Come conseguenza dell’aggiornamento di oracle è stato aggiornato anche il porting set: dalla serie 6.1c alla 9.0, con conseguente attivazione del driver di baan per oracle in configurazione «combo».

(altro…)

Il gatto il Schrödinger

L’ultimo dell’anno ho giocato a quel gioco nel quale ciascuno dei partecipanti ha appiccicato sulla fronte un foglietto con il nome di una persona famosa, e senza leggerlo deve fare delle domande agli altri partecipanti per capire chi sia. Le domande da fare devono prevede solo una risposta positiva o negativa. La prima domanda che uno fa, in genere, è se il personaggio sia vivente.
Allora la prossima volta che giocate, affibbiate a qualcuno il personaggio «gatto il Schrödinger» e divertitevi a dare la risposta giusta alla domanda «è vivo?».
Suggerimenti per la risposta:

  • non si sa e non si può sapere
  • certamente sì, visto che era del 1935
  • quello vero ormai sì, ma la popolarità l’ha reso immortale

Overland Track

Per cominciare ecco le foto degli impavidi protagonisti all’inizio del percorso…

Imma alla partenza
Giuseppe alla partenza

L’Overland Track è un percorso lungo il quale si fa trekking, ovvero, come dicono gli australiani, “bushwalking.” Si trova a nord ovest della Tasmania, tra “Cradle Valley” e “Lake St. Clair”. Altre foto sono disponibili qui.

(altro…)