Quando si usano le regole del firewall iptables, perché affermare il NUOVO stato su tutte le porte consentite?


23

Vedo spesso iptables configurati per consentire a tutti i pacchetti di connessioni CORRELATE e le porte di servizio specifiche a NUOVE connessioni.

Qual è la ragione per dichiarare NUOVO? Se una connessione non è NUOVA, è CORRELATA suppongo, quindi la regola della porta specifica non eseguirà nessuna delle due. Quindi perché definire in modo esplicito le porte di servizio con NUOVO e non solo protocollo e numero di porta?

Risposte:


21

Le regole in un firewall netfilter (iptables) vengono controllate in sequenza e il destino del pacchetto (ACCEPT, DROP, REJECT ecc.) Viene determinato in base alla prima corrispondenza.

Rendendo lo stato del firewall e la prima regola, la -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPTmaggior parte del traffico legittimo verso il tuo server viene accettata dopo aver superato solo quella singola regola. Quel traffico non ha bisogno di attraversare altre regole.

A seconda delle dimensioni della rule base, ciò può comportare una differenza significativa nelle prestazioni del firewall.

L'unico traffico che il firewall deve ora convalidare sono le connessioni esplicitamente nuove.

Vale a dire confrontare un firewall per un server web pubblico con l'accesso per una manciata di webmaster dalle loro stazioni di lavoro:

-A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp -m multiport --dports 80,443 -j ACCEPT
-A INPUT -p tcp -m state --state NEW -m tcp --dport 22 -m iprange --src-range 10.9.8.7-10.9.8.10 -j ACCEPT
-A INPUT -j REJECT --reject-with icmp-host-prohibited

Circa il 99% dei pacchetti legittimi apparterrà a connessioni stabilite, colpendo solo la prima regola. Dei pacchetti che non corrispondono a tale regola, la maggior parte dovrebbe essere costituita da nuove connessioni al tuo sito Web, il modulo multiporta può consentire l'accesso a HTTP o HTTPS in un'unica regola. I webmaster accedono da un numero di stazioni di lavoro con indirizzi fissi usando ssh e sftp e tutto il resto viene rifiutato.

Un firewall in cui le regole sono ordinate logicamente dalla porta TCP:

-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.7 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.8 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.9 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 22  --source 10.9.8.10 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 80 -j ACCEPT
-A INPUT -p tcp  -m tcp --dport 443 -j ACCEPT

Qui ogni pacchetto per il tuo server web HTTP dovrebbe essere verificato rispetto a 5 regole prima che venga concesso l'accesso. E con più servizi in esecuzione su un server che può facilmente diventare 50 regole o molto di più quando, ad esempio, utilizzi fail2ban o prodotti simili.


1
Una risposta eccellente (+1 da parte mia!) Tranne per il fatto che dici "l' accesso è consentito in base alla prima partita ". Se la prima partita sembra essere DROP o REJECT, ciò non consentirà l'accesso; se è un LOG, devi continuare a trovare una corrispondenza successiva; e se vengono coinvolte catene personalizzate, le cose possono diventare piuttosto barocche. Direi piuttosto che " il destino del pacchetto è determinato sulla base di una corrispondenza di primo dispositivo ".
MadHatter supporta Monica il

5
Puoi riflettere sul caso in cui la related/establishedlinea è presente ma le regole successive non lo affermano NEW?
Daniel Widrick,

13

NEW significa che il pacchetto ha avviato una nuova connessione.

È gestito da moduli del kernel chiamati ip_conntrack_*che rendono il tuo firewall con stato . I firewall con stato possono guardare i flussi di traffico.

Se si specifica semplicemente il protocollo e il numero di porta, il firewall non è stato ma è stateless. Significa che limita o blocca i pacchetti. Questo tipo di firewall non è a conoscenza dei flussi di dati.

Un buon esempio è FTP: FTP attivo utilizza la porta 21 per il canale di controllo ma quindi utilizza la porta 20 per il canale dati. Nel caso di un firewall con stato, non è necessario aprire esplicitamente la porta 20 perché è correlata a una nuova connessione stabilita precedente sulla porta 21.

Ecco un estratto della iptablespagina man:

NOVITÀ: significa che il pacchetto ha avviato una nuova connessione o altrimenti associato a una connessione che non ha visto i pacchetti in entrambe le direzioni.

STABILITO - significa che il pacchetto è associato a una connessione che ha visto i pacchetti in entrambe le direzioni.

CORRELATO - significa che il pacchetto sta avviando una nuova connessione, ma è associato a una connessione esistente, come un trasferimento di dati FTP o un errore ICMP.


1
Quale meccanismo "assocerà" la porta 20 alla porta 21? È possibile trasferire una connessione IP aperta su un'altra porta?
dronus,

nf_conntrack_ftp.ko
mateusza,

7
-A INPUT -m tcp -p tcp -m state --state RELATED,ESTABLISHED -j ACCEPT
-A INPUT -m tcp -p tcp --dport 22 -j ACCEPT
-A INPUT -DROP

Il set di regole precedente consentirà ai pacchetti di accedere alla porta TCP 22 con uno stato di INVALIDthroughACCEPT

Non valido : se nessuno degli stati precedenti si applica, il pacchetto è nello stato INVALID. Ciò potrebbe essere causato da vari tipi di sonde di rete stealth o potrebbe significare che stai esaurendo le voci CONNTRACK (che dovresti anche vedere nei registri). O potrebbe semplicemente essere del tutto benigno.

/unix/57423/how-to-understand-why-the-packet-was-considered-invalid-by-the-iptables


L'asserzione di STATE NEWgarantisce che i pacchetti INVALID non vengano erroneamente inseriti.

E per chiarire i significati:

  • NOVITÀ : questa è una nuova connessione
  • STABILITO : si tratta di un pacchetto coinvolto in una connessione corrente
  • CORRELATO : Questa è una nuova connessione, ma è stata prevista da una connessione esistente
  • INVALID : nessuna delle precedenti si applica.
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.