Consentire richieste ad un porto solo dopo accesso ssh

Installazione, configurazione e uso di Ubuntu come server: web, ftp, mail, news, proxy, dns e altro.
giorgiolopez
Prode Principiante
Messaggi: 2
Iscrizione: martedì 16 ottobre 2012, 21:32

Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da giorgiolopez »

Ciao a tutti,

volevo porre una domanda a chi è più esperto di me riguardo le policy del firewall. Vorrei ottenere questo scenario:

Ho un server che rilascia dei token di abilitazione (delle licenze praticamente) a un certo numero di utenti che facciano una richiesta ad un porto di ascolto X.

Sulla stessa macchina risiede un server ssh che utilizziamo per degli altri scopi.
L'accesso ssh è regolato da chiave DSA asimmetrica e, data la robustezza di tale sistema, non è ristretto per IP sorgente: in pratica ci si può lavorare da qualsiasi posizione.

Viceversa il token server rilascia le licenze a chiunque le richieda sul porto apposito, senza restrizioni: devo per forza imporre, nel file iptables, delle restrizioni sugli IP consentiti per le richieste entranti su tale porto X.

Ora mi domandavo: posso fare in modo che le policy di INPUT sul porto X facciano passare le richieste solo se "precedentemente" (entro un certo intervallo di tempo) dallo stesso ip è stato effettuato con successo un accesso ssh?

L'unica alternativa cui avevo pensato era creare uno script bash da eseguire una volta loggati via ssh per "registrare" l'IP sorgente nelle iptables (e rilanciarle) e uno script "duale" da lanciare prima di disconnettere la sessione. (in particolare c'è un comando bash che restituisca l'IP da cui mi sto collegando in ssh?). Ovviamente è un sistema molto più seccante...Che ne dite?
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da paper0k »

Potresti usare la variabile di ambiente SSH_CLIENT che restituisce l'ip remoto, la porta remota e la porta locale da dove è stato eseguito l'accesso ssh
Per curiosità, il fatto che il token server deve rilasciare licenze solo se precedentemente è stato eseguito un accesso ssh, ti server per garantire che solo chi ha un accesso ssh possa avere il token? Cioè garantire che non vengano rilasciati token a chi si collega alla porta ?
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
giorgiolopez
Prode Principiante
Messaggi: 2
Iscrizione: martedì 16 ottobre 2012, 21:32

Re: Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da giorgiolopez »

Esatto, voglio evitare che chiunque possa fare una richiesta alla porta X e ottenere una licenza. Invece se l'accesso alla porta X è consentito solo a chi in quel momento è connesso via SSH riesco a restringere gli accessi come voglio. ma la variabile SSH_CLIENT elenca tutti i clients connessi in quel momento? Poso utilizzarla anche dentro il file iptables?

Grazie
Avatar utente
Alien321
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1388
Iscrizione: sabato 20 maggio 2006, 20:39
Desktop: KDE 5.16.4
Distribuzione: KDE Neon
Località: Venere

Re: Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da Alien321 »

