Riduci le regole del firewall di metà - una regola di iptables per tcp e udp


12

Ho un certo numero di regole iptables sul mio firewall che assomigliano a questo:

iptables -A zone_lan_forward -p tcp -d 1.2.3.0/24 -j ACCEPT
iptables -A zone_lan_forward -p udp -d 1.2.3.0/24 -j ACCEPT

Esiste una scorciatoia per avere due regole - una per tcp e una per udp - per ogni indirizzo? Voglio dire, posso fare qualcosa del genere:

iptables -A zone_lan_forward -p tcp,udp -d 1.2.3.0/24 -j ACCEPT

Risposte:


22

Crea una nuova catena che accetti tutti i pacchetti TCP e UDP e passa a quella catena dalle singole regole permissive IP / porta:

iptables -N ACCEPT_TCP_UDP
iptables -A ACCEPT_TCP_UDP -p tcp -j ACCEPT
iptables -A ACCEPT_TCP_UDP -p udp -j ACCEPT

iptables -A zone_lan_forward -d 1.2.3.0/24 -j ACCEPT_TCP_UDP

Ciò aggiunge il sovraccarico di alcune righe extra, ma dimezza il numero di regole TCP / UDP.

Vorrei non omettere l' -pargomento, perché non sei solo aprendo il firewall per ICMP, ma anche qualsiasi altro protocollo. Dalla pagina man di iptables su -p:

Il protocollo specificato può essere uno di tcp, udp, icmp o tutti, oppure può essere un valore numerico, che rappresenta uno di questi protocolli o uno diverso. È anche consentito un nome di protocollo da / etc / protocols.

Potrebbe non essere in ascolto su tutti i protocolli ad eccezione di TCP, UDP, ICMP e in questo momento , ma chi sa cosa il futuro può tenere. Sarebbe una cattiva pratica lasciare il firewall aperto inutilmente.

Disclaimer: i comandi iptables sono in cima alla mia testa; Non ho accesso a una scatola su cui testarli ATM.


Questa è una soluzione molto elegante che non lascia il firewall aperto inutilmente.
Big McLargeHuge

4
Ma questo metodo di creazione di una nuova catena fallirà se il filtraggio viene effettuato tramite il numero di porta di destinazione. Qualcuno può suggerire come superare il problema sopra menzionato?
Amor,

@Amor In questo esempio, se hai utilizzato -p alltutte le --dportregole della zone_lan_forwardcatena, ciò potrebbe ottenere ciò che stai cercando. Naturalmente suppongo che non ci sia altro modo per entrare in quella catena con un protocollo non TCP / UDP a causa della ACCEPT_TCP_UDPcatena. Ovviamente questa è una strategia rischiosa se più persone hanno accesso a modificare le regole e qualcuno arriva e modifica le tue regole senza capire questa sottigliezza.
Samuel Harmer,

Ooops. Non ho notato l'ordine delle catene. Dovresti cambiare l'ordine delle catene anche in questo esempio per quello che ho appena detto di funzionare correttamente. Quindi ACCEPT_TCP_UDPsalta a zone_lan_forwardcui poi salta ACCEPT.
Samuel Harmer,

2

Se non ti interessa davvero il traffico ICMP (che puoi comunque bloccare globalmente con una regola), puoi semplicemente omettere il flag -p e coprirà tutti i protocolli.


Dovrei preoccuparmi del traffico ICMP? Mi occupo principalmente dell'accesso HTTP.
Big McLargeHuge

Non proprio. È possibile bloccare ICMP (ping) se lo si desidera, ma poiché serve comunque il traffico HTTP non ha molto senso.
Nathan C,

@NathanC, penso che il consiglio di aprire TUTTE le porte quando l'OP chiede come dimezzare le sue regole possa portare a problemi, ora o in futuro.
Jed Daniels,

@JedDaniels l'opzione -p specifica i protocolli e non le porte. La risposta che segue ha un'alternativa se si preoccupano di bloccare qualcosa di diverso da tcp & udp.
Nathan C,

@NathanC Sì, e la rimozione di -p significa "apri tutti i protocolli, non solo tcp o udp", che è sconsiderato se non pericoloso.
Jed Daniels,
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.