Firewalld blocco / rilascio e consenti per IP


2

Abbiamo un server root di Linux che principalmente è solo un server docker. Contenitori di hosting e corridore CI.

Per proteggere questo server l'idea di base per ora è quella di

  • bloccare tutto il traffico
  • ad eccezione di uno (o più) IP (s) ammessi.

Ieri ho aggiunto una ricca regola con per ip4

  • bloccando 0.0.0.0/0
  • consentendo esplicitamente il nostro IP statico

Ciò mi ha impedito di accedere. Contenitore Docker dove è ancora accessibile. I contenitori generano una nuova interfaccia, per quanto comprendo queste interfacce dovrebbero essere responsabili solo della comunicazione dall'host al contenitore. Spero almeno che il firewalld filtri il traffico prima che il traffico venga inoltrato, ad es. eth0 su dockerinterface1234.

La mia ricerca finora suggerisce. Lasciando informazioni sull'interfaccia in una zona, la zona è responsabile di tutto il traffico. Tuttavia, il mio test suggerisce che l'ho configurato male o la mia ricerca è sbagliata.

Risposte:


1

Adottando dal mio tutorial su zone basate su IP per firewalld :

Inizia modificando la zona predefinita da eliminare:

firewallctl config set default-zone drop

La zona di rilascio elimina tutte le connessioni in entrata. Si consiglia di prendere in considerazione il block zona che fa lo stesso eccetto che restituisce una connessione bloccata invece di lasciarla semplicemente in silenzio. Quindi creare una nuova zona e collegarla a una sottorete di indirizzi IP (o un singolo indirizzo):

 firewallctl new --permanent zone --name "myzone"
 firewallctl zone "myzone" --permanent add source "198.51.100.0/24"
 firewallctl zone "myzone" --permanent add source "2001:0DB8::/32"

(Ricordati di essere pronto per IPv6!) Verifica che le tue zone siano a posto:

 firewallctl info zones --active

A questo punto inizi aggiungere porte o servizi a myzone. Questi servizi saranno accessibili solo dalla subnet di zona / IP aggiunta e non dalla zona di rilascio / pubblica predefinita.


0

Wikipedia ha un buon schema di flusso dei pacchetti a https://upload.wikimedia.org/wikipedia/commons/3/37/Netfilter-packet-flow.svg

Docker mette le sue regole di mappatura delle porte nella fase di "preregolazione del manghi". Questo stage viene eseguito prima di "input filtro" in cui la maggior parte dei firewall tenta di posizionare le regole di filtraggio degli input, ma se si osserva lo schema, è possibile vedere che i pacchetti eviteranno tale fase ("decisione di routing") se vengono inoltrati. Che probabilmente è quello che sta succedendo per te.

Invece di combattere con le regole di Docker, puoi completamente prevenirli usando la tabella 'raw'. Per eliminare tutto il traffico da 'eth0' alla porta 12345

iptables -t raw -I PREROUTING -i eth0 -p tcp --dport 12345 -j LOG

Si noti che la tabella "raw" influisce anche sul traffico interno (Docker), quindi se si intende abbandonare in base agli indirizzi IP di origine, assicurarsi di includere anche la whitelist degli intervalli IP interni del localhost e della finestra mobile.

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.