I forrige innlegg Vi så konfigurasjonen av IPTables for å fungere som en brannmur. Nå kan vi se hvordan vi lager disse skriptene slik at reglene utføres automatisk når systemet starter, og også hvordan vi kan eliminere eller stoppe disse reglene et øyeblikk.
Før vi gjør skriptet og viser deg hvordan det ser ut, la oss snakke litt om NAT og konseptet med hva vi vil gjøre med dette utstyret.
Indeks
NAT og kontekst av eksemplet.
Når vi snakker om NAT, kan vi forveksle dette med ruting, siden begge har ansvaret for å koble to forskjellige nettverk til hverandre. Forskjellen er egentlig at rutingen brukes for å gå fra et lokalt nettverk til et annet, og dette andre nettverket kan koble til en ruter og gå ut på Internett.
Mens vi snakker om NAT, snakker vi om ruting av pakker fra et lokalt eller privat nettverk til et offentlig nettverk eller Internett. Det gjør dette ved å maskere pakkene ved å legge den offentlige IP-en som den går til Internett. Med andre ord trenger vi ikke en ruter, fordi den offentlige IP-en eies direkte av GNU / Linux-datamaskinen.
Vi vil jobbe dette med slagordet om at vi bruker Linux som en ruter / brannmur for å gå ut på Internett fra et lokalt nettverk. Men her kan to scenarier dukke opp.
- At Linux er mellom ruteren til tjenesteleverandøren og det lokale nettverket.
I dette tilfellet ville det være et nettverk mellom ruteren og Linux, og mellom Linux og det lokale nettverket ville det være et annet nettverk. Dette betyr at ruteren vår ikke trenger å gjøre NAT som sådan, med en enkel trafikkrute som forklart i forrige innlegg Det ville vært bra.
- At Linux har et grensesnitt koblet til det lokale nettverket og gjennom det andre grensesnittet mottar det direkte en offentlig IP som den navigerer med.
Dette betyr at Linux må gjøre NAT slik at pakkene kan nå internett.
I dette lille laboratoriet vil vi si at Linux får en offentlig IP direkte og dermed kan teste effekten av NAT.
For å gjøre NAT bruker vi så syntaksen
iptables -t nat -A POSTROUTING -O eth1 -j MASQUERADE
Der eth1 er grensesnittet der vi mottar offentlig IP, det vil si hvor vi går til Internett.
Opprette iptables-skript
Anta da at: 172.26.0.0 er vårt lokale nettverk og 81.2.3.4 er den offentlige IP-en som vi går til Internett med. (det er en statisk ip). Jeg har grensesnittene eth0 (lokalt nettverk)
eth1 (Offentlig nettverk).
Det består i utgangspunktet av å lage et skript som kan kalles fra /etc/init.d/firestop (for eksempel). og fra dette skriptet kan vi starte, stoppe eller kontrollere statusen til konfigurasjonen vår, akkurat som vi gjør med en hvilken som helst systemdemon.
Anta at IPTABLES-reglene mine ER:
#! / bin / bash # Brannmur i hjemmet mitt. # Filnavn / etc / firewall_on # Av Jlcmux Twitter: @Jlcmux # # Grunnleggende policy. iptables -P INPOUT DROP iptables -P OUTPUT DROP iptables -P FORWARD DROP # #NAT for å dele Internett fra eth0 til eth1 iptables -t nat -A POSTROUTING -O eth1 -j SNAT --to-source 81.2.3.4 # # Tillat innkommende tilkoblinger initiert av iptables -A FORWARD -m-tilstand --state ESTABLISHED, RELATED -j ACCEPT # # Autorisert utgående trafikk iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 80 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p tcp --dport 443 -j ACCEPT iptables -A FORWARD -i eth0 -o eth1 -p udp --dport 53 -j ACCEPT
Forklaring:
Skriptet gjør i utgangspunktet følgende:
- Begrens først all navigasjon, forbindelser og trafikk. (Grunnleggende brannmurregler)
- Opprett deretter NAT med destinasjonen eth1. som indikerer at vi har en statisk offentlig ip "81.2.3.4"
- Det åpner portene som er nødvendige for å motta pakker med tilkoblinger initiert av meg.
- Godtar utgående HTTP-, HTTPS- og DNS-trafikk.
Hvis vi vil bruke utstyret vårt for å navigere, bør vi gjenta linjene og endre FORDRE til INNGANG eller UTGANG etter behov.
Avbryt skript.
Nå skal vi lage et skript som overstyrer alt ovenfor og etterlater datamaskinen ren for alt dette. (For testformål eller hvis vi bare vil slå av brannmuren).
#! / bin / bash # Brannmur i hjemmet mitt. # Filnavn / etc / firewall_off # Av Jlcmux Twitter: @Jlcmux # # Slette iptables-regler -F # # Bruk av standard policyer (all trafikk akseptert) iptables -P INNGANG ACCEPT iptables -P OUTPUT ACCEPT iptables -P FORWARD ACCEPT
Automatisering.
Nå må vi lage skriptet inni /etc/init.d/ og tjenesten starter automatisk, og vi kan administrere den på en mer komfortabel måte.
#! / bin / bash # Brannmur i hjemmet mitt. # Filnavn /etc/init.d/ brannmur # Av Jlcmux Twitter: @Jlcmux sak $ 1 i start) / etc / firewall_on ;; stopp) / etc / firewall_off ;; status) iptables -L ;; *) ekko "Feil syntaks. Gyldig = /etc/init.d/ brannmurstart | stopp | status ;; esac
Forklaring:
Dette siste manuset vi la inn /etc/init.d/ med navnet brannmur. Så hvis vi vil administrere brannmuren, kan vi bruke kommandoen /etc/init.d/ brannmurstart. På samme måte kan vi stoppe det eller se staten.
Nå skal vi redigere filen /etc/rc.local og vi setter noe sånt som: /etc/init.d/ brannmurstart for å starte med systemet.
Også. Dette er den andre delen. Jeg håper det gir noe til dere alle. I det neste ser vi Proxy og IDS.
7 kommentarer, legg igjen dine
Hvis du bruker Debian, er det en pakke i repoen (iptables-persistent) som gjør akkurat det, den dumper gjeldende regler i /etc/iptables/rules.v4 eller v6, avhengig av hva du bruker, og bruker dem deretter på deg når du løfter systemet.
I praksis vil det være tilstrekkelig å rense konfigurasjonen av en konvensjonell iptables-brannmur (og å bruke NAT ikke ville være slik fra mitt synspunkt).
Men i teorien, og så vidt jeg vet, må du i tillegg til dette også fjerne tområdene og tilbakestille tellerne. Tiltak som skal tas med tanke på at det i tillegg til "filter" finnes andre tabeller (det er obligatorisk å lese filen "/ proc / net / ip_tables_names" for dette).
Forresten, sier ortodoksi at en brannmur allerede må være oppe før nettverket er. Jeg vet ikke hvordan det oppnås på de andre Linux-systemene, men på Debian-systemene kan skriptet tilpasses og settes i katalogen "/etc/network/if-pre-up.d/".
God brannmur alle sammen. 😉
Hei, innlegget er veldig bra. Jeg har lest hele de to bindene.
Venter på neste 🙂
Et spørsmål fra min uvitenhet, vi fortsetter med iptables, men for flere kjerneversjoner har vi nftables, jeg tester allerede, spørsmålene er, er nftables noe beta med hensyn til iptables? Vil iptables fortsette å brukes mye lenger?
Takk.
nftables inkluderer alle funksjonene til iptables, ip6tables, arptables og ebtables, alt ved hjelp av en ny infrastruktur i både kernelspace og userpace, som sikrer bedre ytelse og forbedret funksjonalitet. nftables erstatter iptables og alle de andre nevnte verktøyene, men ikke foreløpig, ikke minst før det er mer utbredt bruk av nftables som sådan.
veldig bra innlegg, jeg ville lese mer siden det er veldig godt forklart .. hilsen takk stort bidrag
Hallo! Veldig bra begge innleggene.
Som et bidrag kan du legge til slutten i denne delen:
"Nå skal vi redigere /etc/rc.local-filen og sette noe sånt som: /etc/init.d/firestop start slik at det starter med systemet."
Legg dette til rc.local.
hvis [-x /etc/init.d/ brannmur]; deretter
/etc/init.d/ brannmurstart
fi
Noe som betyr at hvis "brannmur" har utførelsestillatelser, kan du utføre den, hvis ikke.
Hvis du vil at "brannmuren" ikke skal starte, må du bare fjerne tillatelsene.
For eksempel: chmod + x /etc/init.d/ brannmur
for å få den til å kjøre ved hver oppstart eller ...
chmod -x /etc/init.d/ brannmur
å deaktivere den helt.
Greetings!