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:
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.
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.
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.
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, filters, 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:
- Alle verkeer toestaan behalve, of
- 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.
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
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:
ALLE beperkte beleidsregels zijn van toepassing.
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.
Ik hoop dat je deze informatie leuk vond. In de volgende zal ik het hebben over NAT, Proxy en scripts voor Firewal.
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.
Uitstekend artikel. Ik kijk uit naar het tweede deel.
Zeer goede uitleg, het heeft me geholpen de volmacht van mijn werk te begrijpen. Dank je
Hallo Jlcmux,
Uitstekend, ik vond het erg leuk, wanneer is de andere partij beschikbaar?
Groeten en bedankt voor het delen
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.
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.
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.
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.
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.
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!
In Linux kun je natuurlijk virtuele interfaces maken. Als je eth0 hebt, kun je eth0: 0, eth0: 1, eth0: 2 ... enz. Hebben
Zo goed, bedankt voor het delen