iptables per neofiti, curiosi, interessati (2a parte)

Quando DesdeLinux Avevo solo pochi mesi e ho scritto un tutorial estremamente semplice da capire su iptables: iptables per neofiti, curiosi, interessati (prima parte) . Usando metafore come confrontare il nostro computer con la nostra casa, il nostro firewall con la porta di casa, così come altri esempi, ho spiegato in modo divertente, senza tanti tecnicismi o concetti complicati, cos'è un firewall, cos'è iptables e come iniziare a usarlo e configurare. Questa è la continuazione, la seconda parte del precedente tutorial di iptables 🙂

Succede che qualche giorno fa utilizzando un AP (Access Point) di Linksys ho messo un Wifi a casa della mia ragazza, anche se la località non è la più informata in termini di tecnologia, cioè non è che ci siano molti pericoli di cracking , è sempre una buona idea avere un'eccellente sicurezza sia nel Wifi che nei computer.

Non commenterò qui la sicurezza del Wifi, poiché non è l'obiettivo del post, mi concentrerò sulla configurazione di iptables che attualmente utilizzo sul mio laptop.

I seguenti comandi vengono eseguiti in un terminale, devono essere eseguiti con i privilegi di amministratore, anteporrò sudo a ogni comando, puoi fare lo stesso o evitare di usare sudo eseguendo i comandi direttamente come root

Nel post precedente avevo spiegato che è necessario in un firewall prima negare tutto il traffico in entrata, per questo:

sudo iptables -P INPUT DROP

Quindi dobbiamo consentire al nostro computer di avere il permesso di inserire i dati:

sudo iptables -A INPUT -i lo -j ACCEPT

Oltre ad accettare pacchetti di richieste che provengono dal nostro computer:

sudo iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

Per una migliore comprensione di queste righe, consiglio di leggere la prima metà dell'articolo precedente: iptables per neofiti, curiosi, interessati (prima parte)

Finora il nostro computer può navigare in Internet senza problemi, ma nessuno da qualsiasi altro ambiente (LAN, Internet, Wifi, ecc.) Potrà accedere al nostro computer in alcun modo. Inizieremo a configurare iptables in base alle nostre esigenze.

Utilizzando ulogd per visualizzare i log di iptables in un altro file:

Per impostazione predefinita i registri di iptables vanno nel registro del kernel, nel registro di sistema o qualcosa del genere ... in Arch per impostazione predefinita, in questo momento non ricordo nemmeno dove vanno, ecco perché uso ulogd in modo che i log di iptables siano in un altro file.

sudo iptables -A INPUT -p tcp -m tcp --tcp-flags FIN,SYN,RST,ACK SYN -j ULOG

Dare accesso al mio server privato:

Non uso VirtualBox o qualcosa di simile per virtualizzare, ho virtualizzato il mio server privato con Qemu + KVM che deve essere in grado di connettersi al mio laptop in quanto tale, con le regole di iptables che ho appena specificato sopra non sarà in grado di farlo, ecco perché devo dare il permesso all'IP del mio server virtuale in modo che possa accedere al mio laptop :

sudo iptables -A INPUT -i virbr0 -p tcp -s 192.168.122.88 -j ACCEPT

Descriveremo in dettaglio questa riga, è importante che tu capisca cosa significa ogni parametro, perché da ora in poi verranno ripetuti molto:

-UN INGRESSO : Sto dicendo che dichiarerò una regola per il traffico in entrata

-io virbr0 : Dichiaro che l'interfaccia attraverso la quale accetterò il traffico non è etho (LAN) o wlan0 (Wifi), dico specificatamente che è la mia interfaccia virbr0, ovvero l'interfaccia di rete virtuale (interna) attraverso la quale comunica il mio laptop con il mio server virtuale (e viceversa)

-p tcp : Specifico il protocollo, i più usati sono UDP e TCP, qui bastava proprio non metterlo ma ... è consuetudine specificare il tipo di protocollo da accettare

-s192.168.122.88 : L'origine, l'origine dei pacchetti. Cioè, la regola si riferisce ai pacchetti che provengono specificamente dall'IP 192.168.122.88

-j ACCETTO : Già qui dico cosa voglio fare con i pacchetti che corrispondono a quanto sopra, in questo caso accetto.

