Uw netwerk beveiligen met Iptables - Proxy - NAT - IDS: DEEL 1

Dit bericht probeert een beetje te verduidelijken hoe netwerken werken en hoe we onze Linux-apparatuur kunnen veranderen in een router die ons netwerk een beetje veiliger maakt, zowel thuis als op het werk. Dus laten we aan de slag gaan:

Deze inhoud is gebaseerd op het boek "Linux - System Administration and Network Services Operation" - Sébastien BOBILLIER

Routing en filtering

Om over routering te praten en te begrijpen, kunnen we eerst definiëren wat de rol van de router is? Hiervoor kunnen we zeggen dat een router, naast het creëren van een netwerk en het toestaan ​​van verbinding met andere apparatuur (wetende dat we dit kunnen doen met een AP, Switch, Hub of anderen), de mogelijkheid heeft om twee verschillende netwerken met elkaar te verbinden.

router

Zoals we in de afbeelding kunnen zien, is er een lokaal netwerk "10.0.1.0" dat wordt gemaakt door de router en een van zijn twee interfaces bereikt. Dan heeft de router op zijn andere interface een ander netwerk, met zijn openbare IP, waarmee hij verbinding kan maken met internet. De routeringsfunctie is in feite om te dienen als tussenpersoon tussen deze twee netwerken, zodat ze kunnen communiceren.

Linux als router.

Natuurlijk heeft de Linux Kernel al de mogelijkheid om te "doorsturen", maar standaard is het uitgeschakeld, dus als we willen dat onze Linux dit werk doet, moeten we naar het bestand gaan.

/proc/sys/net/ipv4/ip_forward

Daar zullen we zien dat het een bestand is dat alleen een nul "0" bevat, wat we moeten doen is het veranderen in een "1" om dit gedrag te activeren. Dit wordt helaas verwijderd wanneer we de computer opnieuw opstarten, om het standaard geactiveerd te laten, moeten we het commando gebruiken:

sysctl net.ipv4.ip_forward=1

Of bewerk het rechtstreeks in het bestand /etc/sysctl.conf. Afhankelijk van de distributie kan deze configuratie ook in een bestand in  /etc/sysctl.d/.

Standaard moet onze Linux een routeringstabel hebben, wat over het algemeen de configuratie van ons LAN-netwerk en de verbinding met de router is. Als we deze routering willen zien, kunnen we twee opdrachten gebruiken:

route -n

o

netstat -nr

Beide opdrachten zouden hetzelfde moeten retourneren.

Screenshot van 2014-09-30 18:23:06

Over het algemeen is deze configuratie voldoende om uw Linux als gateway te laten dienen en kunnen andere computers door onze computer navigeren. Als we nu willen dat onze Linux twee of meer netwerken verbindt, al dan niet lokaal, kunnen we gebruik maken van statische routes.

Stel dat mijn Linux twee netwerkinterfaces heeft, de eerste heeft een internetverbinding met een netwerk van 172.26.0.0 en de tweede (10.0.0.0) heeft een aantal computers van een ander lokaal netwerk. Als we pakketten naar dat andere netwerk willen sturen, kunnen we gebruik maken van:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

Over het algemeen is het:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

als we geven route -n ongeacht of dit netwerk bestaat of niet, deze routering wordt in onze tabel opgelost.

Screenshot van 2014-09-30 18:31:35

Als we genoemde routering willen elimineren, kunnen we gebruiken

route del -net 10.0.0.0 netmask 255.0.0.0

iptafels.

