iptables bloccano l'accesso a client IP e mantengono l'accesso LAN

Con l'aumento degli apparecchi che hanno accesso alla networking e il potenziale per l'hacking, voglio bloccare l'indirizzo IP specifico dall'accesso a Internet, ma permettere l'accesso LAN. Ad esempio, utilizzo un telecommand Logitech Harmony per controllare il mio stereo, il satellite e la TV con un button. Posso controllarlo anche con il mio iPad sulla networking locale. Ma non voglio che un hacker gestisca la mia TV, quindi vorrei bloccare l'indirizzo IP assegnato al telecommand armonia con il mio firewall IP Tables.

Ecco lo script corrente che utilizzo per modificare la mia configuration delle tabelle IP. Sta lavorando sulla mia confezione Fedora 20 con 2 tabs di networking. La sezione 6 è where sto tentando di inserire la regola. Tutto il resto sta funzionando come previsto. Sto includendo l'integer script nella speranza che aiuta qualcun altro, anche se non legato alla mia domanda. Dopo tutto, è tutto costruito dalla conoscenza acquisita dalle mie ricerche!

  • I file montati su NFSv4 sono di properties; di 4294967294, corrispondono agli UID e ai GID
  • iptables reindirizzano le porte 80/443 a 8080/8181
  • Come estrarre il nome host da $ (chi sono io)
  • Creare una copia remota del file system del server linux
  • Come submit email con il mio server CentOS?
  • Cosa significa NT_STATUS_BAD_NETWORK_NAME in Samba?

  • #!/bin/sh # # A script for creating an iptables firewall # # # Start by clearing iptables # iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -t nat -X iptables -t mangle -X # # Define our interfaces, Squid IP, and Squid port # WAN="p4p1" LAN="p4p2" SQUIDIP="192.168.10.10" SQUIDPORT="3129" # # Create log files to help troubleshooting. (We can comment out when not needed) # # iptables -A OUTPUT -j LOG # iptables -A INPUT -j LOG # iptables -A FORWARD -j LOG # # Now to create the Routing Firewall # # # (1) Create the default policies (DROP) # iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # # (2) User-defined chain called "okay" for ACCEPTed TCP packets # iptables -N okay iptables -A okay -p tcp --syn -j ACCEPT iptables -A okay -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A okay -p tcp -j DROP # # (3) INPUT rules # ###### (A) Rules for incoming packets from the LAN iptables -A INPUT -p ALL -i $LAN -s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p ALL -i lo -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p ALL -i lo -s 192.168.10.10 -j ACCEPT iptables -A INPUT -p ALL -i lo -s 192.168.1.10 -j ACCEPT iptables -A INPUT -p ALL -i $LAN -d 192.168.10.255 -j ACCEPT ##### (B) Rules for incoming packets from the Internet ###### (i) Packets for established connections iptables -A INPUT -p ALL -d 192.168.1.10 -m state --state ESTABLISHED,RELATED -j ACCEPT ##### (ii) TCP rules ## Opens the server port to any TCP from the internet iptables -A INPUT -p tcp -i $WAN -s 0/0 –dport 22 -j okay ##### (iii) UDP rules ## Opens the server port to any UDP from the internet # iptables -A INPUT -p udp -i $WAN -s 0/0 –dport 53 -j okay ##### (iv) ICMP rules iptables -A INPUT -p icmp -i $WAN -s 0/0 --icmp-tpe 8 -j ACCEPT iptables -A INPUT -p icmp -i $WAN -s 0/0 --icmp-tpe 11 -j ACCEPT # # Creates the router between the 2 ethernet cards to accept the packets we want to forward # iptables -A FORWARD -i $LAN -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # # (5) OUTPUT rules # Only output packets with local addresses (no spoofing) # iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -p ALL -s 192.168.10.10 -j ACCEPT iptables -A OUTPUT -p ALL -s 192.168.1.10 -j ACCEPT # # (6) OUTPUT rule to allow a client LAN access, but DROP internet access # I use this to prevent various home appliances from accessing the internet # iptables -A OUTPUT -s 192.168.10.110 -j DROP # # (7) PREROUTING rules to allow a client to bypass our Squid proxy # (NetFlix works better when it bypasses the proxy) iptables -t nat -A PREROUTING -s 192.168.10.204 -j ACCEPT # BluRay player iptables -t nat -A PREROUTING -s 192.168.10.205 -j ACCEPT # Sony TV # # (8) PREROUTING rules for transparent Squid proxy (also requires changes in the squid configuration file) # (from: http://wiki.squidcache.org/ConfigExamples/Intercept/LinuxRedirect) # iptables -t nat -A PREROUTING -s $SQUIDIP -p tcp --dport 80 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port $SQUIDPORT iptables -t mangle -A PREROUTING -p tcp --dport $SQUIDPORT -j DROP # # (9) POSTROUTING chain rules. SNAT is for static IP, MASQUERADE is for dynamic IP # iptables -t nat -A POSTROUTING -o $WAN -j SNAT --to-source 192.168.1.10 # iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE # # Last, but not least, save the new configuration in /etc/sysconfig/iptables # service iptables save # # EOF # 

    2 Solutions collect form web for “iptables bloccano l'accesso a client IP e mantengono l'accesso LAN”

    Questo non funziona.

     # # (6) OUTPUT rule to allow a client LAN access, but DROP internet access # I use this to prevent various home appliances from accessing the internet # iptables -A OUTPUT -s 192.168.10.110 -j DROP 

    Il motivo per cui non funziona è che la tabella OUTPUT filtra solo il traffico originato dal router piuttosto che passarlo. Vuoi che la regola applicata alla tabella FORWARD così:

     iptables -A FORWARD -s 192.168.10.110 -j DROP 

    Può darsi che non si attacchi per sempre, poiché gli indirizzi IP assegnati ai dispositivi possono cambiare con DHCP. Quindi ti suggerisco di filtrare per indirizzo di mac invece.

    Qualcosa di simile a:

     /sbin/iptables -A PREROUTING -i $LAN -m mac --mac-source ff:ff:ff:ff:ff:ff -j DROP 

    Dove ff:ff:ff:ff:ff:ff è l'indirizzo MAC del tuo telecommand di armonia o di un altro dispositivo da filtrare.

    Nota: come indicato nei commenti, l'indirizzo MAC funziona solo in Layer2. gli esempi che ho visto suggerire quanto sopra dovrebbe funzionare anche se il filter è applicato all'interface LAN. Esaminarlo e far sapere se funziona come previsto.

    Vorrei anche aggiungere:

     # # Creates the router between the 2 ethernet cards to accept the packets we want to forward # iptables -A FORWARD -i $LAN -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT 

    No non crea un router tra due tabs Ethernet. Il routing viene eseguito automaticamente dal kernel quando l'inoltro ip è triggersto.

    Le regole di iptables sopra indicano ACCEPT o consentono i pacchetti originati da $ LAN che passano a qualsiasi interface. E mantenere lo stato in sessioni stabilite / correlate che passano attraverso la catena in arrivo nel router non originato da $ LAN. Perché avrebbe colpito la prima regola e fermato.

    Grazie Matt! Ho pensato che sarebbe stato così facile come questo. Quindi devo usare la regola FORWARD, non l'OUTPUT! Non devo preoccuparmi di cambiare indirizzo IP, poiché questo server fornisce anche DHCP e li assegna agli apparecchi basati su indirizzo MAC. Ma vedo come il tuo suggerimento functionrebbe in uno scenario diverso.

    Per quanto riguarda i commenti di routing … sono un programmatore tagliato e incollato. Ho usato quella parte dello script da quando ho copiato da "The RedHat 8 Bible" molti anni fa, prima che RedHat abbia separato Fedora. Mentre i commenti non erano nello script originale, ho tentato di commentare per la mia comprensione. Il commento effettivo del libro afferma:


    "Le regole della catena FOWARD – Poiché il firewall funziona anche come router, sono necessarie regole FORWARD per limitare il firewall che non passerà tra le due reti (Internet e LAN)"


    Il commento è la mia errata interpretazione di ciò che ho letto. Mie scuse. Ecco lo script corretto con la modifica di Matt a una regola FORWARD. Inoltre, ora è spostato in cima alla sezione FORWARD e ho aggiornato i commenti per riflettere quello che è stato detto nel libro where ho ottenuto lo script originale.

    L'IP desiderato ha ora l'accesso alla networking locale, ma non l'accesso a Internet.

     #!/bin/sh # # A script for creating an iptables firewall # # # Start by clearing iptables # iptables -F iptables -t nat -F iptables -t mangle -F iptables -X iptables -t nat -X iptables -t mangle -X # # Define our interfaces, Squid IP, and Squid port # WAN="p4p1" LAN="p4p2" SQUIDIP="192.168.10.10" SQUIDPORT="3129" # # Create log files to help troubleshooting. Comment out when not needed. # # iptables -A OUTPUT -j LOG # iptables -A INPUT -j LOG # iptables -A FORWARD -j LOG # Turn on ip forwarding in the kernel with: # echo 1 > /proc/sys/net/ipv4/ip_forward # or edit /etc/sysctl.conf and add: "net.ipv4.ip_forward = 1" # ##### Now to create the Routing Firewall # # # (1) Create the default policies (DROP) # iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # # (2) User-defined chain called "okay" for ACCEPTed TCP packets # iptables -N okay iptables -A okay -p tcp --syn -j ACCEPT iptables -A okay -p tcp -m state --state ESTABLISHED,RELATED -j ACCEPT iptables -A okay -p tcp -j DROP # # (3) INPUT rules # ###### (A) Rules for incoming packets from the LAN iptables -A INPUT -p ALL -i $LAN -s 192.168.10.0/24 -j ACCEPT iptables -A INPUT -p ALL -i lo -s 127.0.0.1 -j ACCEPT iptables -A INPUT -p ALL -i lo -s 192.168.10.10 -j ACCEPT iptables -A INPUT -p ALL -i lo -s 192.168.1.10 -j ACCEPT iptables -A INPUT -p ALL -i $LAN -d 192.168.10.255 -j ACCEPT ##### (B) Rules for incoming packets from the Internet ###### (i) Packets for established connetions iptables -A INPUT -p ALL -d 192.168.1.10 -m state --state ESTABLISHED,RELATED -j ACCEPT ##### (ii) TCP rules ## Opens the server port to any TCP from the internet iptables -A INPUT -p tcp -i $WAN -s 0/0 --dport 22 -j okay ##### (iii) UDP rules ## Opens the server port to any UDP from the internet # iptables -A INPUT -p udp -i $WAN -s 0/0 --dport 53 -j okay ##### (iv) ICMP rules iptables -A INPUT -p icmp -i $WAN -s 0/0 --icmp-type 8 -j ACCEPT iptables -A INPUT -p icmp -i $WAN -s 0/0 --icmp-type 11 -j ACCEPT # # (4) FORWARD rules # ##### (A) FORWARD rule to allow a client LAN access, but DROP internet access ##### I use this to prevent various home appliances from accessing the internet # iptables -A FORWARD -s 192.168.10.110 -j DROP ##### (B) Since this firewall is also a router, limit what packets are forwarded ##### between the 2 ethernet cards # iptables -A FORWARD -i $LAN -j ACCEPT iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT # # (5) OUTPUT rules # Only output packets with local addresses (no spoofing) # iptables -A OUTPUT -p ALL -s 127.0.0.1 -j ACCEPT iptables -A OUTPUT -p ALL -s 192.168.10.10 -j ACCEPT iptables -A OUTPUT -p ALL -s 192.168.1.10 -j ACCEPT # # (6) PREROUTING rules to allow a client to bypass our Squid proxy # (NetFlix works better when it bypasses the proxy) iptables -t nat -A PREROUTING -s 192.168.10.204 -j ACCEPT # BluRay player iptables -t nat -A PREROUTING -s 192.168.10.205 -j ACCEPT # Sony TV # # (7) PREROUTING rules for transparent Squid proxy # Also requires changes in the squid configuration file # (from: http://wiki.squid-cache.org/ConfigExamples/Intercept/LinuxRedirect) # iptables -t nat -A PREROUTING -s $SQUIDIP -p tcp --dport 80 -j ACCEPT iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port $SQUIDPORT iptables -t mangle -A PREROUTING -p tcp --dport $SQUIDPORT -j DROP # # (8) POSTROUTING chain rules. SNAT is for static IP, MASQUERADE is for dynamic IP # iptables -t nat -A POSTROUTING -o $WAN -j SNAT --to-source 192.168.1.10 # iptables -t nat -A POSTROUTING -o $WAN -j MASQUERADE # # Last, but not least, save the new configuration in /etc/sysconfig/iptables # service iptables save # # EOF # 
    Suggerimenti per Linux e Windows Server, quali Ubuntu, Centos, Apache, Nginx, Debian e argomenti di rete.