In altre parole, in sintesi, accetterò pacchetti che provengono dall'IP 192.168.122.88, ma nel caso in cui tu voglia inserire pacchetti che provengono da quell'IP MA! Entrano da un'interfaccia che non è virbr0, cioè diciamo che provano a inserire pacchetti dall'IP 192.168.122.88 ma provengono da un computer nella nostra rete Wifi, in tal caso i pacchetti verranno rifiutati. perché? Perché specifichiamo chiaramente che sì, accettiamo pacchetti da 192.168.122.88 sì, ma e solo ma, devono anche entrare dall'interfaccia virbr0 (interfaccia di rete virtuale interna), se i pacchetti provengono da un'altra interfaccia (LAN, RAS, Wifi, ecc.) Quindi non saranno accettati. Specificando l'interfaccia come puoi vedere possiamo restringerla ancora di più, possiamo avere un controllo migliore su ciò che entra (o non entra) nel nostro computer.

Accettare ping da qualsiasi IP del Wi-Fi domestico:

Da un altro computer che si connette al Wifi, se provi a eseguire il ping del mio laptop voglio consentirlo. Motivo? L'idea è anche quella che nelle prossime settimane collegherò alla rete il pc della casa attigua, così la condivisione delle informazioni sarebbe meno complessa, più fluida, quando comincerò a fare dei test per collegare il desktop al Wifi, lo farò è necessario eseguire il ping del mio laptop per verificare la connettività, se il mio laptop non mi esegue il ping, posso pensare che l'AP non funziona o che si è verificato un errore durante l'accesso al Wifi, ecco perché voglio consentire il ping.

sudo iptables -A INPUT -i wlo1 -p icmp -s 192.168.1.0/24 -d 192.168.1.51 -j ACCEPT

-UN INGRESSO : Come prima, mi riferisco al traffico in entrata

-io wlo1 : Simile a prima. Nel caso precedente ho specificato l'interfaccia virtuale, in questo caso specifico un'altra interfaccia, quella del mio wifi: wlo1

-p icmp : Protocollo Icmp, icmp = ping. Cioè, non sto consentendo SSH o qualcosa di simile, consento solo ping (icmp)

-s192.168.1.0/24 : L'origine dei pacchetti, ovvero, purché i pacchetti provengano da un IP 192.168.1. sarà accettato

-d192.168.1.51 : IP di destinazione, ovvero il mio IP.

-j ACCETTO : Indico cosa fare con i pacchetti che corrispondono a quanto sopra, accetto.

Cioè, e per spiegarlo in modo continuo, accetto che mi eseguano un ping (protocollo icmp) la cui destinazione è specificamente il mio IP, purché provengano da un IP come 192.168.1 .__ ma inoltre, non possono venire da qualsiasi interfaccia di rete, devono entrare specificatamente dalla mia interfaccia di rete Wifi (wlo1)

Accetta SSH solo per un IP:

A volte ho bisogno di connettermi SSH dal mio smartphone per controllare il laptop, ecco perché devo consentire l'accesso SSH al mio laptop dagli IP del mio Wifi, per questo:

sudo iptables -A INPUT -i wlo1 -p tcp -s 192.168.1.0/24 -d 192.168.1.51 --dport 22 -j ACCEPT

Da questa riga l'unica cosa che è diversa o che merita di essere evidenziata è: –Dport 22 (Porta SSH che utilizzo)

In altre parole, accetto i tentativi di connessione al mio laptop tramite la porta 22, purché provengano da un IP del mio wifi, devono anche avere il mio IP come destinazione specifica e arrivano anche tramite l'interfaccia wlo1, cioè, quella del mio wifi (non la lan, ecc.)

Consentire loro di visualizzare il tuo sito web:

Non è il mio caso, ma se qualcuno di voi ha un sito Web ospitato e non vuole negare l'accesso a nessuno, ovvero che chiunque da qualsiasi luogo possa accedere a quel sito Web, è molto più semplice di quanto si possa pensare:

sudo iptables -A INPUT -p tcp --dport 80 -j ACCEPT

In altre parole, qui consentono tutto il traffico in entrata (tcp) attraverso la porta 80. Come puoi vedere, non specifico da quale IP o rete consento l'accesso, non specificando un intervallo IP da consentire, iptables presume che io per consentire l'accesso a tutti gli intervalli IP esistenti, cioè a tutto il mondo 🙂

Altre combinazioni:

