Protezione GeoIP su management Sonicwall

Abilitare il GEoIP:

Controlla se funziona il database GeoIP

Selezione wan to wan sul firewall e scegliendo la colonna “GeoIP Report” fai in modo che le reules di management abbiano tutte il flag attivo:

..edita le regole che hanno il ‘http/https/ssh/ management’ attivo come in figura:

Appunti di rete

Comunicare messaggi in rete

La figura rappresenta la trasmissione di un messaggio attraverso la rete. Qui la definizione di messaggio è ampia, puo’ essere un file, un’immagine, una pagina web.

simboli comuni di una rete di dati
In questa figura vediamo alcuni dispositivi piu’ usati nei diagrammi di rete.

Le interfaccie nelle reti locali.

Le interfaccie di rete normalmente venono chiamate NIC, ci si riferisce alle porte ethernet . Le NIC sono caratterizzate a livello rete da un MAC address (Media Access Control), il quale è un indirizzo (pressoche’) univoco sulla rete LAN. Oggi le NIC hanno connettori solo connettori RJ45. Da notare che il MAC address è valido solo per le reti locali e partecipa alle conversazioni tra dispositivi entro la rete locale. Il MAC è costituito da 6 byte di cui i primi 3 sono codificati in modo da poter risalire al costruttore del NIC.

Come è fatto un indirizzo MAC

