iptables för nybörjare, nyfikna, intresserade (2: a del)

När SinceLinux bara var några månader gammal skrev jag en extremt enkel att förstå handledning om iptables: iptables för nybörjare, nyfikna, intresserade (första delen) . Med metaforer som att jämföra vår dator med vårt hus, vår brandvägg med husets dörr, liksom andra exempel, förklarade jag på ett underhållande sätt utan så många tekniska eller komplicerade koncept, vad är en brandvägg, vad är iptables och hur man börjar använda den och konfigurera. Detta är fortsättningen, den andra delen av föregående iptables-handledning 🙂

Det händer att jag för ett par dagar sedan med hjälp av en Linksys AP (Access Point) satte ett wifi i min flickvän, även om orten inte är den mest kunniga tekniska, det vill säga det är inte så att det finns många faror med sprickbildning, det är alltid En bra idé att ha utmärkt säkerhet både i Wifi och i datorer.

Jag kommer inte att kommentera Wifi-säkerheten här, eftersom det inte är syftet med inlägget, jag kommer att fokusera på iptables-konfigurationen som jag för närvarande använder på min bärbara dator.

Följande kommandon körs i en terminal, de måste köras med administratörsbehörighet, jag kommer att lägga sudo till varje kommando, du kan göra detsamma eller undvika att använda sudo genom att köra kommandona direkt som root

I föregående inlägg hade jag förklarat att det är nödvändigt i en brandvägg att först neka all inkommande trafik, för detta:

sudo iptables -P INPUT DROP

Då måste vi tillåta vår egen dator att ha tillstånd att ange data:

sudo iptables -A INPUT -i lo -j ACCEPT

Förutom att acceptera paket med förfrågningar som härstammar från vår dator:

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

För en bättre förståelse av dessa rader rekommenderar jag att du läser första hälften av föregående artikel: iptables för nybörjare, nyfikna, intresserade (första delen)

Hittills kan vår dator navigera på internet utan problem, men ingen från någon annan miljö (LAN, internet, Wifi, etc.) kommer att kunna komma åt vår dator på något sätt. Vi ska börja konfigurera iptables efter våra behov.

Använda ulogd för att mata ut iptables-loggarna till en annan fil:

Som standard går iptables-loggarna i kärnloggen, systemloggen eller något liknande ... i Arch som standard, just nu kommer jag inte ens ihåg vart de går, det är därför jag använder ulogd så att iptables-loggarna finns i en annan fil.

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

Ge åtkomst till min privata server:

Jag använder inte VirtualBox eller något liknande för att virtualisera, jag har min privata server virtualiserad med Qemu + KVM som måste kunna ansluta till min bärbara dator som sådan, med de iptables-regler som jag precis angav ovan kommer den inte att kunna, det är därför jag måste ge behörighet till min virtuella servers IP så att den kan komma åt min bärbara dator:

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

Vi kommer att detaljera den här raden, det är viktigt att du förstår vad varje parameter betyder, eftersom de kommer att upprepas mycket från och med nu:

-EN INGÅNG : Jag säger att jag ska förklara en regel för inkommande trafik

-i virbr0 : Jag förklarar att gränssnittet genom vilket jag accepterar trafiken inte är etho (LAN) eller wlan0 (Wifi), jag säger specifikt att det är mitt virbr0-gränssnitt, det vill säga det virtuella nätverksgränssnittet (internt) genom vilket min bärbara dator kommunicerar med min virtuella server (och vice versa)

-p tcp : Jag specificerar protokollet, de mest använda är UDP och TCP, här var det verkligen nog att inte lägga detta men ... det är vanligt att ange vilken typ av protokoll som ska accepteras

-s 192.168.122.88 : Källan, källan till paketen. Med andra ord hänvisar regeln till paket som kommer specifikt från IP 192.168.122.88

-j ACCEPTERA : Redan här säger jag vad jag vill göra med paketen som matchar ovanstående, i det här fallet accepterar.

