Sikre nettverket ditt med Iptables - Proxy - NAT - IDS: DEL 1

Dette innlegget prøver å avklare litt om hvordan nettverk fungerer og hvordan vi kan gjøre Linux-utstyret vårt til en ruter som sikrer litt mer nettverket vårt, enten det er hjemme eller til og med for virksomheten. Så la oss komme i gang:

Dette innholdet er basert på boka "Linux - System Administration and Network Services Operation" - Sébastien BOBILLIER

Routing og filtrering

For å snakke og forstå om ruting kan vi først definere hvilken rolle ruteren har? For dette kan vi si at en ruter, i tillegg til å opprette et nettverk og tillate forbindelse med annet utstyr (vel vitende om at vi kan gjøre dette med en AP, Switch, Hub eller andre) har muligheten til å koble to forskjellige nettverk til hverandre.

router

Som vi kan se på bildet, er det et lokalt nettverk "10.0.1.0" som er opprettet av ruteren, og når et av de to grensesnittene. Deretter har ruteren på det andre grensesnittet et annet nettverk med sin offentlige IP som den kan koble seg til Internett med. Rutefunksjonen er i utgangspunktet å fungere som et mellomledd mellom disse to nettverkene slik at de kan kommunisere.

Linux som en ruter.

Naturligvis har Linux-kjernen allerede muligheten til å "videresende", men som standard er den deaktivert, så hvis vi vil at Linux skal gjøre dette arbeidet, må vi gå til filen.

/proc/sys/net/ipv4/ip_forward

Der vil vi finne at det er en fil som bare inneholder null "0". Det vi må gjøre er å endre den til en "1" for å aktivere denne oppførselen. Dette blir dessverre slettet når vi starter datamaskinen på nytt, for å la den være aktivert som standard må vi bruke kommandoen:

sysctl net.ipv4.ip_forward=1

Eller rediger den direkte i filen /etc/sysctl.conf. Avhengig av distribusjon kan denne konfigurasjonen også være i en fil i  /etc/sysctl.d/.

Som standard må Linux ha en rutetabell, som vanligvis er konfigurasjonen av LAN-nettverket og tilkoblingen til ruteren. Hvis vi vil se denne rutingen, kan vi bruke to kommandoer:

route -n

o

netstat -nr

Begge kommandoene skal returnere det samme.

Skjermbilde fra 2014-09-30 18:23:06

Generelt er denne konfigurasjonen nok for at Linux skal fungere som en gateway, og andre datamaskiner kan navigere gjennom datamaskinen vår. Nå, hvis vi ønsker at Linux skal koble til to eller flere nettverk, enten det er lokalt eller ikke, kan vi bruke statiske ruter.

Anta at Linux har to nettverksgrensesnitt, den første har en Internett-tilkobling hvis nettverk er 172.26.0.0 og den andre (10.0.0.0) har noen datamaskiner fra et annet lokalt nettverk. Hvis vi vil rute pakker til det andre nettverket, kan vi bruke:

route add -net 10.0.0.0 netmask 255.0.0.0 gw 172.26.0.8

Generelt er det:

route add -net REDDESTINO netmask MASCARA gw IPDELLINUX

hvis vi gir rute -n uansett om dette nettverket eksisterer eller ikke, vil denne rutingen bli løst i tabellen vår.

Skjermbilde fra 2014-09-30 18:31:35

Hvis vi vil eliminere rutingen vi kan bruke

route del -net 10.0.0.0 netmask 255.0.0.0

iptables.

