Ignorando le trasmissioni su 10.0.0.255 usando iptables

1

Sto provando a eliminare i pacchetti di registrazione destinati alla 10.0.0.255 utilizzando le seguenti regole:

$IPTABLES -A OUTPUT  -d 10.0.0.255   -j DROP
$IPTABLES -A FORWARD  -d 10.0.0.255   -j DROP

Non sembra funzionare. I pacchetti stanno ancora scorrendo attraverso questa regola e il DENY di loro viene registrato con una regola successiva. Ho bisogno di qualcosa di speciale per quanto riguarda l'addr broadcast?

Modifica: ecco la regola completa che utilizzo che non funziona:

# 
# Rule 2 (wlan0)
# 
echo "Rule 2 (wlan0)"
# 
# remove local broadcast 
$IPTABLES -A FORWARD -i wlan0   -d 10.0.0.255   -m state --state NEW  -j DROP
$IPTABLES -A OUTPUT -o wlan0   -d 10.0.0.255   -m state --state NEW  -j DROP
$IPTABLES -A FORWARD -o wlan0   -d 10.0.0.255   -m state --state NEW  -j DROP
    
posta grm 10.07.2011 - 13:09
fonte

4 risposte

2

La domanda non è molto esplicita su ciò che stai cercando di ottenere, quale comportamento effettivamente osservi e come ciò differisce da ciò che stai cercando di ottenere. Tuttavia, cercherò di fare del mio meglio per indovinare quale potrebbe essere il tuo problema.

Ecco le mie ipotesi. Quasi certamente hai bisogno di una regola di INPUT per bloccare le trasmissioni in arrivo. Mi aspetto che i tuoi attuali set di regole impediscano alle applicazioni locali di inviare trasmissioni, ma non bloccherà i messaggi broadcast ricevuti da altre macchine.

Spero che tu comprenda che queste regole bloccheranno solo le trasmissioni in entrata / in uscita sulla tua interfaccia wireless ( wlan0 ). Se desideri bloccare tutte le trasmissioni, indipendentemente dall'interfaccia, elimina -i wlan0 .

Spero che tu capisca che bloccare l'inoltro dei pacchetti di trasmissione non ha senso. I pacchetti broadcast sono, beh, trasmessi a tutti sulla rete locale. Quindi, se la macchina X sulla rete wireless locale invia un pacchetto broadcast, tutte le altre macchine sulla stessa rete wireless stanno andranno a vedere il pacchetto broadcast, indipendentemente da quali regole firewall sono state messe in atto. Le regole FORWARD (e l'intero concetto di impedire che i pacchetti di trasmissione "scorrano attraverso") la tua macchina non ha senso.

P.S. Se nessuna delle operazioni precedenti funziona, prova a eliminare -m state --state NEW , nel caso in cui ciò faccia confusione. Molto probabilmente questo non farà la differenza. Tuttavia, so di essere in grado di bloccare le trasmissioni in arrivo nel mio set di regole e il mio set di regole non tenta di filtrare sullo stato della connessione, quindi so che dovrebbe funzionare se si omette -m state --state NEW ; dovrebbe continuare a funzionare con quello incluso, ma non lo so per certo.

    
risposta data 17.08.2011 - 00:00
fonte
2

Un po 'datato, ma mi sentivo in dovere di aiutare a espandere la discussione / dialogo introducendo l'idea di bloccare il traffico broadcast dimostrando le capacità di IPTables anche per filtrare le informazioni sul livello 2. In particolare, c'è l'opzione della riga di comando -m pkttype --pkt-type broadcast .

Ecco un esempio di set di regole iptables che dimostra questa opzione e il suo output risultante:

IPTables: -m pkttype - broadcast -pkt-type

iptables -F

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -A INPUT -m pkttype --pkt-type broadcast -d 10.0.0.255/32 -j DROP
iptables -A INPUT -j ACCEPT

iptables -A FORWARD -m pkttype --pkt-type broadcast -d 10.0.0.255/32 -j DROP
iptables -A FORWARD -j ACCEPT

iptables -A OUTPUT -m pkttype --pkt-type broadcast -d 10.0.0.255/32 -j DROP
iptables -A OUTPUT -j ACCEPT

Risultati

[nick@sys]$ iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             10.0.0.255          PKTTYPE = broadcast 
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             10.0.0.255          PKTTYPE = broadcast 
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             10.0.0.255          PKTTYPE = broadcast 
ACCEPT     all  --  anywhere             anywhere            