Spendiamo qualche parola sul protocollo ethernet. Inizia ad essere commercilizzata nel 1980 e dopo qualche tempo sostituisce altre tecnologie piu’ vecchie come Token Ring e FDDI. In origine il cavo per connettere dispositivi era 10BASE5 che utilizzava un cavo coassiale il quale poi verra’ sostituito con cavo coassiale 10BASE2 e successivamente con il cavo che conosciamo ai nostri tempi a 4 coppie intrecciate. Questo tipo di collegamento viene chiamato 10BASET (approfondimenti: https://it.wikipedia.org/wiki/10Base-T https://it.wikipedia.org/wiki/Ethernet

Il protocollo grazie al quale ethernet funziona è CSMA/CD (Carrier Sense Multiple Access with Collision Detection) e funziona nella maniera piu’ sempliche che ci si possa immaginare (parte del successo di ethernet è dovuto a questo – implementazione del software del NIC semplice). La direttiva è la seguente: “Ascolta prima di trasmettere e mentre trasmetti. Se mentre trasmetti rilevi collisioni, fermati, segnala a tutte le altre stazioni la collisione e riprova più tardi secondo modalità di ritrasmissione stabilite” Da cui se ne deduce che, visto che la rete locale è un media broadcast, ovvero, quando un device trasmette tutti lo ricevono (almeno per quanto riguarda l’implementazione originale vedi ‘switch’), che meno device si ‘affacciano’ sulla rete e meglio funziona ethernet, specialmente se i device non hanno ‘molto’ da trasmettere. Infatti piu’ device, piu’ trasmissioni, piu’ messaggi da inviare significano, piu’ collisioni, piu’ attese. Infatti una rete ethernet inizia ad avere qualche problema di efficienza quando i dati che transitano superano il 40% della portata massima. (approfondimenti: https://it.wikipedia.org/wiki/CSMA/CD

Due dispositivi in rete locale che si scambiano dei messaggi comunicano via ethernet inviando delle serie di bit sulla rete. Il protocollo MAC è l’insieme di regole che permette la comunicazione tra loro. Un dispositivo che deve inviare un messaggio costruisce quello che si chiama “frame ethernet” ed è costituito in questo modo

Ethernet Type II Frame format.svg

Un frame ethernet tipico ha una grandezza compresa tra 64 e 1518 byte ed è formato da:

8 byte per il campo Preambolo;
6 byte per il mac address di destinazione;
6 byte per il mac address sorgente;
2 byte per l’Ethertype;
da 46 a 1500 byte per i dati;
4 byte per il FCS.Approfondimenti: http://wwwusers.di.uniroma1.it/~reti/Reti_Elab_html/Cap4.pdf

Dentro al campo ‘payload’ puo’ incapsulare un pacchetto IP, il quale usa il protocollo MAC per essere trasportato in una rete locale. Questo è il principio di funzionamento ‘reale’ dei livelli OSI di cui abbiamo sentito parlare. Nelle reti costituite da più livelli, come appunto il TCP/IP, in una trasmissione dati i pacchetti dei livelli superiori vengono inseriti o incapsulati nei pacchetti dei livelli inferiori: tale operazione è definita “imbustamento”. In ricezione si ha situazione o processo inverso: a partire dai livelli più bassi ogni protocollo analizza il proprio header e passa al protocollo di livello superiore quello che per lui è carico utile cioè il pacchetto restante che quindi perde via via informazioni aggiuntive di protocollo salendo di strato fino a rimanere nei soli dati utili a livello applicativo. Approfondimento: https://it.wikipedia.org/wiki/Pacchetto_(reti)

Il protocollo IP

Il protocollo ip è costituito da 4 byte e il formalismo con cui è universalmente conosciuto è dotted quad

L’indirizzo IPv4 è costituito da 32 bit (4 byte) suddiviso in 4 gruppi da 8 bit (1 byte), separati ciascuno da un punto (notazione dotted) (es. 11001001.00100100.10101111.00001111). Ciascuno di questi 4 byte è poi convertito in formato decimale di più facile identificazione (quindi ogni numero varia tra 0 e 255 essendo 28=256). Un esempio di indirizzo IPv4 è 172.16.254.1.

Le classi degli indirizzi IP

Le classi degli indirizzi IP sono 5 ma le piu’ comuni sono 3 e sono determinale dai primi due bit dell’ottetto piu’ a sinistra.

Classe A
Il primo byte rappresenta la rete; gli altri tre gli host per ogni rete.
In notazione decimale gli IP variano nel modo seguente: 0-127.H.H.H;
La maschera di rete è 255.0.0.0 (o anche detta /8 in quanto i bit di rete sono 8);
Questi indirizzi in binario iniziano con il bit 0.
Classe B
I primi due byte rappresentano la rete; gli altri due gli host per ogni rete.
In notazione decimale gli IP variano nel modo seguente: 128-191.N.H.H;
N varia da 0 a 255.
La maschera di rete è 255.255.0.0 (o anche detta /16 in quanto i bit di rete sono 16);
Questi indirizzi in binario iniziano con i bit 10.
Classe C
I primi tre byte rappresentano la rete; l’ultimo gli host per ogni rete.
In notazione decimale gli IP variano nel modo seguente: 192-223.N.N.H;
La maschera di rete è 255.255.255.0 (o anche detta /24 in quanto i bit di rete sono 24);
Questi indirizzi in binario iniziano con i bit 110.

Servizi di rete

DHCP

Questo servizio ha lo scopo di assegnare un indirizzo IP ad un host che ha il NIC impostato per avere indirizzo IP dinamico. Oltre a questo fornisce il default gateway e il servizio di risoluzione dei nomi (DNS). Questo servizio è il piu’ importante in una rete di dispositivi configurati con ip dinamico: un problema su questo servizio e nessun computer potra’ comunicare con gli altri dispositivi. Approfondimento: https://it.wikipedia.org/wiki/Dynamic_Host_Configuration_Protocol

DNS

E’ il servizio che risolve un nome di un host con un indirizzo ip. Per esempio www.tech2.it deve prima essere risolto in un ip per riuscire ad avere la web page sul nostr browser: questo servizio effettua questa conversione. Approfondimento: https://it.wikipedia.org/wiki/Domain_Name_System

Default gateway

E’ l’indirizzo ip del dispositivo che ci permette di ‘uscire’ dalla nostra rete locale, solitamente è l’ip corrispondente ad un router o ad un firewall. Senza questo dispositivo non possiamo navigare in Internet e siamo costretti a comunicare solo nella rete locale. Approfondimenti:https://it.wikipedia.org/wiki/Gateway_predefinito

Wazuh Active Response

Purtroppo ‘di serie’ non esiste un decoder per il log di HAProxy, quindi, a parte fare in modo che HAProxy scriva un log via rsyslog e puntarlo con il file di configurazione ossec.conf bisogna scrivere un decoder, cosa molto facile dopo averlo scritto:

Decoder

<decoder name=”haproxy”>
<program_name>^haproxy</program_name>
</decoder>

<decoder name=”haproxy”>
<parent>haproxy</parent>
<regex>(\d+.\d+.\d+.\d+)</regex>
<order>srcip</order>
</decoder>

Rule

<rule id=”100011″ level=”3″>
   <program_name>haproxy</program_name>
   <match>wp-login</match>
   <description>srcip</description>
</rule>

<rule id=”100012″ level=”8″ frequency=”4″ timeframe=”30″>
   <if_matched_sid>100011</if_matched_sid>
   <same_source_ip />
   <description>CMS (WordPress or Joomla) brute force attempt.</description>
  <group>pci_dss_6.5,pci_dss_11.4,pci_dss_6.5.10,pci_dss_10.2.4,pci_dss_10.2.5,gdpr_IV_35.7.d,gdpr_IV_32.2,hipaa_164.312.b,nist_800_53_SA.11,nist_800_53_SI.4,nist_800_53_AU.14,nist_800_53_AC.7,</group>
</rule>

Questo decoder e regola fa si che se in 30 secondi rileva piu’ di 4 ‘wp-login’ banna l’ip semplicemente triggerando una regola di livello 8: nel mio sistema una regola triggera un “Active Response” se il livello è uguale o maggiore di 6.

Zabbix Agent con PSK Howto

Prima o poi ci si scontra con qualcuno che vuole che la comunicazione tra un server Zabbix e un agent Zabbix avvenga in modalita’ sicura. Ho fatto questo howto principalmente per me, che ho la memoria corta, come si suol dire. In effetti non ci vuole molto, basta semplicemente preparare un file con dentro una “pre-shared key” generata con:

openssl rand -hex 32
  af8ced32dfe8714e548694e2d29e1a14ba6fa13f216cb35c19d0feb1084b0429

e inserire il file in /etc/zabbix/zabbix.psk o dove vuoi tu.. basta che poi lo dichiari in c:\etc\zabbix\zabbix_agent.conf inserendo anche in fondo al file le seguenti righe:

TLSConnect=psk
TLSAccept=psk
TLSPSKIdentity=PSK 001
TLSPSKFile=/etc/zabbix/zabbix.psk

Poi fai partire l’agent e controlli il file /var/log/zabbix/zabbix_proxy.log che non ci siano errori: attento che è sempre meglio che il l’hostname che hai definito nel server sia uguale all’hostname che trovi ‘remmato’ dentro alla configurazione dell’agent. Di seguito vedi come si configura sul server un host da controllare con connessione psk:

Maggiori info sulla configurazione di un agent con connessione psk lo puoi trovare sulla documentazione ufficiale qui di seguito: https://www.zabbix.com/documentation/current/manual/encryption/using_pre_shared_keys

Ossec

Ossec è un software HIDS freeware che ci permette di proteggere i nostri server dagli attacchi. Personalmente lo uso da molto tempo. Ho sostituito fail-to-ban con ossec, perchè mi pare che funzioni meglio. Inoltre ha una funzione server, che viene bene in situazioni particolari come… la nostra.

Ossec si può installare in diverse modalità: stand alone, server oppure agent. Il server raccoglie tutti i log degli agent e comanda agli agent cosa fare in caso di attacco. In parole povere, a me serviva che, se un agent rileva un attacco, il server invia a tutti gli agent di bloccare quel determinato IP in modo da mitigare l’attacco. Nel nostro caso vista la complessità della rete, i nostri web server sono colpiti da reverse proxy basati si HAProxy e non hanno la possibilità di divendersi in quanto il proxy rigenera la sorgente quindi il server web ‘vede’ come sorgente l’ip di HAProxy. Da qui l’idea di installare un agent su HAProxy e sui web server in modo che, nel momento che un agent su un web server rileva un attacco venga informato il server che inoltra il comando di chiusura a tutti gli agent e quindi anche all’agent di HAProxy, di fatto chiudendo la comunicazione con l’IP attaccante. Tutto questo è semplicemente eseguito da una regola sul server dentro al blocco active-response:

<location>all</location>

Con questa istruzione ossec server invia a tutti gli agent il comando di blocco.

La GUI

Ho trovato un documento che descrive come installare Splunk con una applicazione ossec in modo da avere una gui degna di questo nome: la gui di ossec server non ha molta utilità a parer mio. Inoltre si può utilizzare Splunk in quanto (almeno nel mio caso) i log sono sotto alla soglia oltre la quale occorre acquistare una licenza per Splunk. Il documento che spiega molto bene un’installazione ossec ‘quick and dirty’ lo trovate a questo indirizzo: (Grazie a Nicolas Zin)

https://blog.savoirfairelinux.com/wp-content/uploads/2014/03/SFL-ED01-OSSec-the-quick-and-dirty-way-140326-01.pdf

Vi allego qualche screenshot:

TP-Link Wireless low costs

Abbiamo deciso di provare una soluzione a basso costo che possa soddisfare i clienti che non hanno grosse pretese. Normalmente lavoravamo con Sonicwall, ma per due ragioni non riusciamo più a proporli ai nostri clienti. I motivi essenzialmente sono due: esiste una notevole mole di clienti che hanno la serie vecchia dei firewall tipo NSA3500 o NSA2400, questi firewall non sono compatibili con il nuovo sistema operativo V6.X e di conseguenza non sono compatibili con i nuovi access point Sonicwall Wave2 che sembrano essere veramente notevoli. Oltre a ciò oltre che avere prestazioni notevoli questi access point hanno anche il costo veramente notevole, che scoraggia chiunque. Quindi abbiamo pensato che trovare un’alternativa low-costs poteva essere fruibile.

TP-Link AC500

Abbiamo notato che TP-Link ha alcune soluzioni interessanti a basso costo. Siamo rimasti sorpresi quando abbiamo notato i prezzi dei controller della linea AURANET che con meno di 60 euro ci si porta a casa un controller che può gestire sino a 50 access point e con meno di 200 euro si acquista AC500 che di access point ne gestisce 500. Abbiamo optato per il modello superiore in quanto ha le interfaccie a gigabit.

Per quanto riguarda gli access point abbiamo tre possibili modelli compatibili con questi controller: CAP300, CAP1200, CAP1750 

Noi abbiamo scelto il modello medio in quanto ha due radio e non ha un costo eccessivo, si dovrebbe trovare a meno di 150 euro.

Il Test

Per ora abbiamo effettuato un solo test in lab, dopo qualche minuto di configurazione veramente banale si possono vedere tutti gli access point rilevati dall’interfaccia web del controller. La nostra rete di test prevedeva un rete untagged per l’indirizzamento degli AP e due reti tagged per due SSID. Molto banale e normale: praticamente tutti i clienti vogliono almeno 2 SSID: un guest e un corporate. Per questo specifico caso, le richieste erano che la rete corporate sia autenticata a livello mac address dei client, mentre la guest fosse autenticata con un captive portal e utenti direttamente impostati sul controller con scadenza in 10 ore.

Risultato

l’SSID della rete corporate, quello autenticato con mac address ha funzionato immediatamente, mentre per la rete guest, ho dovuto aprire un ticket con TP-Link. Sottolineo che il supporto è in italiano e che il personale è gentile e preparato. Purtroppo non sono riusciti a risolvere il problema del captive portal. Nel momento che il client riceve l’url di reindrizzamento al captive portal questo punta l’indirizzo IP del controller sulla network di base, ovvero quella untagged e pare proprio che il server web (nginx) non ‘voglia’ rispondere ad una richiesta in una rete diversa da quella ‘untagged’ (il client è su una rete tagged ovviamente). Il problema si può risolvere velocemente impostando che l’SSID guest sia sulla rete untagged. Purtroppo, secondo me, non è corretto avere gli access point e i client direttamente sulla stessa rete IP. Questo problema il supporto non è riuscito a risolverlo e dunque ho dovuto effettuare una NAT sul defaut gateway in modo da far pervenire la richiesta come se fosse originata dal default gateway. In questo modo funziona perfettamente. Direi che la soluzione comunque è da considerare validissima, anche in relazione del suo basso costo. 

Amplificatore valvolare SE

Leggendo varie discussioni sul suono degli amplificatori valvolari, dove si decantano i suoni prodotti dai tubi, mi sono deciso ad acquistarne uno. La scelta inizialmente era caduta su un Yaquin 100 (se non ricordo male il modello) versione verde e oro, colori che nonostante tutte mi sembrano i più appropriati per un ampli vintage. Dopo aver notato che il prezzo non era affatto basso, nonostante ci si possa rivolgere direttamente in Cina, ho deviato su un’altra strada: l’autocostruzione. Dunque dovevo approntare un ‘posticino tranquillo’ dove iniziare a lavoricchiare al mio progetto. Decisi che, il garage dove tengo la mia macchinino nelle fredde notti invernali, fosse il posto più corretto. Quindi il weekend successivo, iniziai a saggiare il posto, che nulla aveva di un laboratorio pseudo-elettronico. Ragni e altre bestioline avevano fatto del mio garage la loro casetta. Iniziai quindi a pulire, presto mi resi conto che una mano di bianco alle pareti, non sarebbe stata una cattiva idea.. quindi dopo aver pulito, tinteggiai i muri. Il weekend successivo, notai che non avevo ne strumenti, ne, molto più grave, un tabulo sul quale lavorare. Ho relativamente vicino a casa la Leroy Marlin, quindi, iniziai a spendere qualche quattrino per acquistare materiale per costruirmi il mio primo tavolo da lavoro. Purtroppo il garage ha un pavimento non perfettamente a piombo, quindi optai per installare delle robuste travi di legno che da terra arrivassero sino quasi al soffitto in modo che, dopo averle fissate al muro con dei fisher, avrebbero sopportato il peso del tavolo, che avrei fissato con delle squadrette ai montanti, senza colassare sotto il peso da sopportare.. inoltre con questa struttura, avrei avuto i montanti per installare delle comode mensole, per appoggiare i vari ammennicoli che mi sarebbero serviti in futuro. Così ho fatto, e dopo aver acquistato un bel po’ di attrezzi vari ho iniziato la ricorda dello schema. Intanto sapevo che qualsiasi scelta avessi fatto, sicuramente mi serviva un rettangolo di un materiale per fissare i componenti dell’amplificatore. Un mio conoscente, dopo aver spiegato cosa avevo in testa, mi ha regalato una piastra di alluminio 340 x 400 x 10 (già’ dieci millimetri di spessore).. a caval donato.. Intanto cercavo lo schema del mio ampli.. che doveva essere un single ended.. avevo letto che, malgrado la potenza ridicola, sono gli ampli che regalano maggiori emozioni all’ascolto. La scelta cadrà da li a poco, sullo schema di Mikael Abdallah, vuoi per la semplicità, vuoi per il fatto che si può fare tube-rolling di almeno 3 tipi di valvole senza modificare lo schema.. che vedete qui sotto:

Inoltre guardando meglio trovo che il trasformatore è facilmente reperibile da un famoso venditore (di cui si parla bene e male contemporaneamente in tutti i forum di autocostruzione). Bene..allora si inizia. Visto che il top (di alluminio) oramai è in mio possesso, la prima cosa da fare è pulirlo da tutta la sporcizia accumulata negli anni. Quindi lo pulisco con della carta a vetro nr.800 e successivamente cerco di lustrarlo con della lana di acciaio per mobilieri ‘0000’.. diciamo che, pur non essendo soddisfatto me lo faccio andar bene. L’alimentatore mostra un’induttanza di filtro della Hammond.. dato il notevole costo di questo componente, ho preferito sostituirlo con un componente molto più economico, d’altra parte la mia realizzazione deve regalarmi qualche ora di divertimento, senza alleggerirmi tropo il portafoglio. Comunque questa non è la sola modifica che ho apportato a questo schema, che vedremo in seguito, sottolineo che questo ampli deve essere Hi-Fun e non HiFi.. poi se suona anche bene, sarà gradito, però non voglio deviare da questa direttiva. E poi, tutti dicono che un Single Ended è quasi impossibile farlo suonare male.. vedremo.  Allego lo schema minimamente modificato per venire incontro alle mie ‘mattane’.. volevo avere la possibilità di modificare la corrente di riposo nel caso in cui avessi avuto i soldi per acquistare una coppia di KT88.. inoltre volevo provare sia il pseudo-triodo mode, l’ultralineare e il pentodo.. visto che li switch CK a 3 posizioni costano una fortuna.. ho complicato un pò il cablaggio. Ho modificato la posizione dello switch di stand-by.. consigliato da un veterano di autocostruzione. Nell’alimentatore ho preferito avere due condensatori da 350V l’uno che uno da 500V.. barattare la capacità con la tensione di lavoro se quest’ultima è alta, puo’ essere economicamente vantaggioso.

Qui sotto si nota il top, con le mascherine che simulano l’ingombro delle valvole e dei “ferri”. Ovviamente, dopo aver simulato gli ingombri ho fatto tutto il contrario. La lucidatura dell’alluminio, non è perfetta, ma non ho più voglia di lucidare con la carta abrasiva con acqua e sapone e paglietta da mobiliere ‘0000’

Dunque ora resta solo da acquistare le frese per forare il ‘top’ e installare gli zoccoli.. già’ bisogna prima acquistare gli zoccoli, e poi occorre avere bene chiaro che diametro occorre per la valvola con zoccolo nova e il diametro per le finali a zoccolo octal.. come avete capito, non mi sono mai cimentato nell’autocostruzione.. me che meno di un valvolare.. Cerco in rete e trovo che ci vogliono due frese rispettivamente da 22mm per la nova e un 26,5mm per le octal. Bene, vado sulla baia per acquistarle ma, con orrore scopro che per una fresa che mi copra entrambi i diametri occorrono circa 30 euro.. non si può e non si deve buttare così’ i soldi.. tra l’altro mi serviranno solo per 4 fori in tutto.. ma che.. scherziamo??? Allora cerco tra le mie conoscenze e trovo che ho un amico che può farmi avere un paio di punte di quel diametro.. però a questo punto occorre trovare un trapano a colonna.. io non ce l’ho di sicuro.. ne tanto meno mi viene la voglia di guardare quanto costa.. altr conoscenza.. ha un’officina con tutto il necessario.. quindi un sabato mattina si traccia e si fora..

Ora occorre iniziare la parte in legno.. anche qui, mai fatto nulla.. cerco in rete come pitturare il legno con la ceralacca oppure con l’impregnante color noce.. mi ingegno e faccio un telaio veramente bruttino, ma l’ho fatto io, quindi, nuovamente me lo faccio andare bene.

Ho tentato di colorarla con della ceralacca, trovata da un grosso vendor dei DIY, ma non veniva come avrei voluto, allora ho trovato la ceralacca in scaglie, ma non mi è piaciuta la resa, allora ho riprovato con l’impregnante color noce.. ora mi piace.. “ogni scarraffone e’ bello a mamma sua” e dopo 5 mani di ceralacca e 4 di impregnante viene fuori una cosa che non stai proprio male se la guardi. Qui c’e’ gia’ montato il pannello posteriore. Per forare il legno ed montare la piastra di alluminio da 2mm, ho lavorato con il trapano, lama da seghetto e cutter.. fortunatamente il legno usato è morbidissimo. Ovviamente non avevo nessuna fresa per effettuare a macchina l’incavo.. è stato un bel lavorone.. ma tanto è un hobby, no?

Dunque ora resta solo da acquistare le frese per forare il ‘top’ e installare gli zoccoli.. già’ bisogna prima acquistare gli zoccoli, e poi occorre avere bene chiaro che diametro occorre per la valvola con zoccolo nova e il diametro per le finali a zoccolo octal.. come avete capito, non mi sono mai cimentato nell’autocostruzione.. me che meno di un valvolare.. Cerco in rete e trovo che ci vogliono due frese rispettivamente da 22mm per la nova e un 26,5mm per le octal. Bene, vado sulla baia per acquistarle ma, con orrore scopro che per una fresa che mi copra entrambi i diametri occorrono circa 30 euro.. non si può e non si deve buttare così’ i soldi.. tra l’altro mi serviranno solo per 4 fori in tutto.. ma che.. scherziamo??? Allora cerco tra le mie conoscenze e trovo che ho un amico che può farmi avere un paio di punte di quel diametro.. però a questo punto occorre trovare un trapano a colonna.. io non ce l’ho di sicuro.. ne tanto meno mi viene la voglia di guardare quanto costa.. altr conoscenza.. ha un’officina con tutto il necessario.. quindi un sabato mattina si traccia e si fora..
Ora occorre iniziare la parte in legno.. anche qui, mai fatto nulla.. cerco in rete come pitturare il legno con la ceralacca oppure con l’impregnante color noce.. mi ingegno e faccio un telaio veramente bruttino, ma l’ho fatto io, quindi, nuovamente me lo faccio andare bene. dopo 5 mani di ceralacca e 4 di impregnante viene fuori una cosa che non stai proprio male se la guardi.

Ora possiamo iniziare il cablaggio dei componenti.. ho letto che i trasformatori è meglio metterli per ultimi visto il peso.. e così’ faccio.. inizio a pensare come fare, iniziano i dubbi e le incertezze.. ma dove monto le resistenze e i condensatori? Non ho le basette di bachelite.. certo che si possono comprare pero’.. meglio stare al risparmio.. così’ decido che dei morsetti mammut incollati su dei pezzi di legno a loro volta incollati sul top di alluminio potrebbero fare al mio caso.. inoltre si può fare in modo di far ‘girare’ un solid-core di rame spesso 2mm per avere un solido sostegno per un sacco di componenti.. così’ faccio questo ‘festone’ di rame..

Per il frontale ho pensato che dovrebbe essere più bello possibile, così mi guardo un bel po’ di fotografie su internet, per copiare di sana pianta un progetto che mi ispira.. vedo  che con pochi euro dalla Cina si possono acquistare degli strumentini che non sembrai tanto brutti e poi, dalla Cina??  A spedizione gratuita? Ma cerrrrto.. proviamo.. dopo 20 giorni circa arrivano tutti e tre.. eh già’ 2 milliamperometri e un voltmetro da 1000 volt di fondo scala.. ma voglio montarli che si veda solo la mezzaluna dove c’e’ la scala dello strumentino.. così’ penso e ripenso, ma non c’e’ una vera soluzione… poi, parlando con un mio conoscente, si offre per farmi fresare da una piastra da 10mm di spessore un foro non passare da 7mm grande come l’esterno dello strumentino e fresare la mezzaluna… ecco il frontalino appena arrivato dall’azienda che mi ha pantografato le scritte..

Ora viene il momento di provare la prima accensione.. è il 19 di ottobre.. sono passati 4 mesi da quando iniziai il progetto. Monto le valvole, e provo i filamenti senza dare alimentazione anodica.. prima provo ad alimentare a 125 volt.. non succede nulla di strano (ho trovato un trasformatore ‘di isolamento’ da 2KW con varie tensioni da entrambi i lati) provo a 160V.. tutto ok.. provo a tensione nominale.. stavolta i tubi prendono vita, e si accendono regolarmente..lascio acceso 30 secondi, poi spengo.. PS: Non sono matto.. i trasformatori sono ‘mummificati’ per non rigare le calotte quando lo capovolgo.

Ora la volta dell’anodica.. collego un paggio di diffusori Grundig.. sono 4 ohm, e io ho montato i morsetti solo sui fili dei trasformatore di uscita da 8 ohm.. tanto per sentire il motor-boating va bene.. sicuro un po’ di rumore lo fa lo stesso sia a 4 che a 8 ohm.. Prendo gli ingressi e li metto a massa con una resistenza da 220 ohm trovata sul banco.. metto in serie 3 resistenze da 220k in parallelo al primo condensatore di filtro.. così’ si scarica quando tolgo alimentazione.. Metto anche un voltmetro sull’anodica.. così’ vedo se qualcosa non va.. purtroppo ho solo un ICE Microtest 80.. ho il fondo scala della continua a 200V, pochi.. non fa nulla, in alternata arriva a 1000V certo che non sarà’ precisa, ma almeno vedo qualcosa che si muove.. Accendo.. vedo i tubi che si illuminano.. ma non sento nulla dai diffusori.. strano.. così’ poco rumore? I diffusori sono fasciati con della pellicola domopak.. in garage c’e’ umido.. boh.. tolgo la pellicola.. si sente appena appena un fruscio.. niente motorboating.. bene.. modifico una vecchia radiolina a pile, per farmi da iniettore di segnale.. collego e iniziano a parlare nei diffusori.. azz funziona.. quasi sono scontento.. funziona alla prima.. ma com’e’ sta cosa? Sto forse diventando vecchio?

E’ il 24 novembre del 2013, il mio amplificatore ha iniziato a funzionare. A parte qualche problema di connessioni massa-terra direi che non ho avuto nessun problema. Direi che sostanzialmente in assenza di segnale è abbastanza silenzioso, cosa che mi preoccupava abbastanza. Connesso alle mie JBL 4412 con efficienza di 90db suona abbastanza forte, ma la cosa carina è che quando si avvicina alla fine della potenza disponibile, non gracchia come i finali a transistor, ma senti dolcemente che non puoi tirare oltre. Il trasformatore di alimentazione non scalda, segno che non lo sto tirando “per il collo”. Ora occorrono un centinaio di ore di rodaggio per le valvole 6L6 per ottenere il massimo.. Allego una foto dell’apparato all’opera..

Ora siamo al 25 novembre 2013, la catena di amplificazione è stata modificata, ora è composta da un lettore cd da battaglia, un amplificatore NAD 3020 del quale uso solo la parte preamplificatrice, e tramite i connettori PRE-OUT ho connesso l’ampli valvolare. Stavolta il risultato si sente sul serio, non ho mai avuto questa percezione.. ascoltando vecchi cd dei quali conosco a memoria le tracce, vengono riprodotti con una chiarezza che non avevo mai ascoltato.. credo che si possa parlare di dettagli sonori che prima non erano ascoltabili. Nel cd Desire di Bob Dylan in Isis che si fa largo uso taburelli e un violino, c’e’ una resa che non saprei descrivere meglio che con la parola “microdettaglio”.. Questo ampli estrae dei suoni che, sebbene anche prima fossero presenti, non erano così reali.. per ora ho ascoltato solo un paio di orette, ma garantisco che, confrontato con il mio vecchio Denon, che mi sembrava che suonasse bene, sia proprio un’altra cosa.

Qui trovate un video dell’ampli: 
https://youtu.be/0pXAy02yq2Y

Squid Proxy HA+LB

Qualche tempo fa, mi è stato chiesto di implementare un sistema proxy in alta affidabilità da un mio cliente. Ho notato che in rete non c’e’ un howto per costruire un sistema del genere, allora ho pensato di scrivere qualche nota.

Elenco dei requisiti:

  1. Il sistema proxy non deve avere delle licenze da pagare ne one-shot ne annualmente; insomma, deve essere gratis.
  2. Deve servire circa 150 utenti possibilmente senza rallentamenti anche in caso di failover del primo nodo.
  3. Non deve essere soggetto a sospensione del servizio dovuti a manutenzione (pianificati) o guasti (non pianificati).
  4. Il sistema proxera’ le richieste solo se aderenti ai dati presenti su tre white-list a cura dal personale IT contenenti indirizzi IP, URL e domini.
  5. Deve essere emessa una notifica in caso di down del nodo primario in modo che il personale IT sia a conoscenza che il sistema proxy sta funzionando in maniera degradata.
  6. Il sistema si deve automaticamente ritornare sul nodo MASTER quando il problema su di esse è cessato.
  7. In modalita’ normale sarebbe preferibile che il sistema processi le richieste in parallelo, bilanciando il carico tra le due macchine (active-active e non active-passive)

Briefing

Dunque, la prima cosa da decidere,  il sistema operativo, gratis significa Linux o BSD.. io lavoro da circa vent’anni con Redhat (ora a pagamento) e quindi oggi lavoro con CentOS il quale è basato sugli stessi sorgenti. Non ho trovato in rete un vero HOW-TO sul come fare questo progetto, quindi ho deciso di scriverne uno, in italiano. Per il sistema proxy, non c’e’ tanto da pensare, il cliente ha gia’ le liste in formato testo adatte a squid, qundi direi che il sistema proxy è squid. Inoltre è un software che c’e’ da sempre (non so se sia nato prima Linux o prima squid) quindi è affidabile e soprattutto open-source. Per quanto riguarda le White-list basta montarle su una share di un file server per avere tre liste sempre aggiornate su entrambi i proxy. Poi mi sono pensato un trucchetto in caso il file server contenente le White-list non fosse disponibile in modo che gli squid continuino a funzionare, su White-list non aggiornate ma continuino ad andare (e si potrebbero anche aggiornare ogni tanto via script). Ora manca un modulo che mi permetta di avere una sorta di alta affidabilità: un modulo che in caso rilevi un problema possa migrare un indirizzo IP sulla macchina secondaria. Keepalived è la mia scelta. Il motivo è che ci ho gia’ lavorato e che mi piace per la sua semplicità. I nodi comunicano tra loro in Multicast e sembra che questo demone sia molto leggero per il sistema. Per fornire il servizio dei proxy active-active ho pensato che HAPROXY potrebbe fornirmi il necessario. L’idea è stata di mettere in ascolto HAPROXY su qualsiasi IP della macchina linux su porta 3128 porta classica di Squid, e inoltrare in modalità tcp le richieste ai due Squid presenti sulle due macchine, controllando che siano attivi via istruzione check effettuato da HAPROXY. Ovviamente ho dovuto modificare la porta di ascolto degli Squid. Quindi in modalità normale, ovvero quando tutto è correttamente funzionante, la macchina MASTER invia tramite HAPROXY le richieste dei client ad entrambi gli Squid in modaità round-robin che per le sessioni http sembra sia la migliore strategia.

Il sistema operativo

Lavoro da un mare di tempo con CentOS e non mi viene proprio voglia di cambiare, quindi i due nodi saranno due linux box con CentOS V7.5. Finita l’installazione io ho effettuato le seguenti personalizzazioni:

  1. Disabilitato Selinux
  2. Installato net-tools – Per avere ifconfig
  3. Installato procps – Per avere killall che serve a keepalive
  4. Disabilitato e rimosso dall’autostart Firewalld
  5. Impostato in /etc/sysctl.conf la linea “net.ipv4.ip_nonlocal_bind = 1” che serve per ascoltare anche su ip che non esistono sulla macchina.

Keepalived

Ci sono diversi sistemi per avere una coppia di Linux box ad alta affidabilita’, ma io sono di quelli che “cavallo che vince non si cambia”: ho gia’ lavorato con keepalived e quindi implemento cio’ che conosco. Secondo me semplice come configurazione e si installa facilmente perché è di ‘serie’ su CentOS, ti basta fare:

[root@nodo1 ~]# yum install keepalived

# cat /etc/keepalived/keepalived.conf
global_defs {
  enable_script_security
  script_user root
  notification_email {
gbiondi@tech2.it
  }
  notification_email_from node1@tech2.it
  smtp_server localhost
  smtp_connect_timeout 30
}

vrrp_script chk_squid {
   script “/usr/bin/killall -0 squid”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_script chk_haproxy {
   script “/usr/bin/killall -0 haproxy”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_instance VI_1 {
   interface eth0                # interface to monitor
   state MASTER
   virtual_router_id 54          # Assign one ID for this route
   priority 101                  # 101 on master, 100 on backup
   advert_int 1
   smtp_alert
   virtual_ipaddress {
        10.12.14.140              # the virtual IP
   }
   track_script {
       chk_squid
       chk_haproxy
   }
}

In sostanza si vedono bene i due ‘vrrp_script’ che controllano che i due processi siano UP e il ‘vrrp_instance’ che è il cuore di keepalived. Questo è lo script del MASTER, quindi quando si sveglia si mette come MASTER e si autoassegna un priorita’. Si assegna un ‘router_id’ che serve al demone per comunicare con l’altro nodo via unicast. Inoltre quando deve operare perché qualcosa è andato storto (non vede l’altro nodo) ci avvisa via smtp. Il resto non credo che ci sia bisogno di spiegazioni. Allego anche lo script del secondo nodo per completezza:

global_defs {
  enable_script_security
  script_user root
  notification_email {
gbiondi@tech2.it
  }
  notification_email_from node2@tech2.it
  smtp_server localhost
  smtp_connect_timeout 30
}

vrrp_script chk_squid {
   script “/usr/bin/killall -0 squid”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_script chk_haproxy {
   script “/usr/bin/killall -0 haproxy”      # verify the pid existance
   interval 2                     # check every 2 seconds
   weight 2                       # add 2 points of prio if OK
}

vrrp_instance VI_1 {
   interface  eth0               # interface to monitor
   state BACKUP
   virtual_router_id 54          # Assign one ID for this route
   priority 100                  # 101 on master, 100 on backup
   advert_int 1
   smtp_alert
   virtual_ipaddress {
       10.12.14.140               # the virtual IP
   }
   track_script {
       chk_squid
       chk_haproxy
   }
}

HAProxy

Il demone HAProxy è il responsabile per il bilanciamento di carico dei proxy Squid. Esso riceve le richieste dei client su porta 3128 (ho scelto questa porta in quanto tutti sono abituati al fatto che se c’e’ un proxy Squid questo ascolta su questa porta) e inoltra le sessioni sui proxy Squid attivi in quel momento. Il demone conosce il proxy attivo il quanto effettua un check su entrambi i proxy Squid in modo da esere a conoscenza su quale Squid inoltrare le richieste. Il demone HAProxy è in grado di inoltrare migliaia di sessioni senza avere problemi di performance, leggete la documentazione e i test che sono stati effettuati su questo software se siete curiosi. Allego i file di configurazione dei due HAProxy montati sulle due macchine linux: i due file sono uguale su entrambe le macchine linux. Precisiamo che in questo particolare caso ci limitamo ad avere ‘solo’ due proxy Squid, ma si potrebbe aggiungere altre macchine linux, queste con i solo demone Squid configurato, per avere un cluster con un parallelismo maggiore di due. Si potrebbe avere altre due macchine linux con Squid montato e utilizzare quattro Squid per servire i nostri utenti.

global
daemon
maxconn 256
defaults
mode tcp
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms

frontend squid_frontend
bind *:3128

default_backend squid_backend
backend squid_backend
server node1 10.12.14.141:8001 check
server node2 10.12.14.142:8001 check
# Add more IPs here as required
balance roundrobin

listen stats # Define a listen section called “stats”
bind :9000 # Listen on localhost:9000
mode http
stats enable # Enable stats page
stats hide-version # Hide HAProxy version
stats realm Haproxy\ Statistics # Title text for popup window
stats uri /haproxy_stats # Stats URI
stats auth amin:paperina # Authentication credentials

Squid

Proxy Squid. Squid è un proxy che conosciamo tutti: chi ha messo in pista una macchina proxy con linux lo ha fatto con Squid. E’ robusto, e’ mantenuto aggiornato, e’ gratis e funziona, non c’e’ bisogno di provare qualcosa d’altro. Nel nostro sistema proxy, viene usato molto semplicemente con delle white-list, c’e’ un minimo di configurazione da fare ma la cosa piu’ importate è il cambio di porta di ascolto, nel nostro caso da 3128 viene modificata in 8001. Poi c’e’ il discorso delle white-list ma non mi pare che sia un argomento da trattare.. non ci interessa l’autenticazione, ma anche qui si trova tutto in rete. Invece voglio dirvi come ho fatto a fare in modo che, se per caso la share che condivide le white-list non fosse disponibile ,il sistema comunque continui a funzionare. Ho semplicemente copiate le white-list interessate nella directory /mnt/wl – certo che nel momento del problema non saranno aggiornate, ma sempre meglio che rimanere senza che su un sistema che lavora in white list significa non navigare piu’ da nessuna parte… e poi si potrebbe fare in modo via script che ogni giorno venga smontata la share, copiate le whitelist e rimontata la share..

Conclusioni

Il sistema sta funzionando correttamente, per ora non sono stati riscontrati disservizi, purtroppo non è sottoposto ad un carico pesantissimo, i due nodi sfiorano carico ‘1’ negli ultimi 5 minuti solo all’inizio delle ore mattutine e pomeridiane