iptables

Iptables for nybegynnere

Iptables for nybegynnere
Iptables er i utgangspunktet den viktigste brannmuren som brukes til Linux-systemer, det er alternativer som nftables, men Iptables er fortsatt den viktigste, den er veldig fleksibel ved å godta direkte kommandoer fra brukeren, du kan laste og laste ned regler etter behov for å øke brannmurens policyer nøyaktighet.

Egentlig trenger du ikke engang å vite Iptables syntaks for å bruke den, du har grafiske verktøy som Firewall Builder som kan gjøre læringsprosessen unødvendig, men hvis ønsket er å øke Linux-administrasjonskunnskap, er Iptables det første trinnet for å lære å praktisk administrere sikkerhet under Linux og til og med lette administrering av CISCO eller Fortigate sikkerhetsenheter og lignende.

Iptables lar deg i utgangspunktet instruere systemet ditt om å godta, avvise eller videresende en forbindelse, avhengig av valgte parametere, for eksempel å omdirigere alle tilkoblinger til X-port til en annen IP-adresse, for å blokkere alle tilkoblinger som kommer fra et spesifikt IP-, IP-område eller til godta alle tilkoblinger som kommer fra godkjente IP-adresser blant mange andre funksjoner.

I denne opplæringen lærer vi hvordan du beskytter en webserver, hvordan du videresender tilkoblinger til interne IP-adresser fra vårt LAN og hvordan du bare tilbyr spesifikke tjenester til godkjente IP-adresser.

Installere Iptables

For å installere iptables på Debian / Ubuntu-systemer, kjør bare "apt update && apt install iptables" som root eller med "sudo" som prefiks som i følgende bilde.

Åpner HTTP- og HTTPS-porter

Først av alt kan vi legge til alle ACCEPT-policyer som starter på webserveren.

iptables -A INNGANG -p tcp --dport 80 -j ACCEPT
iptables -A INNGANG -p tcp --dport 443 -j AKSEPT

For å se våre regler lagt til, kjør “iptables -L”

Hvor:

Iptables = kaller programmet
-EN = legger til en regel
INNGANG = innkommende trafikk
-s = protokoll
-ddport = destinasjonsport
-j = spesifiser “målet”, målet er typen policy: ACCEPT, DROP, KUE eller RETURN.

Så på eksemplet på bildet ovenfor forteller vi Iptables å legge til en regel for innkommende trafikk gjennom TCP-protokoll og porter 80 og 443 for å bli akseptert.

Vi kan endre kommandoen for å akseptere forbindelsen bare fra en bestemt IP ved å legge til parameteren “-s”:

iptables -A INPUT -s 127.0.0.1-p tcp --dport 80 -j AKSEPT

Hvor:

s = kilde
Iptables -L = viser alle iptables lastede regler
Iptables -L -v = det samme med ordlighetsgrad.

Vi kan også teste brannmuren vår med nmap:

Som vi kan se er port 80 åpen både i henhold til “iptables -L” og Nmap.

Merk: For mer informasjon om Nmap-bruk kan du lese veiledningen vår om den

Beskytter serveren din

# Åpne HTTP- og HTTPS-tjenester.
iptables -A INNGANG -p tcp --dport 80 -j ACCEPT
iptables -A INNGANG -p tcp --dport 443 -j AKSEPT
#Open SSH Port Service
iptables -A INNGANG -p tcp --port 22 -m forbindelseslinje --ctstate NY, OPPRETTET -j ACCEPT

Hvor de nye parametrene er:

-m = betyr "match" og brukes til å kalle Iptables utvidelser som conntrack som ikke er en del av iptables kjernefunksjoner.

konnektor = Gjør det mulig å spore informasjon om forbindelser som spesifikke adresser eller i dette tilfellet tilkoblingens tilstand. Dette må brukes forsiktig, siden mange regler for å forsvare servere mot noen angrep bruker conntrack mens bruken er begrenset av maskinvaren, og slik begrensning kan brukes til å overbelaste serverens ressurser.

-ctstate = bestemmer tilstanden til regelen som skal matche, de mulige tilstandene er: NY, ESTABLISERT, RELATERT og ugyldig.

#Beskytt SSH-tjenesten din mot brute force-angrep ved å bare tillate en spesifikk IP
for å få tilgang til iptables -A INNGANG -p tcp -s X.X.X.X --dport 22 -m forbindelsesbane --statstat NYTT,
OPPRETTET -j ACCEPT
#Beskytt SSH-tjenesten din mot brute force-angrep ved å begrense forbindelsesforsøk
Iptables -A INNGANG -p tcp -m tcp --port 22 -m tilkobling --ctstate NY -j 22-test
Iptables -A 22-test -m recent --name CONNECTIONS --set --mask 255.255.255.255 - kilde
Iptables -A 22-test -m nylig --navn FORBINDELSER --kontroll --maske 255.255.255.255
--rkilde --sekunder 30 --hitcount 3 -j 22-beskyttelse
Iptables -A 22-test -j ACCEPT
Iptables -A 22-beskyttelse -j DROP