Mentre una tangente, c'è un'altra opzione interessante per fornire il filtraggio di livello 2 basato su indirizzi MAC (sorgente), che in questo caso non è molto utile. Tuttavia, è interessante se non altro sapere della sua esistenza. Questa è l'opzione della riga di comando IPTables -m mac --mac-source . In pratica, questa opzione è dichiarata avere senso sulle catene INPUT e FORWARD (e non sulla catena OUTPUT). Il concetto sarebbe probabilmente di maggiore interesse per un'azione ACCEPT, contro un DROP o REJECT. Nel seguente breve esempio, ACCETTO le trasmissioni dal gateway predefinito, ma blocco tutte le altre. In questo esempio, suppongo che l'indirizzo MAC del gateway predefinito sia: 00: F0: 10: 03: 15: 42.

IPTables: -m mac --mac-source

iptables -F

iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT DROP

iptables -A INPUT -m mac --mac-source 00:F0:10:03:15:42 -d 10.0.0.255/32 -j ACCEPT
iptables -A INPUT -m mac ! --mac-source 00:F0:10:03:15:42 -d 10.0.0.255/32 -j DROP
iptables -A INPUT -j ACCEPT

iptables -A FORWARD -d 10.0.0.255/32 -j DROP
iptables -A FORWARD -j ACCEPT

iptables -A OUTPUT -d 10.0.0.255/32 -j DROP
iptables -A OUTPUT -j ACCEPT

Risultati

[nick@sys]$ iptables -L
Chain INPUT (policy DROP)
target     prot opt source               destination         
ACCEPT     all  --  anywhere             10.0.0.255          MAC 00:F0:10:03:15:42 
DROP       all  --  anywhere             10.0.0.255          MAC ! 00:F0:10:03:15:42 
ACCEPT     all  --  anywhere             anywhere            

Chain FORWARD (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             10.0.0.255          
ACCEPT     all  --  anywhere             anywhere            

Chain OUTPUT (policy DROP)
target     prot opt source               destination         
DROP       all  --  anywhere             10.0.0.255          
ACCEPT     all  --  anywhere             anywhere

In questo secondo esempio mi rendo perfettamente conto che la notazione NOT (cioè "!") per la seconda regola INPUT non è necessaria; tuttavia, è anche una funzione utile che può essere utile in questa domanda se si desidera il rifiuto selettivo (o l'accettazione).

    
risposta data 22.12.2014 - 21:13
fonte
1

iptables è meraviglioso quando lo schema è ben pensato e ottimizzato per l'ambiente, ma richiede uno sforzo intellettuale serio per avere ragione!

Penso che sia così:

INPUT - to the box
FORWARD - around the box
OUTPUT - from the box

Sembra che abbia sottorappresentato la Classe A 10. * a una Classe C 10.0.0. * Presumo che tu voglia le trasmissioni 10.0.0.255 su eth0 / eth1.

Pertanto, per bloccare solo le trasmissioni su 10.0.0.255 da e verso wlan0 e impedire che vengano inoltrate:

$IPTABLES -A FORWARD -i wlan0 -d 10.0.0.255/32 -j DROP
$IPTABLES -A FORWARD -o wlan0 -d 10.0.0.255/32 -j DROP
$IPTABLES -A INPUT   -i wlan0 -d 10.0.0.255/32 -j DROP
$IPTABLES -A OUTPUT  -o wlan0 -d 10.0.0.255/32 -j DROP

Per bloccare l'inoltro per 10.0.0.255/32 su tutte le interfacce:

$IPTABLES -A FORWARD -d 10.0.0.255/32 -j DROP

Ciò consentirebbe comunque di essere utilizzato, ma non incrocerà le interfacce in alcuna direzione.

Aggiungerei anche molte più regole per fermare spoofing, bogon, icmps e igmp selezionati e bloccare esattamente quali indirizzi / porte vengono inoltrati e bloccati a / da ciascuna combinazione di interfacce, in modo che non ci siano possibilità di indirizzi privati perdendo in rete, o inserendo indirizzi falsificati o una macchina compromessa che entra in altre macchine che non dovrebbe.

Il mio set di regole iptables è di circa 25.000 righe, ma la maggior parte di queste sono regole geoip per decidere quali paesi possono inviare posta a quali orari, così come gli utenti vietati, gli aggressori di forza bruta, i noti trasgressori di spamhaus ecc.

Forse sono paranoico, ma come amministratore di sistema è richiesto!

    
risposta data 17.08.2011 - 15:49
fonte
0

Credo che la regola corretta sarebbe:

$IPTABLES -A OUTPUT  -d 10.0.0.0/24   -j DROP
$IPTABLES -A FORWARD  -d 10.0.0.0/24   -j DROP

Non sono sicuro del motivo per cui la tua regola non corrisponde ai pacchetti broadcast, ma in altri esempi ho visto questo formato.

Inoltre, un modo alternativo ha trovato qui blocca il pacchetto in base al tipo di pacchetto.

    
risposta data 10.07.2011 - 15:46
fonte

Leggi altre domande sui tag