Consenti iptables per consentire l'intervallo ip solo sulla port specificata

In questa domanda vedo una row come questa che mi permetterà di dire "permetta a questi indirizzi IP di connettersi"

iptables -A INPUT -m iprange --src-range 10.50.10.20-80 -j ACCEPT 

Ora, voglio assicurare ulteriormente questo modo che questa regola si applichi solo a porte specifiche. Ho usato un command come questo per le mie porte regolari:

  • Problema IPtables su CentOS 5.6
  • Inoltro NAT / Port con firewall iptables
  • Perché questa linea di file iptables non è rioutput in CentOS 6
  • Windows Firewall equivalente a iptables
  • IP-dipendente port-inoltro locale su Linux
  • Registrazione CentOS e iptables
  •  iptables -A INPUT -p tcp --dport 80 -j ACCEPT 

    Posso combinare questi due per creare una port specifica consentita solo per un intervallo, come questo

     iptables -A INPUT -m iprange --src-range 10.50.10.20-80 --dport 12345 -j ACCEPT 

    Ovviamente io sono titubante di fare solo le chiamate iptables willy-nilly. 🙂 Grazie!

  • Come posizionare la port 80 esterna TCP nella port 8080 di loopback (127.0.0.1)?
  • Come faccio a sapere where vengono memorizzate le regole IPTables?
  • Routing delle politiche Linux - i pacchetti non tornano
  • Iptables, qual è la differenza tra -m stato e -m conntrack?
  • Conntrack: la cancellazione della voce conntrack elimina la connessione TCP?
  • iptables -L piuttosto lento. È normale?
  • 3 Solutions collect form web for “Consenti iptables per consentire l'intervallo ip solo sulla port specificata”

    L'ultima row che hai in là dovrebbe funzionare, devi solo assicurarsi di avere un protocollo in -p, in quanto –dport non funziona come opzione per conto proprio.

     iptables -A INPUT -m iprange --src-range 10.50.10.20-80 -p tcp --dport 12345 -j ACCEPT 

    In alternativa, installa ipset e potrai cambiare l'elenco degli indirizzi IP senza compromettere le tue regole iptables :

     ipset -N AllowedSources ipmap --network 10.50.10.0/24 for i in $LIST_OF_ALLOWED_SOURCES; do ipset -A AllowedSources $i; done iptables -A INPUT -m set --match-set AllowedSources src -p tcp --dport 12345 -j ACCEPT 

    Adesso, se è necessario aggiungere un'altra fonte consentita:

     ipset -A AllowedSources abcd 

    Oppure, è necessario distriggersre un host dalle fonti consentite:

     ipset -D AllowedSources efgh 

    Puoi salvare i tuoi set:

     ipset --save > /etc/ipset.conf 

    Quale è ansible ripristinare durante l'avvio, prima di implementare il tuo iptables (altrimenti, iptables si lamenteranno!):

     ipset --restore < /etc/ipset.conf 

    È anche ansible creare un set IP che corrisponderà alla port di origine IP e destinazione, ad esempio:

     ipset -N AllowedAccess ipporthash --network 10.50.0.0/16 # These hosts may access port 12345 for i in $LIST_OF_ALLOWED_TO_12345; do ipset -A AllowedAccess $i,12345; done # These hosts may access port 23456 for i in $LIST_OF_ALLOWED_TO_23456; do ipset -A AllowedAccess $i,23456; done # These hosts may access port 34567 for i in $LIST_OF_ALLOWED_TO_34567; do ipset -A AllowedAccess $i,34567; done # Now that the IP set has been created, we can use it in iptables iptables -A INPUT -m set --match-set AllowedAccess src,dst -j ACCEPT # Note that we use "src,dst", meaning that we want to match source IP, but # destination port # Also note, if you need to match against a single port, the ipmap method # will be slightly faster. 

    Altro su ipset : http://ipset.netfilter.org/

    Se si utilizza Ubuntu , non è ansible installare il pacchetto ipset dal suo repo. Utilizza il mio suggerimento: http://pepoluan.posterous.com/powertip-howto-install-ipset-on-ubuntu

    Hai l'idea di base giusta, puoi combinarli in una regola come quella.

    Tuttavia, nonostante le risposte di alcune risposte, non si dovrebbe utilizzare un intervallo come 10.50.10.20-80 (si espanderà a 10.50.10.20-80.0.0.0 – utilizzare il command iptables per verificare). È necessario utilizzare l'indirizzo IP completo nell'intervallo ad esempio 10.50.10.20-10.50.10.80.

    Inoltre, se si specifica un numero di port, è necessario dichiarare un protocollo che supporti le porte, quindi la regola riveduta sarebbe:

     iptables -A INPUT -p tcp -m iprange --src-range 10.50.10.20-10.50.10.80 --dport 12345 -j ACCEPT 

    Documentazione su iprange: https://www.frozentux.net/iptables-tutorial/chunkyhtml/x2702.html#TABLE.IPRANGEMATCH

    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.