Hvor:
I den første linjen sier vår regel “-m forbindelsesbane -stat staten NY ” som betyr at hvis forbindelsen er ny, så gå til regelen "22-test".

Den andre linjen sier pakker nettmaske 255.255.255.255 er navngitt som FORBINDELSER .

Den tredje linjen sier om en FORBINDELSER er virker mer enn 3 ganger i løpet av 30 sekunder, fortsetter brannmuren å bruke kjeden 22-beskyttelse. Den fjerde linjen sier om FORBINDELSER ikke virket over 3 ganger i løpet av 30 sekunder, det kan godtas.
Femte linje, som tilhører 22-beskyttelse kjede sier å slippe FORBINDELSER hvis virker over 3 ganger innen 30 sekunder.

Nå til slutt, kan vi nekte alle ikke-aksepterte forbindelser, og la oss tillate all utgående trafikk:

iptables -P OUTPUT ACCEPT
iptables -P INNGANG DROP

Hvor -P betyr målets kjede, husk at målet er policyen, ACCEPT, DROP, KUE eller RETURN. I dette tilfellet sier vi at standardpolicyen for utgående trafikk er å akseptere, og standardpolicyen for innkommende trafikk er å nekte, med mindre vi spesifiserte noe annet i tidligere regler. Dette er en veldig grunnleggende brannmur som ikke inkluderer regler for mange angrep, for læringsformål og ikke for produksjon. På slutten av artikkelen legger jeg til en brannmur jeg brukte for produksjon på en server, den har kommentarer som forklarer hver regel.

Videresending av en forbindelse til en spesifikk havn til en spesifikk IP-adresse

Dette er veldig nyttig også for stasjonære brukere som ønsker å opprette en tilkobling gjennom en bestemt enhet, det kan være nyttig selv for spillere, vanligvis gjør vi det fra ruterenes innstillinger, men la oss anta at rutingenheten kjører Iptables.

iptables -A PREROUTING -t nat -p tcp -d X.X.X.X --dport 8080 -j DNAT - til destinasjonen
Y.Y.Y.Y: 80
iptables -E POSTROUTING -t nat -p tcp -j SNAT --til kilde X.X.X.X

Reglene ovenfor påkaller NAT (Network Address Translation) for å spesifisere tilkoblinger via protokoll TCP, til adressen X.X.X.X og port 8080 blir omdirigert til adresse Y.Y.Y.Y, port 80. Den andre regelen angir at svarene må sendes til kildeadressen (X.X.X.X). Vi kan bruke disse reglene for å gi tilgang til et IP-kamera, for å aktivere online spill med eksterne nettverk osv.

Denne opplæringen var ment å introdusere nybegynnere til Iptables og forklarer bare et begrenset antall grunnleggende funksjoner. Nedenfor kan du se et utvalg av en godt planlagt brannmur som ble brukt til en produksjonsserver. Den inkluderer fra noen av reglene vi allerede så til mer komplekse regler for å forhindre DDoS-angrep blant andre.
Neste opplæring vil være på snusing i lokale nettverk, men på en neste opplæring forklarer jeg noen av reglene som brukes på brannmuren nedenfor.  Takk for at du fulgte LinuxHint.com, fortsett å følge oss for fremtidige oppdateringer om Iptables og Linux generelt.

Bonus: Eksempel på produksjonsbrannmur

