iptables voor nieuwkomers, nieuwsgierig, geïnteresseerd (2e deel)

Wanneer DesdeLinux Ik was nog maar een paar maanden oud en schreef een uiterst eenvoudig te begrijpen tutorial over iptables: iptables voor nieuwkomers, nieuwsgierig, geïnteresseerd (1e deel) . Gebruikmakend van metaforen zoals het vergelijken van onze computer met ons huis, onze firewall met de deur van het huis, en andere voorbeelden, legde ik op een vermakelijke manier uit, zonder zoveel technische details of ingewikkelde concepten, wat is een firewall, wat is iptables en hoe u het kunt gebruiken en configureren. Dit is het vervolg, het 2e deel van de vorige iptables-tutorial 🙂

Het gebeurt dat ik een paar dagen geleden met behulp van een Linksys AP (Access Point) een wifi-verbinding bij het huis van mijn vriendin heb geplaatst, hoewel de plaats niet de meest kennis heeft op het gebied van technologie, dat wil zeggen, het is niet zo dat er veel gevaren zijn om te kraken , is het altijd een goed idee om uitstekende beveiliging te hebben, zowel in wifi als in de computers.

Ik zal hier geen commentaar geven op Wi-Fi-beveiliging, aangezien dit niet het doel van de post is, zal ik me concentreren op de iptables-configuratie die ik momenteel gebruik op mijn laptop.

De volgende opdrachten worden uitgevoerd in een terminal, ze moeten worden uitgevoerd met beheerdersrechten, ik zal sudo aan elke opdracht toevoegen, je kunt hetzelfde doen of het gebruik van sudo vermijden door de opdrachten rechtstreeks als root uit te voeren

In de vorige post had ik al uitgelegd dat het in een firewall noodzakelijk is om eerst al het inkomende verkeer te weigeren, hiervoor:

sudo iptables -P INPUT DROP

Dan moeten we onze eigen computer toestemming geven om gegevens in te voeren:

sudo iptables -A INPUT -i lo -j ACCEPT

Naast het accepteren van pakketten met verzoeken die afkomstig zijn van onze computer:

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

Voor een beter begrip van deze regels raad ik aan de eerste helft van het vorige artikel te lezen: iptables voor nieuwkomers, nieuwsgierig, geïnteresseerd (1e deel)

Tot dusverre kan onze computer zonder problemen op internet navigeren, maar niemand uit een andere omgeving (LAN, internet, wifi, enz.) Zal op welke manier dan ook toegang hebben tot onze computer. We gaan iptables configureren volgens onze behoeften.

Ulogd gebruiken om de iptables-logboeken naar een ander bestand te sturen:

Standaard gaan de iptables-logboeken in de kernel, het systeemlogboek of iets dergelijks ... standaard in Arch, op dit moment weet ik niet eens meer waar ze naartoe gaan, daarom gebruik ik ulogd zodat de iptables-logboeken in een ander bestand staan.

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

Toegang geven tot mijn privéserver:

Ik gebruik geen VirtualBox of iets vergelijkbaars met virtualiseren, ik heb mijn privéserver gevirtualiseerd Qemu + KVM die als zodanig verbinding moet kunnen maken met mijn laptop, met de iptables-regels die ik zojuist hierboven heb gespecificeerd, zal het niet kunnen, daarom moet ik toestemming geven aan het IP van mijn virtuele server zodat deze toegang heeft tot mijn laptop :

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

We gaan deze regel in detail uitwerken, het is belangrijk dat je begrijpt wat elke parameter betekent, omdat ze vanaf nu veel zullen worden herhaald:

-EEN INGANG : Ik zeg dat ik een regel ga declareren voor inkomend verkeer

-ik virbr0 : Ik verklaar dat de interface waarmee ik het verkeer accepteer niet etho (LAN) of wlan0 (Wifi) is, ik zeg specifiek dat het mijn virbr0-interface is, dat wil zeggen de virtuele netwerkinterface (intern) waarmee mijn laptop communiceert mijn virtuele server (en vice versa)

-p tcp : Ik specificeer het protocol, de meest gebruikte zijn UDP en TCP, hier was het echt genoeg om dit niet te zeggen, maar ... het is gebruikelijk om het type protocol te specificeren dat moet worden geaccepteerd

-s 192.168.122.88 : De bron, bron van de pakketten. Met andere woorden, de regel verwijst naar pakketten die specifiek afkomstig zijn van het IP 192.168.122.88

-j ACCEPTEREN : Hier al zeg ik wat ik wil doen met de pakketten die overeenkomen met het bovenstaande, in dit geval accepteren.