I utgangspunktet brukes iptables til å filtrere pakker, utgående, innkommende eller andre, dette gjør det til et flott verktøy for å håndtere nettverkstrafikken vår. Vel, iptables, akkurat som det lar oss filtrere trafikken fra samme datamaskin, lar den oss også filtrere trafikken som går gjennom den. (Videresending). Iptables kan deles inn i tabeller, kjeder og handlinger.

  • Tavler:  i utgangspunktet kan det være to bord, filtre, å filtrere pakker og  nat å oversette adresser, det vil si å flytte fra ett nettverk til et annet.
  • Kjeder: Kjeden viser til hvilken type trafikk vi vil filtrere eller svømme, det vil si hvilken trafikk skal vi bruke tabellene? og de kan være:  INPUT: Innkommende trafikk, PRODUKSJON: utgående trafikk eller FRAMOVER: Trafikk som går gjennom den, men det er ikke en riktig forbindelse.
  • Det kan også vises ETTER-RUTING, som brukes til å behandle pakken på en bestemt måte etter at den er rutet.
  • handlinger: Handlinger er i utgangspunktet handlingen som skal utføres med kjeden. Denne handlingen kan være MISTE, som bare ødelegger den trafikken eller AKSEPTERER. som tillater trafikk å gjøre en slik handling.

IPTABLES-regler lagres og kjøres i rekkefølgen de ble opprettet, og hvis en regel sletter en tidligere regel, blir alltid den siste regelen i rekkefølgen brukt.

Brannmurpolicyer.

Generelt fungerer brannmurer naturlig på to måter:

  1. Tillat all trafikk unntatt, eller
  2. Ikke tillat trafikk unntatt ...

For å bruke retningslinjer, bruk IPTABLES - P HANDLINGSKJEDE

Der strengen representerer typen trafikk (INNGANG, UTGANG, VIDERE, FORGANG ...) og handlingen er DROP ELLER ACCEPT.

La oss se på et eksempel.

Skjermbilde fra 2014-09-30 18:53:23

Her ser vi at jeg først kunne pinge, så sa jeg til IPTABLES at all utgangstrafikk var DROP eller ikke tillatt. Så ba jeg IPTABLES godta det.

Hvis vi skal bygge en brannmur fra bunnen av, må vi alltid bruke reglene for (Ikke tillat trafikk unntatt ... For dette, så bruker vi reglene

iptables -P INPUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP
Hvis disse retningslinjene gjelder, vil de ikke ha noen form for tilkobling
.

For å returnere skriver vi det samme og erstatter DROP med ACCEPT.

På dette punktet, siden all trafikk er nektet, begynner vi å fortelle våre IPTABLES hvilken trafikk den kan ha.

Syntaksen er:

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

Hvor:

Streng = INNGANG, UTGANG eller FRAMÅT

origin_ip = Opprinnelsen til pakkene, dette kan være en enkelt IP eller et nettverk, og i dette tilfellet må vi spesifisere masken).

destinasjon_ip = hvor pakkene skal. dette kan være en enkelt IP eller et nettverk, og i dette tilfellet må vi spesifisere masken).

protokollen = indikerer protokollen som brukes av pakkene (icmp, tcp, udp ...)

port = destinasjonsporten for trafikken.

handling = DROP eller ACCEPT.

Eksempel:

Skjermbilde fra 2014-09-30 19:26:41

ALLE begrensede retningslinjer gjelder.

Skjermbilde fra 2014-09-30 19:27:42

Deretter legger vi til reglene for å kunne ha trafikk gjennom port 80 HTTP og 443 HTTPS, med TCP-protokollen. Deretter port 53 Det brukes for DNS-klienten for å løse domenene, ellers navigerer du ikke. Dette fungerer med udp-protokoll.

Køen:

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

Det er på grunn av følgende: Når du for eksempel ber om en HTTP-forespørsel, kobler du til port 80 på serveren, men serveren for å returnere informasjonen må koble deg gjennom hvilken som helst port. (Vanligvis større enn 1024).

Siden alle våre porter er stengt, vil dette ikke oppnås med mindre vi åpner alle porter høyere enn 1024 (dårlig idé). Hva dette sier er at all innkommende trafikk som kommer fra en forbindelse som jeg opprettet selv er akseptert. Jeg mener, en forbindelse som i prinsippet startet.