giorgiolopez » [url=http://forum.ubuntu-it.org/viewtopic.php?p=4218188#p4218188]ieri, 14:50[/url] ha scritto:Esatto, voglio evitare che chiunque possa fare una richiesta alla porta X e ottenere una licenza. Invece se l'accesso alla porta X è consentito solo a chi in quel momento è connesso via SSH riesco a restringere gli accessi come voglio. ma la variabile SSH_CLIENT elenca tutti i clients connessi in quel momento? Poso utilizzarla anche dentro il file iptables?

Grazie
No, è meglio se fai uno script che parserizza il file "/var/log/auth.log" e estrai li informazioni che ti servono.
Potresti farne 2 o uno con diversi parametri. il Primo inserisce le regole di autenticazione sul firewall basandosi sulle informazioni estrapolate dal file auth.log.
Il secondo resetta i privilegi di del firewall.

Poi vedi tu secondo la tua fantasia e esigenza.
Spoiler
Mostra
Finalmente è finito carnevale, anche se vedo ancora gente in maschera
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da paper0k »

Eseguire una scansione periodica di un file e adeguare firewall e applicazione, potrebbe andare bene, ma considera sempre il tempo di polling e la dimensione del delta da elaborare, cioè se il file auth.log lo controlli ogni 5 minuti, il token potrà essere generato solo dopo 5 minuti + il tempo di elaborazione del file dall'accesso in ssh

La variabile SSH_CLIENT contiene solo le informazioni alla sessione in corso. Ad esempio

Codice: Seleziona tutto

echo $SSH_CLIENT
192.168.1.9 49669 22
ma l'utenza deve poter usare SSH?

Se no, puoi usare l'opzione "command" dell'authorized_keys, eseguire un programma specifico nel momento in cui l'utente esegue il collegamento in ssh, e li restituire il token

L'ho usato con SVN e nel blog ho spiegato come, non so se può tornarti utile

Ciao
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
Avatar utente
Alien321
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1388
Iscrizione: sabato 20 maggio 2006, 20:39
Desktop: KDE 5.16.4
Distribuzione: KDE Neon
Località: Venere

Re: Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da Alien321 »

paper0k » [url=http://forum.ubuntu-it.org/viewtopic.php?p=4220277#p4220277]oggi, 8:07[/url] ha scritto:Eseguire una scansione periodica di un file e adeguare firewall e applicazione, potrebbe andare bene, ma considera sempre il tempo di polling e la dimensione del delta da elaborare, cioè se il file auth.log lo controlli ogni 5 minuti, il token potrà essere generato solo dopo 5 minuti + il tempo di elaborazione del file dall'accesso in ssh

La variabile SSH_CLIENT contiene solo le informazioni alla sessione in corso. Ad esempio

Codice: Seleziona tutto

echo $SSH_CLIENT
192.168.1.9 49669 22
ma l'utenza deve poter usare SSH?

Se no, puoi usare l'opzione "command" dell'authorized_keys, eseguire un programma specifico nel momento in cui l'utente esegue il collegamento in ssh, e li restituire il token

L'ho usato con SVN e nel blog ho spiegato come, non so se può tornarti utile

Ciao
mmmm, come soluzione è elegante ma ha un problema IMHO, per inserire una regola in iptables devi essere root e in questo modo tu avresti i privilegi di accesso
del utente che si collega in SSH. Potresti usare "sudo" con restrizioni o altri trucchi, ma genereresti dei buchi di sicurezza non indifferenti (far usare iptables a utenti non root?? Paura!!)
Spoiler
Mostra
Finalmente è finito carnevale, anche se vedo ancora gente in maschera
Avatar utente
paper0k
Rampante Reduce
Rampante Reduce
Messaggi: 7220
Iscrizione: lunedì 2 ottobre 2006, 13:39
Contatti:

Re: Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da paper0k »

Alien321 » [url=http://forum.ubuntu-it.org/viewtopic.php?p=4220426#p4220426]ieri, 12:01[/url] ha scritto: mmmm, come soluzione è elegante ma ha un problema IMHO, per inserire una regola in iptables devi essere root e in questo modo tu avresti i privilegi di accesso
del utente che si collega in SSH. Potresti usare "sudo" con restrizioni o altri trucchi, ma genereresti dei buchi di sicurezza non indifferenti (far usare iptables a utenti non root?? Paura!!)
Se ho capito bene la richiesta di giorgiolopez, non serve aggiornare iptables, perché direttamente con l'accesso in SSH generi il token e lo restituisci, in pratica "salti" un passaggio

Ciao
Chiunque può essere ragionevole, ma esser sani di mente è raro (Oscar Wilde)
Wiki|Blog|Twitter|Identi.ca|last.fm
Avatar utente
Alien321
Entusiasta Emergente
Entusiasta Emergente
Messaggi: 1388
Iscrizione: sabato 20 maggio 2006, 20:39
Desktop: KDE 5.16.4
Distribuzione: KDE Neon
Località: Venere

Re: Consentire richieste ad un porto solo dopo accesso ssh

Messaggio da Alien321 »

paper0k » [url=http://forum.ubuntu-it.org/viewtopic.php?p=4221288#p4221288]oggi, 8:08[/url] ha scritto:
Alien321 » [url=http://forum.ubuntu-it.org/viewtopic.php?p=4220426#p4220426]ieri, 12:01[/url] ha scritto: mmmm, come soluzione è elegante ma ha un problema IMHO, per inserire una regola in iptables devi essere root e in questo modo tu avresti i privilegi di accesso
del utente che si collega in SSH. Potresti usare "sudo" con restrizioni o altri trucchi, ma genereresti dei buchi di sicurezza non indifferenti (far usare iptables a utenti non root?? Paura!!)
Se ho capito bene la richiesta di giorgiolopez, non serve aggiornare iptables, perché direttamente con l'accesso in SSH generi il token e lo restituisci, in pratica "salti" un passaggio

Ciao
Viceversa il token server rilascia le licenze a chiunque le richieda sul porto apposito, senza restrizioni: devo per forza imporre, nel file iptables, delle restrizioni sugli IP consentiti per le richieste entranti su tale porto X.
A me sembra che deve fare tutto lui da questa frase, tralasciamo che è semi incomprensibile (porto?? Mica siamo su una nave è "PORTA"; file iptables?? Al limite è regola) per cui è plausibile che o io o tu abbiamo frainteso ^^
Spoiler
Mostra
Finalmente è finito carnevale, anche se vedo ancora gente in maschera
Scrivi risposta

Ritorna a “Ubuntu su server”

Chi c’è in linea

Visualizzano questa sezione: 0 utenti iscritti e 12 ospiti