In principe wordt iptables gebruikt voor het filteren van pakketten, uitgaand, inkomend of andere, dit maakt het een geweldige tool om ons netwerkverkeer te beheren. Welnu, iptables, net zoals het ons in staat stelt om het verkeer van dezelfde computer te filteren, stelt het ons ook in staat om het verkeer dat er doorheen gaat te filteren. (Doorsturen). Iptables kunnen worden onderverdeeld in tabellen, strings en acties.

  • Borden:  in principe kunnen er twee tafels zijn, filter, om pakketten te filteren en  nat om adressen te vertalen, dat wil zeggen om van het ene netwerk naar het andere te gaan.
  • Kettingen: De ketting verwijst naar het type verkeer dat we willen filteren of zwemmen, dat wil zeggen, op welk verkeer gaan we de tabellen toepassen? en ze kunnen zijn:  INVOER: Inkomend verkeer, OUTPUT: uitgaand verkeer of VOORUIT: Verkeer dat er doorheen gaat, maar het is niet zijn eigen verbinding.
  • Het kan ook verschijnen POSTROUTEREN, die wordt gebruikt om het pakket op een bepaalde manier te behandelen nadat het is gerouteerd.
  • acties: Acties zijn in feite de actie die met de ketting moet worden uitgevoerd. Deze actie kan zijn LATEN VALLEN, dat vernietigt gewoon dat verkeer of ACCEPT. waarmee het verkeer die actie kan uitvoeren.

IPTABLES-regels worden opgeslagen en uitgevoerd in de volgorde waarin ze zijn gemaakt, en als een regel een eerdere regel verwijdert, wordt altijd de laatste regel in de volgorde toegepast.

Firewall-beleid.

Over het algemeen werken firewalls van nature op twee manieren:

  1. Alle verkeer toestaan ​​behalve, of
  2. Sta geen verkeer toe behalve ...

Gebruik om beleid toe te passen IPTABLES - P ACTION CHAIN

Waar de string het type verkeer vertegenwoordigt (INPUT, OUTPUT, FORWARD, POSTROUTING ...) en de actie is DROP OR ACCEPT.

Laten we naar een voorbeeld kijken.

Screenshot van 2014-09-30 18:53:23

 

Hier zien we dat ik eerst kon pingen, daarna vertelde ik IPTABLES dat al het OUTPUT-verkeer DROP was of niet was toegestaan. Toen zei ik tegen IPTABLES om het te accepteren.

Als we vanaf nul een firewall gaan bouwen, moeten we altijd de regels toepassen van (Geen verkeer toestaan ​​behalve ... Hiervoor passen we de regels

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Als dit beleid van toepassing is, hebben ze geen enkele verbinding
.

Om terug te keren schrijven we hetzelfde en vervangen we DROP door ACCEPT.

Op dit punt, aangezien al het verkeer wordt geweigerd, beginnen we onze IPTABLES te vertellen welk verkeer het kan hebben.

De syntaxis is:

iptables -A cadena -s ip_orgigen -d ip_destino -p protocolo --dport puerto -j acción

Waar:

String = INPUT, OUTPUT of FORWARD

origin_ip = Oorsprong van de pakketten, dit kan een enkel IP-adres of een netwerk zijn en in dit geval moeten we het masker specificeren).

Destination IP = waar de pakketten naartoe gaan. dit kan een enkel IP-adres of een netwerk zijn en in dit geval moeten we het masker specificeren).

protocol = geeft het protocol aan dat door de pakketten wordt gebruikt (icmp, tcp, udp ...)

poort = bestemmingspoort van het verkeer.

actie = DROP of ACCEPTEER.

voorbeeld:

 

Screenshot van 2014-09-30 19:26:41

ALLE beperkte beleidsregels zijn van toepassing.

Screenshot van 2014-09-30 19:27:42

Vervolgens voegen we de regels toe om verkeer via poort 80 HTTP en 443 HTTPS te kunnen hebben, met het TCP-protocol. Dan poort 53. Het wordt toegepast voor de DNS-client om de domeinen op te lossen, anders navigeert u niet. Dit werkt met udp-protocol.

De lijn:

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

Dit komt door het volgende: Wanneer u bijvoorbeeld een HTTP-verzoek doet, maakt u verbinding met poort 80 van de server, maar de server om de informatie te retourneren, moet via een willekeurige poort verbinding met u maken. (Over het algemeen groter dan 1024).

Aangezien al onze poorten gesloten zijn, zal dit niet worden bereikt tenzij we alle poorten hoger dan 1024 openen (slecht idee). Wat dit zegt, is dat al het inkomende verkeer dat afkomstig is van een verbinding die ik zelf tot stand heb gebracht, wordt geaccepteerd. Ik bedoel, een verbinding die ik in principe ben begonnen.