iptables -F
# ---- Aktiver dårlig feilmelding
aktiver / proc / sys / net / ipv4 / icmp_ignore_bogus_error_responses
# ---- Slå på filtrering av omvendt sti. Tryggere, men bryter asymetrisk ruting og / eller IPSEC
aktiver / proc / sys / net / ipv4 / conf / * / rp_filter
# ---- Ikke godta kildesirkulerte pakker. Kildesending brukes sjelden til legitim
deaktivere / proc / sys / net / ipv4 / conf / * / accept_source_route
# ---- Deaktiver aksept av ICMP-omdirigering som kan brukes til å endre rutetabellene dine
deaktiver / proc / sys / net / ipv4 / conf / * / accept_redirects
# ---- Da vi ikke godtar viderekoblinger, må du ikke sende viderekoblingsmeldinger heller
deaktiver / proc / sys / net / ipv4 / conf / * / send_redirects
# ---- Ignorer pakker med umulige adresser
deaktiver / proc / sys / net / ipv4 / conf / * / log_martians
# ---- Beskytt mot innpakning av sekvensnumre og hjelp til å måle rundturstiden
aktiver / proc / sys / net / ipv4 / tcp_timestamps
# ---- Hjelp mot syn-flood DoS- eller DDoS-angrep ved bruk av spesielle valg av initial
TCP-sekvensnumre aktiverer / proc / sys / net / ipv4 / tcp_syncookies
# ---- Bruk Selective ACK som kan brukes til å indikere at spesifikke pakker mangler
deaktiver / proc / sys / net / ipv4 / tcp_sack
modprobe nf_conntrack_ipv4
modprobe nf_nat
# modprobe nf_conntrack_ipv6
# modprobe nf_conntrack_amanda
# modprobe nf_nat_amanda
modprobe nf_conntrack_h323
modprobe nf_nat_h323
modprobe nf_conntrack_ftp
modprobe nf_nat_ftp
# modprobe nf_conntrack_netbios_ns
# modprobe nf_conntrack_irc
# modprobe nf_nat_irc
# modprobe nf_conntrack_proto_dccp
# modprobe nf_nat_proto_dccp
modprobe nf_conntrack_netlink
# modprobe nf_conntrack_pptp
# modprobe nf_nat_pptp
# modprobe nf_conntrack_proto_udplite
# modprobe nf_nat_proto_udplite
# modprobe nf_conntrack_proto_gre
# modprobe nf_nat_proto_gre
# modprobe nf_conntrack_proto_sctp
# modprobe nf_nat_proto_sctp
# modprobe nf_conntrack_sane
modprobe nf_conntrack_sip
modprobe nf_nat_sip
# modprobe nf_conntrack_tftp
# modprobe nf_nat_tftp
# modprobe nf_nat_snmp_basic
# Nå kan vi begynne å legge til utvalgte tjenester i brannmurfilteret vårt. Den første slike ting
er et localhost-grensesnitt iptables -A INNGANG -i lo -j ACCEPT
# Vi ba brannmuren ta alle innkommende pakker med tcp-flagg INGEN og bare DROP dem.
iptables -A INNGANG -p tcp ! -m forbindelse --ctstate NY -j DROP
#Vi ber iptables om å legge til (-A) en regel for innkommende (INPUT) - SSH fungerer på port 50683
i stedet for 22.
iptables -A INNGANG -p tcp -m tcp --dport 50683 -j ACCEPT
iptables -A INNGANG -p tcp -m tcp -s spesifikk ip --dport 50683 -j ACCEPT
iptables -A INNGANG -p tcp -m tcp -s spesifikk ip --dport 50683 -j ACCEPT
iptables -A INNGANG -p tcp -m tcp -s spesifikk ip --dport 50683 -j ACCEPT
iptables -A INNGANG -p tcp --dport 50683 -m tilkobling --ctstate NY -m nylig - sett
--navn SSH -j ACCEPT
iptables -A INNGANG -p tcp --dport 50683 -m nylig --oppdatering - sekunder 60 --hitcount 4
--rttl --navn SSH -j LOG --logg-prefiks "SSH_brute_force"
iptables -A INNGANG -p tcp --port 50683 -m nylig --oppdatering - sekunder 60 --hitcount 4
--rttl --navn SSH -j DROP
iptables -A INNGANG -p tcp --dport 50683 -m tilkobling --ctstate NY -m nylig - sett
--navn SSH
iptables -A INNGANG -p tcp --dport 50683 -m forbindelseslinje --ctstate NY -j SSH_WHITELIST
iptables -A INNGANG -p tcp --dport 50683 -m tilkobling --ctstate NY -m nylig --oppdatering
--sekunder 60 --hitcount 4 --rttl --navn SSH -j ULOG --ulog-prefiks SSH_bru
iptables -A INNGANG -p tcp --dport 50683 -m konneksjon --ctstate NY -m nylig --oppdatering
--sekunder 60 --hitcount 4 --rttl --navn SSH -j DROP
# Nå tillater jeg imap, og smtp.
-EN INNGANG -p tcp --port 25 -j ACCEPT
# Tillater pop- og pop-tilkoblinger
-EN INNGANG -p tcp --dport 110 -j ACCEPT
-EN INNGANG -p tcp --dport 995 -j ACCEPT
############ IMAP & IMAPS #############
-EN INNGANG -p tcp --port 143 -j AKSEPT
-EN INNGANG -p tcp --dport 993 -j ACCEPT
########### MYSQL #######################
iptables -A INNGANG -i eth0 -p tcp -m tcp --dport 3306 -j ACCEPT
########## R1soft CDP System ##################
iptables -A INNGANG -p tcp -m tcp -s spesifikk ip --dport 1167 -j ACCEPT
############### utgående ###################
iptables -JEG INNGANG -m konnektor --ctstate ESTABLISHED, RELATED -j ACCEPT
### Tillat pågående, blokkering av innkommende ikke definert ###
iptables -P OUTPUT ACCEPT
iptables -P INNGANG DROP
iptables -L -n
iptables-save | tee / etc / iptables.test.regler
iptables-gjenoppretting < /etc/iptables.test.rules
#service iptables starter på nytt
Topp 5 spillfangstkort
Vi har alle sett og elsket streaming av spill på YouTube. PewDiePie, Jakesepticye og Markiplier er bare noen av de beste spillerne som har tjent milli...
Hvordan utvikle et spill på Linux
For et tiår siden ville ikke mange Linux-brukere forutsi at deres favorittoperativsystem en dag ville være en populær spillplattform for kommersielle ...
Åpne kildeporter for kommersielle spillmotorer
Gratis, åpen kildekode og plattformspillmotorrekreasjoner kan brukes til å spille gamle så vel som noen av de ganske nylige spilletitlene. Denne artik...