Vai al contenuto

Linux: sshd auto blacklisting. Consigli?


loric

Messaggi Raccomandati:

La configurazione del mio serverino domestico, che ho implementato anche nel server di lavoro, prevede che le connessioni tramite ssh siano consentite, dall'esterno della rete, esclusivamente tramite chiave pubblica ("PasswordAuthentication no") sulla porta 22. Un demone separato (anzi, è xinetd che lancia sshd con l'opzione -i) è in ascolto su altra porta > 1024, quindi non standard, ed accetta connessioni tramite password ma solo su un singolo specifico utente con privilegi particolarmente limitati.

Lo scopo di una configurazione "passwordless" è quello di evitare i rischi di brute force attack a cui, costantemente, ogni server ssh del mondo con esposizione su internet è soggetto.

Lo scopo di mantenere comunque un accesso tramite password deriva da una piccola disavventura che mi è capitata tempo fa, con problemi al server, portatile morto (su cui era salvata la chiave pubblica) e impossibilità di poter accedere con portatile sostitutivo.

Come dicevo, l'accesso tramite password avviene attraverso un'istanza di sshd su porta non standard. Questo taglia fuori la maggior parte dei più comuni script di brute force per ssh, in quanto (per ragioni di economia di risorse) si limitano a "spazzare" la rete cercando il demone di ssh sulla porta canonica (22).

Pur avendo optato per una password piuttosto complessa, vorrei comunque premunirmi da brute force attack più mirati, attraverso un meccanismo di blacklisting automatico degli IP.

Potrei utilizzare iptables, non sarebbe neanche complesso farlo, ma, salvo il ricorso a qualche hack, la lista degli IP bloccati non sopravviverebbe ad un reboot.

Potrei utilizzare denyhosts, ma ha varie controindicazioni (occupa risorse, deve fare il parsing dei log, il blacklisting avverrebbe comunque con un certo ritardo) e comunque richiede un sshd compilato col supporto dei TCP Wrappers che non è più presente nelle ultime versioni.

Potrei utilizzare Fail2Ban è un accrocchio mostruoso, anch'esso fa il parsing dei log, anch'esso occupa risorse, ed anch'esso sarebbe lento nel blacklisting.

Ho pensato ad un modulo di PAM e la scelta è caduta su PAM_abl, ma non funziona affatto bene (non registra gli accessi falliti). Ed il motivo per cui non funziona affatto bene è evidente se solo si dà un'occhiata al codice sorgente (in altre parole è una cagata pazzesca e non si capisce come possa avere il successo che ha fra gli smanettoni).

Poiché so che ci sono alcuni informatici qui su AP (Artemis batti un colpo), chiedevo se qualcuno aveva affrontato il problema e come l'aveva risolto. L'idea di scrivere un modulo per PAM con le funzionalità di PAM_abl ma che a differenza di questo funzioni, francamente, non mi alletta tanto, in primis perché ritornare a scrivere in C puro dopo anni di C++ e altri linguaggi "superiori" un po' mi rompe le scatole.

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

  • Risposte 21
  • Creato
  • Ultima Risposta

I più attivi nella discussione

I più attivi nella discussione

buco perchè interessato. io ho tre raspberry pi. per connettermi a casa ho un modem (solo modem) e una routerboard.

Per il momento ho risolto così: i tre raspberry hanno ssh con un una password di pochi caratteri -ma- non possono uscire sulla rete pubblica direttamente. quando mi devo collegare da fuori uso la routerboard (che ha un server ssh) per tunnelare una connessione sui Pi. La connessione alla routerboard è solo tramite certificato, inoltre ha un nome utente molto fantasioso che quindi aumenta la sicurezza.

...

Link al commento
Condividi su altri Social

Smettila con le chat erotiche furry! :§:lol:

[sIGPIC][/sIGPIC]

Some critics have complained that the 4C lacks luxury. To me, complaining about lack of luxury in a sports car is akin to complaining that a supermodel lacks a mustache.

Link al commento
Condividi su altri Social

Smettila con le chat erotiche furry! :§

Nerd is the new black

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

E niente, le ho tentate tutte, l'unica è scriversi un nuovo modulo PAM.

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Ho fatto un tentativo "fixando" pam_abl, ma a questo punto tanto vale che mi scriva il modulo da zero.

Nella mia idea dovrebbe limitarsi esclusivamente al blacklisting degli ip (recte: Rhost; sshd non comunica al sottosistema PAM l'ip del client ma l'hostname ricavato da un DNS reverse lookup)

Per il blacklisting degli username (di cui, almeno nel caso di accesso tramite sshd, vedo poca necessità) comunque esiste già pam_tally/pam_tally2.

Qualcuno con Linux sarebbe interessato a testarlo?

Se sì, posso metterlo su bazaar in formato sorgente. La compilazione richiederà, ovviamente, gli header di pam e la libreria e gli header del Berkeley DB.

