Quale serie di regole è più restrittiva quando si consente SSH in iptables?

2

Ho visto due serie di regole per consentire la comunicazione SSH:

Imposta A:

iptables -A INPUT -p tcp --dport 22 -j ACCEPT
iptables -A OUTPUT -p tcp --dport 22 -j ACCEPT

Set B:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Nessuno di entrambi gli insiemi è superiore in generale, ma la domanda riguarda specificamente le comunicazioni SSH ordinarie, con l'autenticazione delle chiavi-chiave solo se ciò semplifica la questione (e praticamente è un must nel contesto della sicurezza), poiché modo in cui sappiamo che gli attacchi di forza bruta non passeranno in ogni caso.

Quale dei due insiemi è più restrittivo (filtrerà o attenuerà più comunicazioni non previste o consumo di risorse)? Inoltre, è possibile combinare entrambi i set per creare una regola ancora più restrittiva?

    
posta mikl 13.03.2017 - 22:06
fonte

1 risposta

2

Set B, in isolamento non consente le comunicazioni ssh. Permette semplicemente che una connessione consentita da altre regole sia continuata o (soggetta a determinate combinazioni come per H.323 e FTP) per stabilire nuove connessioni tra gli indirizzi IP che hanno una voce esistente nella tabella conntrack.

Il problema con Set A è che non è statico - un utente malintenzionato potrebbe creare una connessione client a qualsiasi porta sul server fintanto che il client usa la porta 22. Per risolvere questo problema è necessario un firewall stateful - cioè uno che prende in considerazione la direzione della connessione. Quindi è più comune vedere qualcosa del tipo:

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
...
iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT

Mettere ESTABLISHED, RELATED significa innanzitutto che l'intero set di regole deve essere analizzato solo una volta per connessione - i pacchetti successivi sono abbinati alle prime 2 regole. Questo può avere un grande impatto sulla latenza con un set di regole complesso.

Il rovescio della medaglia dell'utilizzo del firealling di stato è che consuma risorse sul server - quando la tabella conntrack si riempie, il firewall inizierà dropping connections . OTOH, il modulo stateful consente una gestione della domanda più complessa, in genere limitando la velocità delle connessioni.

with certificate-authentication-only

Davvero? Mentre ci sono versioni di ssh usando i certificati per la gestione delle chiavi è un caso molto insolito. Intendi coppie di chiavi?

None of both sets is superior in general

...

Which of both sets is more restrictive

Se nessuno dei due è superiore, come si può essere migliori?

Per un firewall host, dovresti usare il firewall stateful - per prevenire il bypass descritto in precedenza.

    
risposta data 13.03.2017 - 23:13
fonte

Leggi altre domande sui tag