Met andere woorden, als een samenvatting, zal ik pakketten accepteren die afkomstig zijn van het IP 192.168.122.88, maar voor het geval je pakketten wilt invoeren die van dat IP komen MAAR! Ze komen binnen via een interface die niet virbr0 is, dat wil zeggen, laten we zeggen dat ze pakketten proberen in te voeren vanaf het IP 192.168.122.88, maar ze zijn afkomstig van een computer in ons wifi-netwerk, als dat het geval is, worden de pakketten geweigerd. waarom? Omdat we duidelijk specificeren dat ja, we accepteren pakketten van 192.168.122.88 ja, maar alleen maar, ze moeten ook binnenkomen vanuit de virbr0-interface (interne, virtuele netwerkinterface), als de pakketten afkomstig zijn van een andere interface (LAN, RAS, Wifi, etc) dan worden ze niet geaccepteerd. Door de interface te specificeren, zoals u kunt zien, kunnen we deze nog meer beperken, we kunnen een betere controle hebben over wat onze computer binnenkomt (of niet binnenkomt).

Ping accepteren vanaf elk IP-adres van de wifi thuis:

Vanaf een andere computer die verbinding maakt met wifi, wil ik dit toestaan ​​als je mijn laptop probeert te pingen. reden? Het idee is ook dat ik in de komende weken de pc in het huis naast het netwerk moet koppelen, zodat het delen van informatie minder complex en vloeiender zou zijn. Als ik tests ga doen om de desktop aan wifi te koppelen, moet ik mijn pc pingen. laptop om de connectiviteit te controleren, als mijn laptop me niet terug pingt, kan ik denken dat het AP defect is, of dat er een fout is opgetreden bij het openen van de wifi, daarom wil ik de ping toestaan.

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

-EEN INGANG : Hetzelfde als voorheen, ik verwijs naar inkomend verkeer

-ik wlo1 : Net als voorheen. In het vorige geval specificeerde ik de virtuele interface, in dit geval specificeer ik een andere interface, die van mijn wifi: wlo1

-p icm : Icmp-protocol, icmp = ping. Dat wil zeggen, ik sta geen SSH of iets dergelijks toe, ik sta alleen ping (icmp) toe

-s 192.168.1.0/24 : De bron van de pakketten, dat wil zeggen, zolang de pakketten afkomstig zijn van een IP 192.168.1.? zal worden geaccepteerd

-d 192.168.1.51 : Destination IP, dat wil zeggen, mijn IP.

-j ACCEPTEREN : Ik geef aan wat te doen met de pakketten die overeenkomen met het bovenstaande, accepteren.

Dat wil zeggen, en om dit op een lopende manier uit te leggen, accepteer ik dat ze me pingen (icmp-protocol) waarvan de bestemming specifiek mijn IP is, zolang ze maar afkomstig zijn van een IP zoals 192.168.1 .__ maar ze kunnen ook niet komen vanaf elke netwerkinterface moeten ze specifiek invoeren vanuit mijn wifi-netwerkinterface (wlo1)

Accepteer SSH alleen voor één IP:

Soms moet ik verbinding maken via SSH vanaf mijn smartphone om de laptop te bedienen, daarom moet ik SSH-toegang tot mijn laptop toestaan ​​vanaf de IP's van mijn wifi, hiervoor:

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

Van deze regel is het enige dat anders is of dat het verdient om benadrukt te worden: –Doorvoer 22 (SSH-poort die ik gebruik)

Met andere woorden, ik accepteer pogingen om via poort 22 verbinding te maken met mijn laptop, zolang ze afkomstig zijn van een IP van mijn wifi, ze ook mijn IP als een specifieke bestemming moeten hebben en ook via de wlo1-interface moeten komen, dat wil zeggen, die van mijn wifi (niet de lan, enz.)

Ze toestaan ​​uw website te bekijken:

Dat is niet mijn geval, maar als iemand van jullie een gehoste website heeft en niemand de toegang wil ontzeggen, dat wil zeggen dat iedereen van waar dan ook toegang heeft tot die website, is dat veel eenvoudiger dan je misschien denkt:

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

Met andere woorden, hier staan ​​ze al het inkomende verkeer (tcp) toe via poort 80. Zoals je kunt zien, specificeer ik niet vanaf welke IP's of welk netwerk ik toegang toesta, door geen IP-bereik op te geven om toe te staan, gaat iptables ervan uit dat ik dat wil om toegang te geven tot alle bestaande IP-bereiken, dat wil zeggen tot de hele wereld 🙂

Andere combinaties:

Ik heb veel andere regels, zoals, bijvoorbeeld, ping accepteren voor IP's van mijn thuis-LAN (hiervoor is het in feite dezelfde regel als hierboven, waarbij de IP-bereiken worden gewijzigd), wat meer van hetzelfde is dat ik zojuist hierboven heb uitgelegd ... in mijn laptop als zodanig gebruik ik niet echt complexe dingen, die van het beperken van verbindingen, anti DDoS, dat laat ik voor de servers, op mijn laptop heb ik het niet nodig 🙂

Hoe dan ook, tot nu toe het artikel.

Zoals je kunt zien, is het werken met iptables op geen enkele manier zo ingewikkeld, als je eenmaal een script hebt gebouwd waarin je je regels schrijft, is het heel eenvoudig om het vervolgens te wijzigen, regels toe te voegen of te verwijderen aan je firewall.

Ik beschouw mezelf niet als een expert op dit gebied, verre van dat, ondanks alle vragen die u heeft, zij reageren hier, ik zal proberen u zo goed mogelijk te helpen.

groeten


Laat je reactie achter

Uw e-mailadres wordt niet gepubliceerd. Verplichte velden zijn gemarkeerd met *

*

*

  1. Verantwoordelijk voor de gegevens: Miguel Ángel Gatón
  2. Doel van de gegevens: Controle SPAM, commentaarbeheer.
  3. Legitimatie: uw toestemming
  4. Mededeling van de gegevens: De gegevens worden niet aan derden meegedeeld, behalve op grond van wettelijke verplichting.
  5. Gegevensopslag: database gehost door Occentus Networks (EU)
  6. Rechten: u kunt uw gegevens op elk moment beperken, herstellen en verwijderen.

  1.   riskeren zei

    Heel goed, heel goed uitgelegd, geweldig.
    Ik hou van dit soort berichten.

    1.    KZKG ^ Gaara zei

      Heel erg bedankt voor je reactie 🙂

      Dit bericht was een schuld die ik al heel lang had, het is uiteindelijk prettig en prettig om het af te kunnen betalen ^ _ ^

      groeten

      1.    FIXOCONN zei

        een vraag ben je in cuba?
        … Het gebeurt dat ik een paar dagen geleden met behulp van een Linksys AP (Access Point) een wifi-verbinding bij mijn vriendin thuis heb geplaatst

        1.    KZKG ^ Gaara zei

          Ja natuurlijk, ik ben geboren en woon in Cuba. vanwaar de vraag?

        2.    Sam Burgos zei

          @FIXOCONN: Hallo vriend en vergeef me de off-topic van de vraag, maar hoe definieer je Cinnamon om te verschijnen als een desktopomgeving in de user-agent? Ik gebruik Mint 13 met Cinnamon, maar ik krijg op geen enkele manier het Cinnamon-logo in mijn user-agent telkens wanneer ik op deze site reageer

          Zou u zo vriendelijk willen zijn mij uw user-agentgegevens door te geven als het niet teveel moeite is? Ik zou graag die gegevens willen weten om het zelf te plaatsen =)

          Ik laat een pagina voor je achter zodat je deze kunt bekijken en mij de informatie kunt geven. Bedankt en admins, vergeef het "trollen" (als je het zo mag noemen) van mijn kant met deze informatie -> http://user-agent-string.info/

          1.    KZKG ^ Gaara zei

            Voeg "Cinnamon" (zonder de aanhalingstekens) toe aan een deel van de UserAgent, dan zou het logo in toekomstige commentaren moeten verschijnen 🙂

  2.   Bruno cascio zei

    Heel goed de post! heel duidelijk 😀

    1.    KZKG ^ Gaara zei

      Bedankt voor het lezen en bedankt voor je reactie 🙂

  3.   dal zei

    Bedankt, het helpt me echt enorm!

  4.   Oscar Grenada zei

    Hallo, allereerst veel felicitaties voor de blog, ik vind het geweldig.
    Iets dat misschien goed is om te vermelden, is dat de optie om in te loggen met ULOG niet werkt in besturingssystemen met ulogd2, in dit geval zou de regel moeten zijn:
    sudo iptables -A INPUT -p tcp -m tcp –tcp-vlaggen FIN, SYN, RST, ACK SYN -j NFLOG

    1.    KZKG ^ Gaara zei

      Allereerst heel erg bedankt voor wat je zegt over de blog 🙂

      Ik heb ulogd v2.0.2-2 geïnstalleerd in Arch, en de regel die ik heb geplaatst werkt zonder problemen (ik moest een loglevel = 1 in /etc/ulogd.conf plaatsen, maar het brengt de logs zonder problemen naar een ander bestand.

      Gebruikt u ulogd v2 of hoger, werkt de lijn die ik heb achtergelaten verkeerd voor u?

      Groeten en bedankt voor je reactie.

  5.   Stad zei

    Ik wachtte altijd op het tweede deel, weet ik nog toen ik het eerste las (het was mijn inwijding in de firewalls). Bedankt @ KZKG ^ Gaara, groeten 🙂

    1.    KZKG ^ Gaara zei

      Bedankt voor het lezen 😀
      En hehe ja, ik zei ... dit bericht was een schuld die ik lang geleden had ^ _ ^

  6.   Tijdelijke afbeelding voor Jose Luis Gonzalez zei

    Vriendelijke groeten. Heel goed de post. Ik probeer iptables-regels te configureren om verkeer van inktvis naar dansguardian om te leiden en het bereikt het doel nog steeds niet. Ik zou hierbij wat hulp op prijs stellen.

    1.    KZKG ^ Gaara zei

      iptables voor dat? Wordt dat niet rechtstreeks gedaan met ACL's in Squid?

  7.   naamloos zei

    "Ik heb veel andere regels zoals .."
    Dit is wat ik paranoia noem, jongen
    Nog een beetje en je stopt een pakje Rotwailer's in elke open poort van je modem / router 🙂

    1.    KZKG ^ Gaara zei

      HAHAHAHAHAHAHAHAHA Ik sterf van het lachen met de rottjagers hahahaha

  8.   Ivan zei

    Gegroet vriend, het komt voor dat ik hulp nodig heb om IPTables zo te configureren dat het alleen toegang voor poort 80 weigert wanneer ik het adres typ in de browser van mijn aangepaste naamservers, dat wil zeggen, wanneer ik bijvoorbeeld ns1.mijndomein typ. en ns2.mydomain. com (dat zijn mijn naamservers) IPtables weigeren toegang tot poort 80 zodat de browser probeert de pagina te laden, maar na een tijdje verloopt het en laadt het nooit, het gebeurt dat ik het al geprobeerd heb met commando's als deze:

    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

    Maar het enige dat het doet, is de toegang tot poort 80 in al mijn domeinen weigeren (aangezien ze hetzelfde IP-adres delen als Virtual Host), ik wil dat het alleen in de url van mijn naamservers staat en het IP waarnaar mijn naamservers verwijzen, dat wil zeggen, IP-tabellen weigeren toegang tot poort 80 in:

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

    en de IP-adressen waarnaar de naamservers verwijzen

    102.887.23.33
    102.887.23.34

    Een voorbeeld van een bedrijf met dit systeem is: Dreamhost
    Hun naamservers: ns1.dreamhost.com en ns2.dreamhost.com en de IP-adressen waarnaar ze verwijzen, reageren niet wanneer ze in de adresbalk van de browser worden getypt

    Bij voorbaat hartelijk dank voor je aandacht, ik zou heel graag willen dat je me hiermee een handje helpt, ik heb het echt nodig en met spoed!

    Goede dag !!

    1.    KZKG ^ Gaara zei

      Hallo Ivan,

      Neem contact met mij op via e-mail (kzkggaara[at]desdelinux[dot]net) om er rustiger over te praten en het beter uit te leggen, morgen zal ik je zeker antwoorden (vandaag kom ik langs)

      Wat je wilt doen is simpel, ik weet niet waarom de regels die je me vertelt niet voor jou werken, dat zouden ze wel moeten doen, maar je moet logboeken en andere dingen controleren die hier te lang zouden zijn.

      Groeten en ik wacht op uw e-mail

  9.   neysonv zei

    theoretisch zou ik met iptables kunnen voorkomen dat ik ontkoppelingsverzoeken van programma's als aircrack zou ontvangen. Ik heb gelijk??? Nou, ik zal testen doen, maar als je me vertelt dat je me heel gelukkig zou maken XDDD

    1.    KZKG ^ Gaara zei

      In theorie denk ik van wel, nu weet ik niet hoe het zou kunnen worden gedaan, ik heb het nog nooit gedaan ... maar ik herhaal, in theorie denk ik dat het zou kunnen.

  10.   Alex zei

    Na het toepassen van de iptables-regels is het voor mij onmogelijk om toegang te krijgen tot gedeelde Windows-mappen op het lokale netwerk. Welke regel moet ik toepassen om het probleem op te lossen?
    Dank u.

    1.    KZKG ^ Gaara zei

      Welke iptables-regels heb je toegepast?
      Dit is het tweede deel van "iptables for newbies", heb je het eerste gelezen? Ik vraag dit om te weten of je de regels hebt toegepast die in het vorige bericht stonden

      1.    Alex zei

        Ja, ik heb beide delen gelezen. Voor het script baseer ik me op een ander bericht dat je hebt gepost over startregels met systemd.

        #! / Bin / bash
        # - UTF 8 -

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

        gooide uit ""

        ## Schone tafels ##
        $ iptables -F
        $ iptables -X
        $ iptables -Z
        #echo »- FLUS gemaakt naar iptables» && echo »»

        ## Logboeken aanmaken met ULOGD ##
        $ iptables -A INPUT -p tcp -m tcp –tcp-vlaggen FIN, SYN, RST, ACK SYN -j ULOG

        ## Standaard DROP-beleid definiëren ##
        $ iptables -P INPUT DROP
        $ iptables -P FORWARD DROP
        #echo »- DROP-beleid standaard gedefinieerd» && echo »»

        ## Sta alles toe aan localhost ##
        $ iptables -A INPUT -i lo -j ACCEPTEREN
        $ iptables -A OUTPUT -o lo -j ACCEPTEREN
        #echo »- Alles toegestaan ​​voor localhost» && echo »»

        ## Toestaan ​​om pakketten met verbindingen in te voeren die ik start ##
        $ iptables -A INPUT -m state –state GEVESTIGD, GERELATEERD -j ACCEPT
        #echo »- Toegestane verbindingspakketten geïnitieerd door mijn» && echo »»

        gooide uit " ##############################"
        echo »## IPTABLES GECONFIGUREERD OK! ## »
        gooide uit " ##############################"

        Ik heb op internet gelezen dat je voor samba de volgende regels in het script zou moeten hebben:

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

        Maar zelfs bij hen kan ik Windows-werkgroepen niet zien. : S.

      2.    Alex zei

        Probleem opgelost. Wijzig de werkgroep en hosts toestaan ​​parameters in het samba-configuratiebestand.

  11.   otkmanz zei

    Uitstekend artikel, gewoon geweldig !!!!
    Ik heb het net gelezen en ik hou van zowel de manier waarop je het uitlegt als het echt nuttige gebruik van iptables, ik zou heel graag willen leren hoe je het dieper kunt gebruiken.
    Groeten en uitstekend artikel, ik hoop dat je meer over Iptables publiceert! ^^

  12.   LEO zei

    Lieve;

    Ik heb een proxy met iptables en een van mijn netwerken kan niet pingen http://www.google.cl om deze reden heb ik de poorten geblokkeerd en duizend manieren geprobeerd om de poorten te openen en gebeurt er niets. Als ik niet kan pingen, kan ik geen Outlook verbinden

  13.   Borja zei

    Gefeliciteerd met de post! Zeer goed. Maar ik heb een vraag. Soms kan het IP-adres dat aan u is toegewezen op het netwerk veranderen (als het waar is dat we een IP-adres kunnen toewijzen aan ons MAC-adres), maar is er een mogelijkheid met Iptables om toegang tot onze server toe te staan ​​via SSH op MAC-adres?

    Ik hoop dat ik mezelf goed heb uitgelegd.

    Groeten en veel dank!

  14.   Fernando MartinGan zei

    Hallo, je weet dat ik een linux-server had geconfigureerd en nadat ik deze commando's had geplaatst, blokkeerde ik alles en verloor ik de toegang, ik kon bijna alles herstellen, maar ik mis 2 dingen. * Ik heb geen toegang meer via een webbrowser via de cname «server» als ik op ip, 10.10.10.5 ben en aan de andere kant zie ik de gedeelde bronnen van de Windows Verkenner niet op het netwerk, voordat ik \\ server en Ik zag alle gedeelde bronnen. Ik hoop dat je me kunt helpen, ik weet dat het gek is, maar ik kan het niet oplossen, bedankt

  15.   Uw zei

    Ik citeer letterlijk:
    '
    Icmp-protocol, icmp = ping. Dat wil zeggen, ik sta geen SSH of iets dergelijks toe, ik sta alleen ping (icmp) toe
    '

    ICMP en PING zijn niet hetzelfde. Pingen is een onderdeel van het ICMP-protocol, maar het is niet alles. Het ICMP-protocol (Internet Control Message Protocol) kent veel meer toepassingen, waarvan sommige met bepaalde gevaren. En u accepteert al het ICMP-verkeer. U hoeft zich alleen te beperken tot ping.

    Saludos!

  16.   ozkr zei

    Ik moet stage lopen maar ik begrijp niet veel van iptables, kun je me alsjeblieft helpen….
    bedankt!!!!!!!