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.