Med andra ord, som en sammanfattning kommer jag att acceptera paket som kommer från IP 192.168.122.88, men om du vill ange paket som kommer från den IP MEN! De går in från ett gränssnitt som inte är virbr0, det vill säga, låt oss säga att de försöker skriva in paket från IP 192.168.122.88 men de kommer från en dator i vårt Wifi-nätverk, om så är fallet kommer paketen att avvisas. Varför? Eftersom vi tydligt anger att ja, accepterar vi paket från 192.168.122.88 ja, men och bara men de måste också ange från virbr0-gränssnittet (internt, virtuellt nätverksgränssnitt), om paketen kommer från ett annat gränssnitt (LAN, RAS, Wifi, etc) då kommer de inte att accepteras. Genom att ange gränssnittet som du kan se kan vi begränsa det ännu mer, vi kan ha bättre kontroll över vad som kommer in (eller inte går in) på vår dator.

Accepterar ping från vilken IP som helst i hemmets Wifi:

Från någon annan dator som ansluter till Wifi, om du försöker pinga min bärbara dator vill jag tillåta det. anledning? Tanken är också att under de närmaste veckorna att länka datorn i huset intill nätverket, så att dela information skulle vara mindre komplex, mer flytande, när jag börjar göra tester för att länka skrivbordet till Wifi måste jag pinga min bärbar dator för att kontrollera anslutning, om min bärbara dator inte pingar tillbaka kan jag tro att AP misslyckas, eller att det uppstod ett fel vid åtkomst till Wifi, det är därför jag vill tillåta ping.

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

-EN INGÅNG : Samma som tidigare, jag hänvisar till inkommande trafik

-Jag vill : Liknar tidigare. I föregående fall specificerade jag det virtuella gränssnittet, i det här fallet specificerar jag ett annat gränssnitt, det för mitt wifi: wlo1

-p icmp : Icmp-protokoll, icmp = ping. Det vill säga att jag inte tillåter SSH eller något liknande, jag tillåter bara ping (icmp)

-s 192.168.1.0/24 : Källan till paketen, det vill säga så länge paketen kommer från en IP 192.168.1.? kommer att accepteras

-d 192.168.1.51 : Destination IP, det vill säga min IP.

-j ACCEPTERA : Jag anger vad jag ska göra med paketen som matchar ovanstående, acceptera.

Det vill säga, och för att förklara detta på ett löpande sätt, accepterar jag att de pingar mig (icmp-protokoll) vars mål är specifikt min IP, så länge de kommer från en IP som 192.168.1 .__ men de kan inte heller komma från något nätverksgränssnitt , de måste ange specifikt från mitt Wifi-nätverksgränssnitt (wlo1)

Acceptera SSH endast för en IP:

Ibland måste jag ansluta SSH från min smartphone för att styra den bärbara datorn, det är därför jag måste tillåta SSH-åtkomst till min bärbara dator från IP-adresserna för min Wifi, för detta:

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

Från den här raden är det enda som är annorlunda eller som förtjänar att markeras: –Dport 22 (SSH-port jag använder)

Med andra ord accepterar jag försök att ansluta till min bärbara dator via port 22, så länge de kommer från en IP på min wifi, måste de också ha min IP som en specifik destination och kommer också genom wlo1-gränssnittet, det vill säga, min wifi (inte lan, etc)

Tillåt dem att se din webbplats:

Det är inte mitt fall, men om någon av er har en värdwebbplats och inte vill neka någon åtkomst, det vill säga att alla från var som helst kan komma åt den webbplatsen är det mycket enklare än man kanske tror:

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

Med andra ord, här tillåter de all inkommande trafik (tcp) genom port 80. Som ni kan se anger jag inte från vilka IP-adresser eller nätverk jag tillåter åtkomst, genom att inte ange ett IP-intervall som ska tillåtas, antar iptables att jag vill ha för att ge åtkomst till alla befintliga IP-intervall, det vill säga till hela världen 🙂

Andra kombinationer:

