Archivio per il 'ICT'Categoria

ssh: denyhosts

Novembre 22, 2009

Configuare OpenSSH a prova di bomba

Siamo talmente paranoici che abbiamo fatto, quasi, tutto quanto consigliato qua per rendere il nostro server con OpenSSH a prova di bomba. Per un uso casalingo io non ho impostato però nessun firewall (mi fido delle impostazioni che ho messo sul mio router netgear dg834g) cioè nessuna regola di iptables sul sistema dove è veramente installato OpenSSH server.

Fregare gli attacchi brute-force

L’unica cosa che mi scoccia sono questi essere infimi, e poco pericolosi, chiamati script-kiddies che tentano degli attacchi brute-force sulla porta 22. Non che sia una gran scocciatura ma i file di log, più precisamente i /var/log/auth.log, tendono a riempirsi paurosamente. Ho trovato una soluzione KISS usando un programma, scritto in Python, chiamato denyhosts. Il concetto è semplice: si guarda i file di log e se un determinato IP fallisce la connessione ssh lo blocca ficcandolo in /etc/hosts.deny.

Una precisazione su come funzionano /etc/hosts.allow e /etc/hosts.deny. Questi sono dei file che configurano il TCP Wrapper: una spiegazione esaustiva si trova negli Appunti di Informatica Libera di Daniele Giacomini. Riassumendo: se un IP è regolamentato da una regola in /etc/hosts.allow tutto fila liscio, se invece questo IP non è previsto in /etc/hosts.allow il sistema guarda /etc/hosts.deny. Quindi in /etc/hosts.allow, se vogliamo fare in modo che gli IP della nostra sottorete non vengano bloccati, mettiamo questa riga:

sshd: 192.168.0.0/255.255.255.248

Ovviamente questo è solo un esempio preso dalla mia configurazione. Se non sapete niente di reti e sottoreti non capirete una tega, forse potrebbe venirvi in aiuto il programma ipcalc:

Esempio ipcalc

ma anche Wikipedia…se non basta fatevi un corso universitario di Reti di Calcolatori o leggetevi un libro a riguardo o rompete i coglioni a un SysAdmin (non io: non lo sono!).
In /etc/hosts.deny non mettiamo nulla: se ne occuperà automaticamente denyhosts. Per esempio una riga che aggiunge denyhosts è la seguente (ovviamente l’IP bloccato è di fantasia):

# DenyHosts: Sat Nov 21 13:05:13 2009 | ALL: 123.123.123.123
ALL: 123.123.123.123

Figo no? Ora non ci resta che editare il file di configurazione di denyhosts che si trova, su Arch Linux, in /etc/denyhosts/denyhosts.cfg.

Configurazione di denyhosts.cfg

Prendo paro paro il mio file di configurazione con una spiegazione tutta mia. Le FAQ sul sito e i commenti su denyhosts.cfg sono molto esaustivi ma degli esempi in più non fanno mai male e non vi faranno sicuramente schifo (vero?). Comunque sia sto usando la versione 2.6 di denyhosts.

SECURE_LOG = /var/log/auth.log Ovviamente questo è il file che denyhosts parsa per andare a pescarsi gli IP da bannare.

HOSTS_DENY = /etc/hosts.deny In un sistema Linux è qui che ci sono le regole per il TCP Wrapper degli IP a cui è vietato l’ingresso nel sistema.

PURGE_DENY = 2d Ricordo che stiamo parlando di uso domestico, quindi abbiamo un indirizzo dinamico raggiungibile magari, con l’ausilio di dyndns come ho fatto io, con un URL www. Ma abbiamo sempre un indirizzo dinamico e ad ogni caduta di connessione (grazie Telecom) cambiamo spesso IP. Quindi gli script-kiddies non punteranno sempre a noi pensando che siamo sempre noi cambiando, magari, gli username e password. Insomma non siamo un bersaglio fisso! Quindi è inutile riempire /etc/hosts.deny di IP. Anche perché magari pure gli script-kiddies hanno IP dinamici come tutti i comuni mortali (a parte i compuer zombie ma si spera di no). Quindi è meglio ripulire /etc/hosts.deny abbastanza spesso. 2d infatti sta per 2 day: due giorni.

BLOCK_SERVICE = ALL Ok, abbiamo solo sshd attivo come servizio. Sarebbe più logico mettere BLOCK_SERVICE = sshd. De gustibus. Questo cambia ovviamente le occorrenze di /etc/hosts.deny che dal mio esempio precedente diventerebbero

# DenyHosts: Sat Nov 21 13:05:13 2009 | sshd: 123.123.123.123
sshd: 123.123.123.123

Denyhosts è molto configurabile, può controllare o tutti i servizi o solo quello che vogliamo noi.