Fatemi sapere. Da oggi conto di cominciare a scriverlo.

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Ho fatto un tentativo "fixando" pam_abl, ma a questo punto tanto vale che mi scriva il modulo da zero.

Nella mia idea dovrebbe limitarsi esclusivamente al blacklisting degli ip (recte: Rhost; sshd non comunica al sottosistema PAM l'ip del client ma l'hostname ricavato da un DNS reverse lookup)

Per il blacklisting degli username (di cui, almeno nel caso di accesso tramite sshd, vedo poca necessità) comunque esiste già pam_tally/pam_tally2.

Qualcuno con Linux sarebbe interessato a testarlo?

Se sì, posso metterlo su bazaar in formato sorgente. La compilazione richiederà, ovviamente, gli header di pam e la libreria e gli header del Berkeley DB.

Fatemi sapere. Da oggi conto di cominciare a scriverlo.

dunque, se mi rispieghi in italiano a cosa serve, posso fare da cavia.

Quello che ho capito io:

SSH su porta non standard (esempio 666). Autenticazione psswordless impossibile => blacklist degli IP che hanno tentato più volte l'accesso senza riuscire. Corretto?

Mazda MX-5 20th anniversary "barbone edition" - Tutto quello che scrivo è IMHO

k21x8z.png

Link al commento
Condividi su altri Social

dunque, se mi rispieghi in italiano a cosa serve, posso fare da cavia.

Quello che ho capito io:

SSH su porta non standard (esempio 666). Autenticazione psswordless impossibile => blacklist degli IP che hanno tentato più volte l'accesso senza riuscire. Corretto?

No, attenzione: io ho ssh su porta non standard che accetta autenticazione passwordless, ma, limitatamente ad uno specifico account, anche autenticazione via password.

PAM viene coinvolto da ssh *solo* per le autenticazioni via password, per cui se la tua configurazione non le prevede, tu non sei in grado di testarlo. Peraltro, a dirla tutta, se hai solo autenticazione passwordless (che è la configurazione più sicura), dei normali brute force attack (per i quali intendo scrivere 'sto modulino di PAM) te ne puoi allegramente fregare. A meno che non abbia qualche altro servizio da proteggere (es. SMTP o IMAP, etc.).

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

No, attenzione: io ho ssh su porta non standard che accetta autenticazione passwordless, ma, limitatamente ad uno specifico account, anche autenticazione via password.

PAM viene coinvolto da ssh *solo* per le autenticazioni via password, per cui se la tua configurazione non le prevede, tu non sei in grado di testarlo. Peraltro, a dirla tutta, se hai solo autenticazione passwordless (che è la configurazione più sicura), dei normali brute force attack (per i quali intendo scrivere 'sto modulino di PAM) te ne puoi allegramente fregare. A meno che non abbia qualche altro servizio da proteggere (es. SMTP o IMAP, etc.).

nope, ho solo l'autenticazione con la password perché quella via certificato non la so fare. E peraltro con SSH su porta 22.

E stavo pensando ad installare anche shellinabox per accedervi tramite 443 (dal lavoro) ma mi stai facendo venire molti dubbi sulla sicurezza...

Mazda MX-5 20th anniversary "barbone edition" - Tutto quello che scrivo è IMHO

k21x8z.png

Link al commento
Condividi su altri Social

nope, ho solo l'autenticazione con la password perché quella via certificato non la so fare. E peraltro con SSH su porta 22.

E stavo pensando ad installare anche shellinabox per accedervi tramite 443 (dal lavoro) ma mi stai facendo venire molti dubbi sulla sicurezza...

Ok, allora il programmino fa per te.

Fermo restando che se non hai esigenze come la mia, l'autenticazione tramite password dovrebbe essere l'eccezione, mentre quella attraverso chiave la norma. Se interessa ti posso spiegare come configurare ssh.

Alfiat Bravetta senza pomello con 170 cavalli asmatici che vanno a broda; pack "Terrone Protervo" (by Cosimo) contro lo sguardo da triglia. Questa è la "culona".

Link al commento
Condividi su altri Social

Crea un account o accedi per lasciare un commento

Devi essere iscritto per commentare e visualizzare le sezioni protette!

Crea un account

Iscriviti nella nostra community. È facile!

Registra un nuovo account

Accedi

Sei già registrato? Accedi qui.

Accedi Ora

×
×
  • Crea Nuovo...

 

Stiamo sperimentando dei banner pubblicitari a minima invasività: fai una prova e poi facci sapere come va!

Per accedere al forum, disabilita l'AdBlock per questo sito e poi clicca su accetta: ci sarai di grande aiuto! Grazie!

Se non sai come si fa, puoi pensarci più avanti, cliccando su "ci penso" per continuare temporaneamente a navigare. Periodicamente ricomparità questo avviso come promemoria.