Når du setter OUTPUT i reglene, gjelder dette bare det aktuelle utstyret. Hvis vi bruker utstyret vårt som en ruter for å tillate disse tilkoblingene, må vi endre OUTPUT til FORWARD. Siden trafikk går gjennom datamaskinen, men ikke blir initiert av den
Alle disse reglene slettes etter omstart, så du må lage skript slik at de starter som standard. Men vi får se dette i det neste

Jeg håper du likte denne informasjonen. I den neste vil jeg snakke om NAT, Proxy og skript for Firewal.


12 kommentarer, legg igjen dine

Legg igjen kommentaren

Din e-postadresse vil ikke bli publisert. Obligatoriske felt er merket med *

*

*

  1. Ansvarlig for dataene: Miguel Ángel Gatón
  2. Formålet med dataene: Kontroller SPAM, kommentaradministrasjon.
  3. Legitimering: Ditt samtykke
  4. Kommunikasjon av dataene: Dataene vil ikke bli kommunisert til tredjeparter bortsett fra ved juridisk forpliktelse.
  5. Datalagring: Database vert for Occentus Networks (EU)
  6. Rettigheter: Når som helst kan du begrense, gjenopprette og slette informasjonen din.

  1.   Rogelio pinto sa

    Dette er grunnlaget som mange gründere tar for å produsere sine egne brannmurer, det er derfor det er så mange merker av brannmurer med innebygd linux på markedet, noen gode og andre ikke så mye.

  2.   Heber sa

    Utmerket artikkel. Jeg gleder meg til andre del.

  3.   Milton sa

    Veldig god forklaring, det hjalp meg til å forstå fullmakten til arbeidet mitt. Takk skal du ha

  4.   faustod sa

    Hei Jlcmux,

    Utmerket, jeg likte det virkelig, når blir den andre parten tilgjengelig?

    Hilsen og takk for deling

    1.    @Jlcmux sa

      Takk for kommentaren.

      Jeg sendte den andre delen i går, i løpet av dagen tror jeg de vil publisere den.

      Hilsener.

  5.   Israel sa

    Veldig bra artikkelvenn @ Jlcmux, jeg lærte virkelig med ham siden han avklarte noen tvil jeg hadde i noen tid, forresten vil du ikke ha noe imot å dele boken med kilden til artikkelen, den av Sébastien BOBILLIER, vel slau2s og nå for å se 2. del, salu2s.

    1.    @Jlcmux sa

      Hei Takk for at du kommenterer Israel.

      Det viser seg at jeg har boka i fysisk form. Men jeg fant denne lenken på Google Bøker. 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=

      Jeg tror det er komplett.

  6.   Ariel sa

    Veldig god artikkel, jeg legger til et spørsmål: Hva vil være fordelen med å bruke linux som en router, hvis det er noen, med hensyn til maskinvare dedikert til den? Eller er det bare for trening? Jeg vet at det er dedikerte distroer, men jeg vet ikke om de skal redde gamle PC-er eller gi mer fleksibilitet i konfigurasjonen.

    1.    @Jlcmux sa

      Vel, jeg tror fordelene og ulempene avhenger av scenariet der du skal implementere dette. Hvorfor skal du ikke kjøpe en UTM eller noe sånt til huset ditt? Og kanskje for en liten bedrift som ikke har råd til det heller. Det er også bra som en øvelse, da det hjelper deg å forstå all logikken i dette, og du kan bedre konfigurere en dedikert FWall. I tillegg til det er nesten alle disse enhetene innebygd Linux.

      Hilsener.

  7.   Ariel sa

    Hei, et spørsmål, kan du generere et "kunstig" grensesnitt i linux for lignende ruting mellom nettverk? (pakkesporestil) for å jobbe med virtuelle maskiner? for eksempel hvis jeg har eth0 (fordi jeg selvfølgelig har et enkelt kort) kan jeg lage eth1 for å lage et annet nettverk? Veldig god veileder!

    1.    livlig sa

      I Linux kan du selvfølgelig opprette virtuelle grensesnitt. Hvis du har eth0, kan du ha eth0: 0, eth0: 1, eth0: 2 ... osv

  8.   chinoloco sa

    Så bra, takk for at du delte