DENY_THRESHOLD_INVALID = 2 Ogni due tentativi da parte di un username invalido (che non esiste sul sistema o che non è specificato in AllowUsers o AllowGroups in /etc/ssh/sshd_config) l’IP viene bannato. Metti che uno al posto di scrivere cicciobanza scrive cicciobnza…lo banniamo subito? Diamogli una seconda possibilità.

DENY_THRESHOLD_VALID = 3 Diamo invece tre tentativi a un user valido nel sistema, magari ha la giornata storta e sbaglia la password (che comunque, siamo stati bravi, è un’autenticazione chiave pubblica/privata).

DENY_THRESHOLD_ROOT = 1 Diciamo che se uno tenta subito root lo banniamo immediatamente..vero?

DENY_THRESHOLD_RESTRICTED = 1 Questa è una sboronata. Possiamo specificare degli username (in /var/lib/denyhosts/restricted-usernames) a cui possiamo dare tot tentativi. Io ho messo 1 perché ci metto i classici: mysql, test, user…i soliti username che non andrebbero mai usati…

WORK_DIR = /var/lib/denyhosts Si commenta da sola, io la lascio così di default e consiglio di fare altrettanto!

SUSPICIOUS_LOGIN_REPORT_ALLOWED_HOSTS=YES A dire la verità non ho ben capito. Sembra che denyhosts si faccia dei sospetti di attacco anche sugli hosts della nostra sottorete e ci avverta di questo. Ho lasciato YES ma approfondirò in seguito…

HOSTNAME_LOOKUP=NO A dire la verità non ho capito molto questo. Non ho capito cosa se ne faccia denyhosts del nome host dell’IP associato che blocca. Approfondirò anche questo…

LOCK_FILE = /var/run/denyhosts.pid Si commenta da solo, lasciamolo così com’è.

ADMIN_EMAIL = Lo lascio vuoto, non ho nessun Postfix o simili installato sul sistema che invii mail di avvertimento quindi…

AGE_RESET_VALID=1m Resetta i tentativi, dopo un minuto di inattività, di un utente valido. Del tipo, scannate password, aspettate un minuto: avete ancora 3 tentativi (riguardate DENY_THRESHOLD_VALID).

AGE_RESET_ROOT= Se uno tenta root non gli diamo altre possibilità.

AGE_RESET_RESTRICTED= Se uno tenta mysql non gli diamo altre possibilità.

AGE_RESET_INVALID= Se uno tenta un utente invalido non gli diamo altre possibilità.

DAEMON_LOG = /var/log/denyhosts Si commenta da solo. Comunque è meglio aggiungere /var/log/denyhosts in /etc/logrotate.d/syslog-ng in modo che logrotate faccia la rotazione anche dei log di denyhosts.

DAEMON_SLEEP = 1m Ogni minuto denhyhosts controlla i file di log. Ci saranno comunque dei tentativi, in un minuto, gli script kiddies provano circa 5-10 username al colpo.

DAEMON_PURGE = 1h Il periodo, quando denyhosts è daemonizzato, con il quale controlla le occorrenze di /etc/hosts.deny e le toglie (in base ovviamente a PURGE_DENY)

Queste sono configurazioni base e utili per un sistema casalingo. Più fico sarebbe sincronizzare /etc/hosts.deny anche con IP bannati da altri che usando denyhosts e che condividono le informazioni (tutto sempre configurando denyhosts.cfg) ma è troppo per noi. Io ho provato ma, come ho già detto, non siamo bersagli fissi.

amd vs intel

Novembre 17, 2009

Adesso ho capito, perché in certi casi, il processore AMD X2 4000+ della morosa è più veloce del mio intel dual core E6600.

Tutta questione di pipeline. Riassumendo:

  • amd, pipeline corta: ottimo per operazioni sequenziali randomiche (la pipeline si svuota e si riempe con maggiore velocità se è più corta). Rippare un cd più lento che aprire e navigare con firefox.
  • intel, pipeline lunga: ottimo per operazioni sequenziali similari (la pipeline si svuota e si riempe con minore velocità se è più lunga). Rippare un cd più veloce che aprire e navigare con firefox.

Cito da qui:

Generalmente, una pipeline più lunga consente di scindere in parti più piccole un’istruzione e dunque di occupare meglio le risorse della CPU, oltre che a consentire di raggiungere frequenze di funzionamento più elevate per il processore.

D’altro canto, questa è solo una situazione ideale: in realtà, non tutte le operazioni sono indipendenti le une dalle altre. Può capitare, ad esempio, che un’istruzione necessiti del risultato che viene fornito dall’istruzione precedente per poter essere eseguita, come nel semplice caso:

A = C – 7
B = A + 2