Jag har många andra regler som till exempel att acceptera ping för IP-adresser från mitt hem-LAN (för detta är det i princip samma rad som ovan, att ändra IP-intervall), vilket är mer av samma som jag just förklarade ovan .. i min bärbara dator som sådan använder jag inte riktigt komplexa saker, det att begränsa anslutningar, anti DDoS, jag lämnar det åt servrarna, på min bärbara dator behöver jag det inte 🙂

Hur som helst, hittills artikeln.

Som du kan se är det inte så komplicerat att arbeta med iptables på något sätt. När du har skapat ett skript där du skriver dina regler är det väldigt enkelt att ändra det, lägga till eller ta bort regler i din brandvägg.

Jag anser mig inte vara en expert i ämnet långt ifrån det, trots alla tvivel du kan ha, kommenterar de här, jag kommer att försöka hjälpa dig så mycket jag kan.

hälsningar


Innehållet i artikeln följer våra principer om redaktionell etik. Klicka på för att rapportera ett fel här.

31 kommentarer, lämna din

Lämna din kommentar

Din e-postadress kommer inte att publiceras.

*

*

  1. Ansvarig för uppgifterna: Miguel Ángel Gatón
  2. Syftet med uppgifterna: Kontrollera skräppost, kommentarhantering.
  3. Legitimering: Ditt samtycke
  4. Kommunikation av uppgifterna: Uppgifterna kommer inte att kommuniceras till tredje part förutom enligt laglig skyldighet.
  5. Datalagring: databas värd för Occentus Networks (EU)
  6. Rättigheter: När som helst kan du begränsa, återställa och radera din information.

  1.   riskerar att sade

    Mycket bra, mycket väl förklarade, bra.
    Jag älskar den här typen av inlägg.

    1.    KZKG ^ Gaara sade

      Tack så mycket för att du kommenterade 🙂

      Det här inlägget var en skuld som jag hade länge, det är trevligt och trevligt i slutändan att kunna betala det ^ _ ^

      hälsningar

      1.    FIXOCONN sade

        en fråga är du på Kuba?
        ... Det händer att jag för ett par dagar sedan använde en Linksys AP (Access Point) satte en Wifi hemma hos min flickvän

        1.    KZKG ^ Gaara sade

          Ja naturligtvis, jag föddes och bor på Kuba. varför frågan?

        2.    Sam burgos sade

          @FIXOCONN: Hej vän och förlåt frågan, men hur definierar du kanel som en skrivbordsmiljö i användaragenten? Jag använder Mint 13 med Cinnamon, men på inget sätt får jag Cinnamon-logotypen att visas i min användaragent varje gång jag kommenterar den här webbplatsen

          Skulle du vara så snäll att skicka mig dina användaragentuppgifter om det inte är för mycket besvär? Jag skulle vilja veta den informationen för att placera den själv =)

          Jag lämnar en sida så att du kan granska den och ge mig informationen. Tack och administratörer, förlåt "trolling" (om du kan kalla det så) från min sida med denna information -> http://user-agent-string.info/

          1.    KZKG ^ Gaara sade

            Lägg till "Kanel" (utan citat) till någon del av UserAgent, då ska logotypen visas i framtida kommentarer 🙂

  2.   Bruno cascio sade

    Mycket bra inlägget! väldigt tydlig 😀

    1.    KZKG ^ Gaara sade

      Tack för att du läste och tack för din kommentar 🙂

  3.   vale sade

    Tack! Det hjälper mig verkligen!

  4.   Oscar Grenada sade

    Hej, först och främst många gratulationer för bloggen, jag tycker att den är jättebra.
    Något som kan vara bra att nämna är att alternativet att logga med ULOG inte fungerar i operativsystem som har ulogd2, i detta fall bör regeln vara:
    sudo iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j NFLOG

    1.    KZKG ^ Gaara sade

      Först och främst tack så mycket för vad du säger om bloggen 🙂

      Jag har installerat ulogd v2.0.2-2 i Arch, och linjen jag satte fungerar utan problem (jag var tvungen att sätta en loglevel = 1 i /etc/ulogd.conf, men det tar loggarna till en annan fil utan problem.

      Använder du ulogd v2 eller högre, fungerar linjen jag lämnade fel för dig?

      Hälsningar och tack för kommentarer.

  5.   Citux sade

    Jag väntade alltid på andra delen, jag kommer ihåg när jag läste den första (det var min initiering i brandväggarna). Tack @ KZKG ^ Gaara, hälsningar 🙂

    1.    KZKG ^ Gaara sade

      Tack för att du läste mig 😀
      Och hehe ja, vad jag sa ... det här inlägget var en skuld som jag hade för länge sedan ^ _ ^

  6.   Platshållarbild för Jose Luis Gonzalez sade

    Hälsningar. Mycket bra inlägget. Jag försöker konfigurera iptables-regler för att omdirigera trafik från bläckfisk till dansguardian och det når fortfarande inte målet. Jag skulle uppskatta lite hjälp i detta avseende.

    1.    KZKG ^ Gaara sade

      iptables för det? Görs det inte direkt med ACL i Squid?

  7.   namnlös sade

    "Jag har många andra regler som .."
    Det här är vad jag kallar paranoia, pojke
    Lite mer och du lägger ett paket Rotwailers i varje öppen port på ditt modem / router 🙂

    1.    KZKG ^ Gaara sade

      HAHAHAHAHAHAHAHAHA Jag dör av skratt med rottwailers hahahaha

  8.   ivan sade

    Hälsningar vän, det händer att jag behöver hjälp med att konfigurera IPTables på ett sådant sätt att det bara nekar åtkomst för port 80 när jag skriver adressen i webbläsaren på mina egna namnservrar, det är när jag till exempel skriver ns1.mydomain.com och ns2.mydomain. com (som är mina namnservrar) IPtables nekar åtkomst till port 80 så att webbläsaren försöker ladda sidan men efter ett tag går den ut och laddas aldrig, det händer att jag redan har försökt med kommandon så här:

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

    Men det enda det gör är att neka tillträde till port 80 i alla mina domäner (eftersom de delar samma IP som Virtual Host), jag vill att det bara ska finnas i mina serverservrar och den IP som min nameservers pekar på, det vill säga IP-tabeller nekar åtkomst till port 80 i:

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

    och IP: erna som namnservrarna pekar på

    102.887.23.33
    102.887.23.34

    Ett exempel på ett företag som har detta system är: Dreamhost
    Deras namnservrar: ns1.dreamhost.com och ns2.dreamhost.com och IP-adresserna de pekar på svarar inte när de skrivs i webbläsarens adressfält

    Tack så mycket i förväg för din uppmärksamhet, jag skulle mycket gärna vilja att du ger mig en hand med detta, jag behöver det verkligen och omgående!

    God dag !!

    1.    KZKG ^ Gaara sade

      Hej Ivan,

      Kontakta mig via e-post (kzkggaara [at] desdelinux [dot] net) för att tala det lugnare och förklara dig bättre, imorgon kommer jag att svara dig (idag är jag i förbi)

      Vad du vill göra är enkelt, jag vet inte varför de linjer du säger mig inte fungerar för dig, de borde, men du måste kontrollera loggar och andra saker som skulle vara för långa här.

      Hälsningar och jag väntar på din e-post

  9.   neysonv sade

    teoretiskt med iptables kunde jag undvika att skickas frånkopplingsförfrågningar från program som aircrack. Jag har rätt ??? Jag ska göra tester, men om du säger att du skulle göra mig väldigt glad XDDD

    1.    KZKG ^ Gaara sade

      I teorin tror jag det, nu vet jag inte hur det kunde göras, jag har aldrig gjort det ... men jag upprepar, i teorin tror jag att det kunde.

  10.   Alex sade

    Efter att ha tillämpat iptables-reglerna är det omöjligt för mig att komma åt delade Windows-mappar i det lokala nätverket. Vilken regel ska jag tillämpa för att fixa den?
    Tack.

    1.    KZKG ^ Gaara sade

      Vilka iptables-regler tillämpade du?
      Detta är den andra delen av "iptables for newbies", läste du den första? Jag ber detta att veta om du tillämpade reglerna som var i föregående inlägg

      1.    Alex sade

        Ja, jag har läst båda delarna. För skriptet baserar jag mig på ett annat inlägg som du publicerade om startregler med systemd.

        #! / Bin / bash
        # - UTF 8 -

        # Binära tabeller
        iptables = »/ usr / bin / iptables»

        kastade ut ""

        ## Rengör tabeller ##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo »- Gjorde FLUS till iptables» && echo »»

        ## Upprätta loggar med ULOGD ##
        $ iptables -A INPUT -p tcp -m tcp –tcp-flags FIN, SYN, RST, ACK SYN -j ULOG

        ## Definiera standard DROP-policy ##
        $ iptables -P INPUT DROP
        $ iptables -P FRAMÅT DROP
        #echo »- DROP-policy definierad som standard» && echo »»

        ## Tillåt allt till localhost ##
        $ iptables -A INPUT -i lo -j ACCEPT
        $ iptables -A OUTPUT -o lo -j ACCEPT
        #echo »- Allt tillåtet för localhost» && echo »»

        ## Tillåt att ange paket med anslutningar som jag initierar ##
        $ iptables -A INPUT -m state –state ESTABLISHED, RELATED -j ACCEPT
        #echo »- Tillåtna anslutningspaket initierade av min» && echo »»

        kastade ut " ##############################"
        eko »## IPTABLES CONFIGURED OK! ## »
        kastade ut " ##############################"

        Jag har läst på internet att för samba ska du ha följande regler i manuset:

        $ 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

        Men inte ens med dem kan jag se Windows-arbetsgrupper. : S

      2.    Alex sade

        Problemet löst. Ändra arbetsgruppen och värdparametrar tillåter parametrar i samba-konfigurationsfilen.

  11.   otkmanz sade

    Utmärkt artikel, bara bra !!!!
    Jag läste det just och jag älskar både hur du förklarar det och den riktigt användbara användningen av iptables, jag skulle verkligen vilja lära mig hur man använder det i större djup.
    Hälsningar och utmärkt artikel, jag hoppas att du publicerar mer om Iptables! ^^

  12.   LEJONET sade

    Kära;

    Jag har en proxy med iptables och ett av mina nätverk kan inte pinga http://www.google.cl av denna anledning har jag portarna blockerade och försöker tusen sätt att öppna portarna och ingenting händer. Om jag inte kan pinga kan jag inte ansluta Outlook

  13.   Borja sade

    Grattis till inlägget! Mycket bra. Men jag har en fråga. Ibland kan IP-adressen som tilldelas dig i nätverket ändras (om det är sant att vi kan tilldela en IP till våra MAC-adresser), men finns det en möjlighet med Iptables att ge åtkomst till vår server via SSH via MAC-adress?

    Jag hoppas att jag har förklarat mig bra.

    Hälsningar, och tack så mycket!

  14.   Fernando Martin Gan sade

    Hej, du vet att jag hade en linux-server konfigurerad och efter att ha lagt dessa kommandon blockerade jag allt och tappade åtkomst, jag kunde återställa nästan allt men jag saknar 2 saker. * Jag kan inte längre komma åt från en webbläsare via cname «server» om jag använder ip, 10.10.10.5 och å andra sidan inte ser de delade resurserna från Windows Explorer i nätverket innan jag sätter \\ server och såg alla delade resurser. Jag hoppas att du kan hjälpa mig, jag vet att det är dumt men jag kan inte lösa det, tack

  15.   tau sade

    Jag citerar ordligt:
    '
    Icmp-protokoll, icmp = ping. Det vill säga att jag inte tillåter SSH eller något liknande, jag tillåter bara ping (icmp)
    '

    ICMP och PING är inte samma sak. Pinging är en del av ICMP-protokollet, men det är inte allt. ICMP-protokollet (Internet Control Message Protocol) har många fler användningsområden, vissa med vissa faror. Och du accepterar all ICMP-trafik. Du måste bara begränsa till ping.

    Saludos!

  16.   ozkr sade

    Jag måste göra en praktikplats men jag förstår inte mycket om iptables, kan du snälla hjälpa mig ...
    tack!!!!!!!