Ho molte altre regole come, ad esempio, accettare ping per IP dalla mia LAN domestica (per questo è fondamentalmente la stessa linea di sopra, cambiando gli intervalli IP), che è più o meno la stessa che ho appena spiegato sopra .. . nel mio laptop in quanto tale non uso cose veramente complesse, quella del limitatore di connessioni, anti DDoS, lascio quella ai server, sul mio laptop non ne ho bisogno 🙂

Comunque, finora l'articolo.

Come puoi vedere, lavorare con iptables non è affatto complesso, una volta che hai costruito uno script in cui scrivi le tue regole è molto semplice quindi modificalo, aggiungi o rimuovi regole dal tuo firewall.

Non mi considero un esperto in materia tutt'altro, nonostante i dubbi che potresti avere, commentano qui, cercherò di aiutarti il ​​più possibile.

saluti


Lascia un tuo commento

L'indirizzo email non verrà pubblicato. I campi obbligatori sono contrassegnati con *

*

*

  1. Responsabile dei dati: Miguel Ángel Gatón
  2. Scopo dei dati: controllo SPAM, gestione commenti.
  3. Legittimazione: il tuo consenso
  4. Comunicazione dei dati: I dati non saranno oggetto di comunicazione a terzi se non per obbligo di legge.
  5. Archiviazione dati: database ospitato da Occentus Networks (UE)
  6. Diritti: in qualsiasi momento puoi limitare, recuperare ed eliminare le tue informazioni.

  1.   rischio suddetto

    Molto bene, molto ben spiegato, fantastico.
    Adoro questo tipo di post.

    1.    KZKG ^ Gaara suddetto

      Grazie mille per aver commentato 🙂

      Questo post è stato un debito che avevo da tempo, è piacevole e piacevole alla fine poterlo saldare ^ _ ^

      saluti

      1.    FIXOCONN suddetto

        una domanda sei a cuba?
        … Succede che qualche giorno fa utilizzando un AP (Access Point) di Linksys ho messo un Wifi a casa della mia ragazza

        1.    KZKG ^ Gaara suddetto

          Sì, certo, sono nato e vivo a Cuba. perché la domanda?

        2.    Sam burgos suddetto

          @FIXOCONN: Ciao amico e perdona l'offtopic della domanda, ma come definisci Cinnamon affinché appaia come un ambiente desktop nello user-agent? Uso Mint 13 con Cinnamon, ma in nessun modo riesco a far apparire il logo Cinnamon nel mio user-agent ogni volta che commento su questo sito

          Saresti così gentile da passarmi i dettagli del tuo agente utente se non è troppo disturbo? Vorrei sapere che i dati per posizionarli io stesso =)

          Vi lascio una pagina in modo che possiate rivederla e darmi le informazioni. Grazie e amministratori, perdonate il "trolling" (se così potete chiamarlo) da parte mia con queste informazioni -> http://user-agent-string.info/

          1.    KZKG ^ Gaara suddetto

            Aggiungi "Cinnamon" (senza virgolette) a qualsiasi parte di UserAgent, quindi il logo dovrebbe apparire nei commenti futuri 🙂

  2.   Bruno cascio suddetto

    Molto buono il post! molto chiaro 😀

    1.    KZKG ^ Gaara suddetto

      Grazie per la lettura e grazie per il tuo commento 🙂

  3.   valle suddetto

    Grazie, mi aiuta davvero!

  4.   Oscar Granata suddetto

    Ciao, prima di tutto tanti complimenti per il blog, penso sia fantastico.
    Qualcosa che potrebbe essere utile menzionare è che l'opzione per accedere con ULOG non funziona nei sistemi operativi che hanno ulogd2, per questo caso la regola dovrebbe essere:
    sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j NFLOG

    1.    KZKG ^ Gaara suddetto

      Prima di tutto, grazie mille per quello che dici sul blog 🙂

      Ho ulogd v2.0.2-2 installato in Arch e la riga che ho inserito funziona senza problemi (ho dovuto mettere un loglevel = 1 in /etc/ulogd.conf, ma porta i log in un altro file senza problemi.

      Stai usando ulogd v2 o superiore, la linea che ho lasciato funziona male per te?

      Saluti e grazie per il commento.

  5.   Città suddetto

    Stavo sempre aspettando la seconda parte, ricordo quando ho letto la prima (era la mia iniziazione nei firewall). Grazie @ KZKG ^ Gaara, saluti 🙂

    1.    KZKG ^ Gaara suddetto

      Grazie per avermi letto 😀
      E hehe si, ho detto ... questo post era un debito che avevo tanto tempo fa ^ _ ^

  6.   Immagine segnaposto Jose Luis Gonzalez suddetto

    Saluti. Molto buono il post. Sto cercando di configurare le regole di iptables per reindirizzare il traffico da squid a dansguardian e ancora non raggiunge l'obiettivo. Apprezzerei qualche aiuto in questo senso.

    1.    KZKG ^ Gaara suddetto

      iptables per quello? Non è fatto direttamente con gli ACL in Squid?

  7.   senza nome suddetto

    "Ho molte altre regole come .."
    Questo è ciò che chiamo paranoia, ragazzo
    Ancora un po 'e metti un pacchetto di Rotwailer in ogni porta aperta del tuo modem / router 🙂

    1.    KZKG ^ Gaara suddetto

      HAHAHAHAHAHAHAHAHA Sto morendo di risate con i rottwailers hahahaha

  8.   Ivan suddetto

    Saluti amico, capita che ho bisogno di aiuto per configurare IPTables in modo tale da negare l'accesso solo alla porta 80 quando digito l'indirizzo nel browser dei miei nameserver personalizzati, cioè quando ad esempio digito ns1.mydomain.com e ns2.mydomain. com (che sono i miei nameserver) IPtables nega l'accesso alla porta 80 in modo che il browser tenti di caricare la pagina ma dopo un po 'scade e non si carica mai, capita che io abbia già provato con comandi come questo:

    iptables -A INPUT -d ns1.midomini.com -p tcp –dport 80 -j DROP
    iptables -A INPUT -d ns2.midomini.com -p tcp –dport 80 -j DROP

    Ma l'unica cosa che fa è negare l'accesso alla porta 80 in tutti i miei domini (poiché condividono lo stesso IP dell'host virtuale), voglio che sia solo nell'URL dei miei server dei nomi e nell'IP a cui puntano i miei server dei nomi, ovvero, le tabelle IP negano l'accesso alla porta 80 in:

    ns1.midomini.com (Puntamento A) -> 102.887.23.33
    ns2.midomini.com (Puntamento A) -> 102.887.23.34

    e gli IP a cui puntano i server dei nomi

    102.887.23.33
    102.887.23.34

    Un esempio di un'azienda che ha questo sistema è: Dreamhost
    I loro server dei nomi: ns1.dreamhost.com e ns2.dreamhost.com e gli IP a cui puntano non rispondono quando vengono digitati nella barra degli indirizzi del browser

    Grazie mille in anticipo per la vostra attenzione, vorrei molto che mi deste una mano con questo, ne ho davvero bisogno e urgentemente !!

    Buona giornata !!

    1.    KZKG ^ Gaara suddetto

      Ciao Ivan,

      Contattami via e-mail (kzkggaara[at]desdelinux[dot]net) per parlarne con più calma e spiegarlo meglio, domani immancabilmente vi risponderò (oggi sono di passaggio)

      Quello che vuoi fare è semplice, non so perché le righe che mi dici non funzionano per te, dovrebbero, ma devi controllare i log e altre cose che sarebbero troppo lunghe qui intorno.

      Saluti e aspetto la tua email

  9.   neysonv suddetto

    teoricamente con iptables potrei impedire le richieste di disconnessione da programmi come aircrack. Ho ragione ??? Beh farò delle prove ma se mi dici che mi faresti molto piacere XDDD

    1.    KZKG ^ Gaara suddetto

      In teoria penso di sì, ora, non so come si potrebbe fare, non l'ho mai fatto ... ma ripeto, in teoria, penso che potrebbe.

  10.   alex suddetto

    Dopo aver applicato le regole di iptables, è impossibile per me accedere alle cartelle di Windows condivise sulla rete locale. Quale regola devo applicare per risolverlo?
    Grazie.

    1.    KZKG ^ Gaara suddetto

      Quali regole di iptables hai applicato?
      Questa è la seconda parte di "iptables for newbies", hai letto la prima? Chiedo questo per sapere se hai applicato le regole che c'erano nel post precedente

      1.    alex suddetto

        Sì, ho letto entrambe le parti. Per lo script mi ​​baso su un altro post che hai postato sulle regole di avvio con systemd.

        #! / Bin / bash
        # - UTF 8 -

        # Iptables binario
        iptables = »/ usr / bin / iptables»

        buttato fuori ""

        ## Pulisci tabelle ##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo »- Fatto FLUS su iptables» && echo »»

        ## Creazione di log con ULOGD ##
        $ iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j ULOG

        ## Definisci il criterio DROP predefinito ##
        $ iptables -P INPUT DROP
        $ iptables -P CADUTA IN AVANTI
        #echo »- Criterio DROP definito per impostazione predefinita» && echo »»

        ## Consenti tutto a localhost ##
        $ iptables -A INPUT -i lo -j ACCETTA
        $ iptables -A OUTPUT -o lo -j ACCETTA
        #echo »- Tutto consentito per localhost» && echo »»

        ## Consenti di inserire pacchetti di connessioni che ho avviato ##
        $ iptables -A INPUT -m state –state ESTABLISHED, RELATED -j ACCEPT
        #echo »- Pacchetti di connessione consentiti avviati da me» && echo »»

        ha buttato fuori "#############################"
        echo »## IPTABLES CONFIGURATO OK! ## »
        ha buttato fuori "#############################"

        Ho letto su Internet che per samba dovresti avere le seguenti regole nello script:

        $ iptables -A INPUT -p tcp –dport 139 -j ACCEPT
        $ iptables -A INPUT -p tcp –dport 445 -j ACCEPT
        $ iptables -A INPUT -p udp –sport 137 -j ACCEPT
        $ iptables -A INPUT -p udp –dport 137 -j ACCEPT
        $ iptables -A INPUT -p udp –dport 138 -j ACCEPT

        Tuttavia, nemmeno con loro posso vedere i gruppi di lavoro di Windows. : S

      2.    alex suddetto

        Problema risolto. Modifica il gruppo di lavoro e gli host consentono i parametri nel file di configurazione di samba.

  11.   okmanz suddetto

    Ottimo articolo, semplicemente fantastico !!!!
    L'ho appena letto e adoro sia il modo in cui lo spieghi sia l'uso davvero utile di iptables, mi piacerebbe davvero imparare a usarlo in modo più approfondito.
    Saluti e ottimo articolo, spero che pubblichi di più su Iptables! ^^

  12.   LEO suddetto

    Caro;

    Ho un proxy con iptables e una delle mie reti non può eseguire il ping http://www.google.cl per questo motivo ho le porte bloccate e provo in mille modi per aprire le porte e non succede nulla. Se non riesco a eseguire il ping non riesco a connettere Outlook

  13.   Borja suddetto

    Congratulazioni per il post! Molto buona. Ma ho una domanda. A volte l'indirizzo IP che ti viene assegnato sulla rete può cambiare (se è vero che potremmo assegnare un IP al nostro indirizzo MAC), ma c'è la possibilità con Iptables di consentire l'accesso al nostro server tramite SSH tramite indirizzo MAC?

    Spero di essermi spiegato bene.

    Un saluto e vi ringrazio molto!

  14.   Fernando Martin Gan suddetto

    Ciao, sai che avevo un server linux configurato e dopo aver inserito questi comandi ho bloccato tutto e perso l'accesso, potevo recuperare quasi tutto ma mi mancano 2 cose. * Non riesco più ad accedere da un browser web tramite il cname «server» se tramite ip, 10.10.10.5 e d'altra parte non vedo le risorse condivise da Windows Explorer sulla rete, prima di aver inserito \\ server e ha visto tutte le risorse condivise. Spero che tu possa aiutarmi, so che è sciocco ma non sono in grado di risolverlo, grazie

  15.   rugiada suddetto

    Cito testualmente:
    '
    Protocollo icmp, icmp = ping. Cioè, non sto consentendo SSH o qualcosa di simile, consento solo ping (icmp)
    '

    ICMP e PING non sono la stessa cosa. Il ping fa parte del protocollo ICMP, ma non è tutto. Il protocollo ICMP (Internet Control Message Protocol) ha molti più usi, alcuni dei quali con determinati pericoli. E stai accettando tutto il traffico ICMP. Dovresti limitare solo il ping.

    Saludos!

  16.   ozkr suddetto

    Devo fare uno stage ma non capisco molto di iptables, potresti aiutarmi per favore….
    Grazie!!!!!!!