La seconda istruzione, dunque, deve prima attendere che termini la prima istruzione, in quanto prima di poter essere eseguita gli è necessario conoscere il valore della variabile A. (Qualcuno potrebbe obiettare che la situazione si può facilmente risolvere scrivendo B = C – 5 al posto della seconda istruzione: è chiaramente compito di un buon programmatore accorgersi di questi particolari.)
Dunque, è possibile che nonostante tutto la pipeline debba terminare certe istruzioni prima di affrontarne altre da principio, e dunque che alcuni cicli di clock vengano sprecati. Come si può intuire, tanto più è lunga una pipeline, tanto più alta è la percentuale di cicli di clock che vengono sprecati. Trovare un buon bilanciamento tra frequenza del processore e sua efficienza operativa è alla base del progetto di ogni buona CPU.

Al giorni d’oggi, i processori in commercio hanno lunghezze della pipeline anche piuttosto differenti (i processori Intel Pentium 4 core Prescott hanno una pipeline a 31 stadii, gli AMD Athlon 64 a 12, per le istruzioni intere). In base al discorso in precedenza, non ci si stancherà mai di ripetere che la frequenza di un processore non è tutto! Cioè, non può considerarsi un parametro unico delle prestazioni di un processore: può esserlo solo a parità di architettura.

Ora devo solo scoprire dove trovare i valori di pipeline.

PS Forse è meglio se rispolvero il libro di Architettura degli elaboratori!

device usb: che filesystem?

Novembre 15, 2009

Molte volte mi sono chiesto quale filesystem usare per i device usb (intendo le chiavette di memoria o come cavolo si chiamano).

I vari filesystem hanno i loro pro e i loro contro. Proprio in questi giorni phoronix ne ha testato alcuni e i risultati si possono vedere qui.

Quindi mi sono deciso, usando principalmente macchine linux, di prendere la mia kingston da 8GB e metterla in ext4 (ovviamente senza journaling). Mi è stato d’aiuto questo post letto qualche tempo fa.

Prima ho creato la partizione con gparted (accidia portami via) e poi ho tolto il journaling con dumpe2fs. Ovviamente si può anche creare da zero con mkfs e le stesse opzioni per dumpe2fs (ma non ho provato). Infine ho dato un bel

chmod -R 777 /dev/sdc

Per i test finali lascio a voi. Io sono abbastanza soddisfatto.

X-Factor???

Novembre 12, 2009

Da quando in qua la mia mail di google riceve la newsletter di X-Factor? Sopratutto…come cazzo fa la RAI ad avere la mia mail “ufficiale” nome.cognome@gmail.com?

L’unica cosa in cui mi sono registrato sul sito della RAI era il forum di Report…ma usando la mail di ugaciaka!

EDIT: ho ricontrollato e la mail risulta inviata alla mail ugaciaka ma a quale titolo non si sa…

Non capisco gli script-kiddes

Novembre 7, 2009

Non capisco questi bimbominkia. Cazzo stanno tutto il giorno a lanciare lo stesso script (non scritto da loro) per tentare un brute-force per ssh sulla porta 22?

Ma sopratutto: cazzo si tengono pure loro il server ssh accessibile sulla porta 22…con l’utente root abilitato? -_-”

PS rigiragli un brute-force (con uno script scritto dal sottoscritto) non ha prezzo.

Ormai leggo nel pensiero

Novembre 6, 2009

Sì perché ormai li conosco meglio dei miei genitori. Intendo i nostri piccoli omuncoli che si atteggiano a piccola oligarchia che vuole comandare il paese a spot pubblicitari.

Vi ricordare cosa avevo detto di brunetta? Anzi cosa aveva detto lui il meno di un mese fa?

Due mega di banda larga per tutti dal 2010

E cosa è successo ieri? Cosa ha detto Letta?

I soldi per la banda larga li daremo quando usciremo dalla crisi

Ormai si fanno satira da soli.

Linux e il Multimedia

Novembre 1, 2009

Alcuni programmi di uso, quasi, quotidiano:

  • OGMRip: converte un DVD in .avi1 (grazie a ColdFeetBob per la segnalazione)
  • Kdenlive: editor avanzato multimediale con cui si può realizzare, non essendo per nulla esperti, questo
  • K9copy: da un DVD tira fuori un altro DVD con dimensione minore (tradotto: per masterizzare sui DVD da 4,3GB…)
  • avidemux: un semplice taglia-copia-incolla per file .avi
  • Sound Juicer: converte da CD audio a tracce (mp3, flac…)
  • DeVeDe: il contrario di OGMRip. Da un .avi vi fa un DVD.

Per fortuna che su Linux non si trovano i programmi…

1 sì lo so, dire .avi non vuol dire un cazzo se non si specifica la codifica.

Congiunzioni astrali