Als je OUTPUT in de regels zet, is dit alleen van toepassing op de betreffende apparatuur. Als we onze apparatuur als router gebruiken om deze verbindingen mogelijk te maken, moeten we OUTPUT wijzigen in FORWARD. Omdat verkeer door de computer gaat, maar er niet door wordt geïnitieerd
Al deze regels worden verwijderd na het opnieuw opstarten, dus u moet scripts maken zodat ze standaard starten. Maar we zullen dit in de volgende zien

Ik hoop dat je deze informatie leuk vond. In de volgende zal ik het hebben over NAT, Proxy en scripts voor Firewal.


De inhoud van het artikel voldoet aan onze principes van redactionele ethiek. Klik op om een ​​fout te melden hier.

12 reacties, laat de jouwe achter

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.   Rogelio pinto zei

    Dit is de basis die veel ondernemers nemen om hun eigen firewalls te maken, daarom zijn er zoveel merken firewalls met embedded linux op de markt, sommige goed en andere niet zo veel.

  2.   Heber zei

    Uitstekend artikel. Ik kijk uit naar het tweede deel.

  3.   Milton zei

    Zeer goede uitleg, het heeft me geholpen de volmacht van mijn werk te begrijpen. Dank je

  4.   faustod zei

    Hallo Jlcmux,

    Uitstekend, ik vond het erg leuk, wanneer is de andere partij beschikbaar?

    Groeten en bedankt voor het delen

    1.    @Jlcmux zei

      Bedankt voor de opmerking.

      Ik heb het andere deel gisteren gestuurd, in de loop van de dag denk ik dat ze het zullen publiceren.

      Groeten.

  5.   Israël zei

    Zeer goede artikelvriend @ Jlcmux, ik heb echt met hem geleerd, aangezien hij enkele twijfels die ik al een tijdje had opgehelderd, trouwens, je zou het niet erg vinden om het boek van de bron van het artikel te delen, dat van Sébastien BOBILLIER, nou ja, slau2s en nu om het tweede deel te zien, salu2s.

    1.    @Jlcmux zei

      Hallo Bedankt voor het reageren op Israël.

      Het blijkt dat ik het boek in fysieke vorm heb. Maar ik vond deze link op Google Books. http://books.google.com.co/books?id=zxASM3ii4GYC&pg=PA356&lpg=PA356&dq=S%C3%A9bastien+BOBILLIER+Linux+%E2%80%93+Administraci%C3%B3n+del+sistema+y+explotaci%C3%B3n+de+los+servicios+de+red#v=onepage&q=

      Ik denk dat het compleet is.

  6.   Ariel zei

    Zeer goed artikel, ik voeg een vraag toe: wat zou het voordeel zijn van het gebruik van linux als router, als die er is, met betrekking tot hardware die eraan is gewijd? Of is het alleen om te sporten? Ik weet dat er speciale distributies zijn, maar ik weet niet of ze oude pc's moeten redden of meer flexibiliteit bij de configuratie moeten bieden.

    1.    @Jlcmux zei

      Nou, ik denk dat de voor- en nadelen afhangen van het scenario waarin je dit gaat implementeren. Waarom ga je zeker geen UTM of iets dergelijks voor je huis kopen? En misschien voor een klein bedrijf dat het ook niet kan betalen. Het is ook goed als oefening, omdat het u helpt alle logica hiervan te begrijpen en u een speciale FWall beter kunt configureren. Daarnaast is bijna al deze apparaten wat ze echt hebben Embedded Linux.

      Groeten.

  7.   Ariel zei

    Hallo, een vraag, kun je een "kunstmatige" interface in Linux genereren voor vergelijkbare routering tussen netwerken? (packet tracer style) om met virtuele machines te werken? bijv. als ik eth0 heb (omdat ik natuurlijk een enkele kaart heb), kan ik dan eth1 maken om een ​​ander netwerk te maken? Zeer goede tutor!

    1.    elav zei

      In Linux kun je natuurlijk virtuele interfaces maken. Als je eth0 hebt, kun je eth0: 0, eth0: 1, eth0: 2 ... enz. Hebben

  8.   chinoloco zei

    Zo goed, bedankt voor het delen