24. maj 2002 - 15:46Der er
13 kommentarer og 1 løsning
iptables og gateway
Nå.. Problem: Jeg har en linux 7.2 og vil meget gerne bruge iptabes som firewall og gateway på mit hjemme netwærk. vi har 2 netkort i vores (ikke virkende) firewall, et som går til vores lan og et som er connected til vores router.. På firewallen kan vi pinge begge net, så der er der ingen problemer, men vi kan ikke komme fra en client på vores lan, og ud igennem firewallen, og ud til internettet. Vi har lige nu denne firewall opsætning:
Det aller første du må gjøre det er å finne ut med sikkerhet om din maskin kjører iptables eller ipchains. Red Hat 7.2 er satt opp defult med ipchains og ikke iptables. Kjør følgende to kommandoer: "ipchains -L" "iptables -L" Den som ikke gir feilmeldinger er den du har kjørende. Omkonfigurering fra ipchains til iptables kan være litt tricky. Legg ut beskjed om resultatet av testen over.
iptables -F ** Flusher eller resetter default tabell/regelsett. Greit nok.
iptables -P FORWARD DROP ** Setter forwarding policy eller default forward regel til DROP. ** Det vil si at firewall i utgangspunktet er blokkert for servere/ ** arbeidsstasjoner som ligger bak firewall. Kan være ok.
iptables -P INPUT ACCEPT ** Setter input policy eller default input regel til åpen. Det vil si at ** firewallen selv i utgangspunktet er 100 % åpen for alle eksterne ** henvendelser. Med andre ord: Firewall maskinen selv er uten firwall. ** Maskinene bak firewall er i utgangspunktet beskyttet men den maskinen ** som skal ivareta denne beskyttelsen er i utgangspunktet ubeskyttet. ** Henger rent sikkerhetsmessig ikke særlig godt sammen.
iptables -P OUTPUT ACCEPT ** Åpen for all trafikk ut. I utgangspunktet greit nok.
iptables -t nat -A POSTROUTING -o eth0 -j SNAT --to-source 192.168.1.2 ** I utgangspunktet korrekt syntaks for en delt internettforbindelse ** for de maskinene som ligger innefor firewall. Man kan imidlertid ** ikke bruke en intern ikke routbar ipadresse som "avsender adresse" ** for ip pakkene. 192.168.1.2 kan ikke brukes. Her må settes inn den ** eksterne ip adressen man benytter slik at alle ip-pakker mottar ** returtrafikk via denne ip adressen. Setningen er således ikke rett.
iptables -A FORWARD -o eth0 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT iptables -A FORWARD -o eth1 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT ** Dette skal i utgangspunktet "override" en default forward policy som ** er satt til DROP eller stengt. Er litt usikker på syntaksen. Tror ikke ** man kan sette opp en to veis forwarding på denne måten.
iptables -t nat -a PORTROUTING -o eth0 -j MASQUERADE ** Denne setningen tror jeg i all enkelhet er feil. PORTROUTING ?? ** Kjenner ikke til det. Man setter ikke opp MASQUERADING på denne måten. ** POSTROUTING det ville ha vært noe annet dersom det dreier seg om ** en delt internettforbindelse med dynamisk ip
--to-source 192.168.1.2, kan være god nok hvis firewallen sidder på en ADSL hvor routeren har endnu en gang nat, og ser 192.168.1.2 som maskinen på netværket, også selv oversætter til den egentlige eksterne IP
Det stemmer. Har testet SNAT i to nivåer og det fungerer. Dersom det finnes et DNAT i nivå over (dvs foran) Firewall så skulle dette kunne fungere. Testet dette på to linux firewall koplet "i serie" med server på nettverksegment mellom serverne og da fungerte det faktisk slik som gatehound sier. I så fall kan "--to-source 192.168.1.2" teoretisk sett være korekt nok.
Det vil i så fall si at den endelige "omadresseringen" av ip pakkenenes avsenderadresser til en routbar ip i stedet for lokale ikke routbare adresser skjer i router. Har sett ADSL routere som ser ut til å virke på denne måten (CISCO).
Eksempel på en nokså enkel iptables "firewall" som ikke kan stort annet enn å dele en internett forbindelse:
# Remove any existing rules from all chains iptables --flush iptables -t nat --flush iptables -t mangle --flush
# Set the default policies iptables --policy INPUT DROP iptables --policy OUTPUT ACCEPT iptables --policy FORWARD ACCEPT
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
Er usikker på denne som thomasledet nevner: echo "1" > /proc/sys/net/ipv4/ip_forward
Den kan eventuelt legges inn først, helt i starten i scriptet eller til sist.
Spørsmål til "de spesielt intereserte": Over er FORWARD policy satt til ACCEPT. Dette skulle i utgangspunktet gi full adgang til de servere / arbeidsstasjoner som ligger bak firewall, altså ingen beskyttelse. Når man på den anne side benytter masquerading og private adresser bak firewall så blir alle adresser bak firewall i utgangspunktet utilgjengelige via internett fordi det dreier seg om ikke routbare adresser. Mon dette ikke er sikkehetsmessig rimleig ok ??
testkanin -> Du må være sikker på at maskinen virkelig er satt opp til å kjøre iptables eller så blir det hele nokså meningsløst. (Da må eventuelt legges inn script basert på ipchains.)
# Remove any existing rules from all chains iptables --flush iptables -t nat --flush iptables -t mangle --flush ** Linjene over flusher alle tables / rules.
# Set the default policies iptables --policy INPUT DROP Denne sperer for all trafikk inn til firewall maskinen seld slik at denne er beskyttet.
iptables --policy OUTPUT ACCEPT ** Setter åpent for utgående trafikk.
iptables --policy FORWARD ACCEPT ** Åpner for all forwarding dvs trafikk til maskiner som ligger bak ** firewall. Dersom man hadde brukt globale "offentlige" ip bak fireweall ** så ville dette ha vært håpløst. Med lokale ikke adresserbare ** ip bak firewall så bør vel dette kunne passere ???
iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE ** Dette er en delt internettforbindelse, på enkleste måte, basert på ** dynamisk tildelt ip adresse. Bør også fungere ved statisk ip. ** (Ikke helt sikker på om det vil fungere dersom det reelt sett dreier ** seg om firewall / routing i flere nivåer slik som gatehound nevner.
Forutsatt: 1. Routeren for inernettilkopling tildeler den innvendige gatewayrouteren ip adresse 192.168.1.2 2. eth0 er koplet opp mot internettrouteren.
Er ikke sikker på om man kan bruke MASQERADE i stedet for SNAT dersom det er snakk om firewll / routing i to nivåer, men tror vel egentlig at også dette lar seg gjøre. (???)
testkanin, jeg har skret en bog om det engang, men min harddisk er brændt. Hvis du ikke har fundet ud af det endnu, kan jeg lige spørge mine kammerater om de har en kopi :)
Dersom det forholder seg slik som gatehound foreslår (og det kan jo godt være tilfellet):
"--to-source 192.168.1.2, kan være god nok hvis firewallen sidder på en ADSL hvor routeren har endnu en gang nat, og ser 192.168.1.2 som maskinen på netværket, også selv oversætter til den egentlige eksterne IP"
Hvis den første router i virkeligheten inneholder en firewall / router, eventuelt med DHCP, så kan man jo bare sette opp en hub/switch etter routeren og så firewalls etter behov på de lokale brukerne. Det vil være det enkleste. NAT/Masquerading i flere nivåer blir forholdsvis kompisert.
Hovedtipset er altså at du sannsynligvis bør bruke, i all enkelhet, en hub/switch og så enkle firewalls på de enkelte server/klienter, hvis du allerede har en nettverkstilkopling kjørende som i realiteten inneholder en firewall/router. Ellers så ligger det litt info her: http://www.eksperten.dk/spm/214948 Kounne eventuelt forsøke å lage et testkjørt script til ditt oppsett (hvis du har behov for det) men da må du først legge ut litt mere info.
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.