Ottobre 30, 2009

Oggi arrivo tutto fiero a tirocinio, masterizzo Ubuntu1 9.10 (rigorosamente a 64bit2) sulla mia macchina e patatrac: non finisce l’installazione! Porca puttana, mi dico, ho appena mostrato all’altra tirocinante quanto “fico è linux” e questo brutto deficente mi va a impiantarsi sull’installazione?

Riesco comunque a notare sul pannello di GNOME un punto esclamativo in rosso. Gira e remena trovo quesa cosa qua:

EDAC amd64: WARNING: ECC is NOT currently enabled by the BIOS. Module will NOT be loaded.

Vabbeh non è la fine del mondo, riavviamo, andiamo sul bios attiviamo sto ECC3 e riproviamo l’installazione. Niente da fare perché mi si impiantava alla stessa percentuale di prima. Come cazzo faccio? Sono andato a rompere i coglioni al tutor4 per farmi dare la 9.04 a 32 bit e installo: tutto ok.

Appena arrivato a casa metto il CD della 9.10 a 64bit masterizzata a tirocinio ma prima di fare altre prove…verifichiamo il CD: 1 error found5. Fanculo: è la prima volta che mi capita di masterizzare6 una distro linux alla membro di segugio.

Però sono talmente rompicazzo che lunedì si ricomincia: karmik koala a 64bit con fs ext4 e grub27. E la macchina virtuale sulla quale devo lavorare può tranquillamente aspettare.

1 rigorosamente scaricata a casa sennò gli saturo la banda ah… ma perché Ubuntu? non ho tempo per mettere altro e sicuramente non voglio lavorare su XP Professional

2 io sono fissato con questi 64bit mentre il tutor è restio e installa/usa solo le versioni a 32bit

3 non mi sono neanche preoccupato di capire a cosa serva…

4 con la coda fra le gambe

5 o quello che è

6 notare che l’ho fatto dal mio portatile con Brasero!

7 questa volta usando un mio CD (che mi farò ovviamente rimborsare) e con xfburn

Tirocinio II

Ottobre 26, 2009

Senza entrare nel merito di cosa dovrò fare da tirocinante ma, dalle prime impressioni, è meglio del precedente:

  • il tutor usa linux1
  • devo portare una roba da ambiente closed a open source2
  • mi sono sembrati quasi tutti di sinistra3
  • ho una poltrona da ufficio4
  • ho un ufficio che divido con un’altra tirocinante5
  • ho un monitor LCD6
  • ho un pc con processore AMD X2 da 2,9 Ghz e 3GB di RAM7

Senza contare che da laureato, e facendo un tirocinio libero, non ho alcun vincolo di relazioni finali e colloqui con il tutor universitario per questioni burocratiche8. L’unico difetto è questo: non ho nessun rimborso spese9.

1 Quindi parliamo la stessa lingua. Potevo installare una distro sul loro pc ma preferisco portarmi il mio fido notebook come facevo nell’altro tirocinio, sperando che non abbia rotture di balle con il proxy dato che serve l’autenticazione

2 Non essendo ancora entrato nel vivo credo che sia proprio free software e non solo open source. Nell’altro tirocinio era tutto Windows/C# e ci sono voluti 2 mesi prima che il tutor mi spiegasse cosa dovevo fare

3 Una tipa, nella classica pausa caffè, ha attaccato discorso dicendo che è andata alle primarie del PD. Ma tanto quando si parla in pubblico, chissà come mai, tutti sembrano di sinistra…

4 Comodissima, con la leva a gas e braccioli: come quella che ho a casa

5 Fico (no figa sempre pensare a quello?): almeno abbiamo più o meno la stessa età e posso parlare giovane senza essere frainteso

6 19 pollici. Nell’altro tirocinio avevo un CRT e ci programmavo minimo 5 ore al giorno

7 Nell’altro tirocinio avevo un pentium 4 con 512MB di RAM e ci programmavo minimo 5 ore al giorno

8 Anche se del mio tutor universitario non mi lamenterò mai: sempre preciso, puntuale, non si dava mai per disperso, era lui che ti avvertiva delle scadenze burocratiche…un figo

9 Almeno nell’altro avevo la mensa gratuita

Non ha prezzo

Ottobre 23, 2009

Windows Vista Enterprise1 a 32 bit: gratis con MSDNAA. Scoprire che è proprio la scheda video fottuta non ha prezzo2.

1 Avevo Windows XP Home e mi serviva solo per giocare ad Age Of Empire III in multiplayer ma ultimamente dopo 10 minuti di gioco sfarfallava e si bloccava

2 Sopratutto quando si è fatto tutto un lavoro certosino di qualche ora (dovuto alla lentezza dell’aggiornamento di sistema e installazione di antivirus, driver…)