![Gjennomgang av hjernespill-appen](/f/d2e2463a349fc290eaaad753e9d3dc78.png?width=100&height=100)
Håndtere nettverkstrafikk er en av de tøffeste jobbene en systemadministratorer må håndtere. Han må konfigurere brannmuren på en slik måte at det vil tilfredsstille system- og brukerkrav for både innkommende og utgående forbindelser, uten å la systemet være sårbart for angrep.
Dette er hvor iptables
Komme til nytte. Iptables er en Linux -kommandolinjebrannmur som lar systemadministratorer håndtere innkommende og utgående trafikk via et sett med konfigurerbare tabellregler.
Iptables bruker et sett med tabeller som har kjeder som inneholder sett med innebygde eller brukerdefinerte regler. Takket være dem kan en systemadministrator filtrere nettverkstrafikken til systemet sitt på riktig måte.
Per iptables -manual er det for tiden 3 typer bord:
FILTER
- dette er standardtabellen, som inneholder de innebygde kjedene for: NAT
- en tabell som konsulteres når en pakke prøver å opprette en ny tilkobling. Den har følgende innebygde:
MANGLE
- denne tabellen brukes til pakkeendring. Inntil kjerneversjonen 2.4 dette bordet hadde bare to kjeder, men de er nå 5: I denne artikkelen vil du se noen nyttige kommandoer som hjelper deg med å administrere Linux -boksen brannmur gjennom iptables. For formålet med denne artikkelen vil jeg starte med enklere kommandoer og gå til mer komplekse til slutten.
Først bør du vite hvordan du administrerer iptables -tjeneste i forskjellige Linux -distribusjoner. Dette er ganske enkelt:
På Cent/RHEL 7 og Fedora 22+ # systemctl starter iptables. # systemctl stopp iptables. # systemctl starter iptables på nytt.
På Cent/RHEL 6/5 og Fedora # /etc/init.d/iptables start # /etc/init.d/iptables stop. # /etc/init.d/iptables starter på nytt.
Hvis du vil kontrollere de eksisterende reglene, bruker du følgende kommando:
# iptables -L -n -v.
Dette bør returnere utdata som ligner på det nedenfor:
INNGANG for kjeden (policy ACCEPT 1129K -pakker, 415M byte) pkts bytes target prot opt -out kildedestinasjon 0 0 ACCEPT tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 53 0 0 Aksepter udp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 53 0 0 Aksepter tcp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 67 0 0 Aksept utp - lxcbr0 * 0.0.0.0/0 0.0.0.0/0 udp dpt: 67
Kjeden FORWARD (policy ACCEPT 0 pakker, 0 byte) pkts bytes target prot opt out out source destination 0 0 ACCEPT all - * lxcbr0 0.0.0.0/0 0.0.0.0/0 0 0 ACCEPT all - lxcbr0 * 0.0.0.0/ 0 0.0.0.0/0
KJEDEUTGANG (policy ACCEPT 354K -pakker, 185M byte) pkts byte målprot melde seg ut kildedestinasjon
Hvis du foretrekker å sjekke reglene for et bestemt bord, kan du bruke -t
alternativet etterfulgt av tabellen du vil kontrollere. For eksempel for å sjekke reglene i NAT
bord, kan du bruke:
# iptables -t nat -L -v -n.
Hvis du finner en uvanlig eller fornærmende aktivitet fra en IP -adresse, kan du blokkere den IP -adressen med følgende regel:
# iptables -A INPUT -s xxx.xxx.xxx.xxx -j DROP.
Der du må endre "xxx.xxx.xxx.xxx"
med den faktiske IP -adressen. Vær veldig forsiktig når du kjører denne kommandoen, da du ved et uhell kan blokkere din egen IP -adresse. De -EN
alternativet legger til regelen i slutten av den valgte kjeden.
I tilfelle du bare vil blokkere TCP trafikk fra den IP -adressen, kan du bruke -s
alternativet som angir protokollen. På den måten vil kommandoen se slik ut:
# iptables -A INPUT -p tcp -s xxx.xxx.xxx.xxx -j DROP.
Hvis du har bestemt at du ikke lenger vil blokkere forespørsler fra en bestemt IP -adresse, kan du slette blokkeringsregelen med følgende kommando:
# iptables -D INNGANG -s xxx.xxx.xxx.xxx -j DROP.
De -D
alternativet sletter en eller flere regler fra den valgte kjeden. Hvis du foretrekker å bruke det lengre alternativet du kan bruke -slette
.
Noen ganger vil du kanskje blokkere innkommende eller utgående tilkoblinger på en bestemt port. Det er et godt sikkerhetstiltak, og du bør virkelig tenke på det når du konfigurerer brannmuren din.
Slik blokkerer du utgående tilkoblinger på en bestemt port:
# iptables -A OUTPUT -p tcp --dport xxx -j DROP.
For å tillate innkommende tilkoblinger, bruk:
# iptables -A INNGANG -p tcp --dport xxx -j GODTAK.
I begge eksemplene endres "xxx"
med den faktiske porten du ønsker å tillate. Hvis du vil blokkere UDP trafikk i stedet for TCP, bare endre "tcp"
med "udp"
i iptables -regelen ovenfor.
Du kan tillate flere porter samtidig ved å bruke multiport, nedenfor finner du en slik regel for både innkommende og utgående tilkoblinger:
# iptables -A INPUT -p tcp -m multiport --dports 22,80,443 -j ACCEPT. # iptables -A OUTPUT -p tcp -m multiport -sport 22,80,443 -j ACCEPT.
Det kan være lurt å begrense visse tilkoblinger på en bestemt port til et gitt nettverk. La oss si at du vil tillate utgående tilkoblinger på port 22
til nettverk 192.168.100.0/24
.
Du kan gjøre det med denne kommandoen:
# iptables -A OUTPUT -p tcp -d 192.168.100.0/24 --dport 22 -j ACCEPT.
Noen arbeidsgivere liker å blokkere tilgang til Facebook til sine ansatte. Nedenfor er et eksempel på hvordan du blokkerer trafikk til Facebook.
Merk: Hvis du er systemadministrator og må bruke disse reglene, må du huske på at kollegene dine kan slutte å snakke med deg :)
Finn først IP -adressene som brukes av Facebook:
# host facebook.com facebook.com har adressen 66.220.156.68.
# whois 66.220.156.68 | grep CIDR. CIDR: 66.220.144.0/20.
Du kan deretter blokkere det Facebook -nettverket med:
# iptables -A OUTPUT -p tcp -d 66.220.144.0/20 -j DROP.
Husk at IP -adresseområdet som brukes av Facebook kan variere i ditt land.
Noen ganger vil du kanskje videresende trafikken til en tjeneste til en annen port. Du kan oppnå dette med følgende kommando:
# iptables -t nat -A PREROUTING -i eth0 -p tcp --dport 25 -j REDIRECT -til port 2525.
Kommandoen ovenfor videresender all innkommende trafikk på nettverksgrensesnittet eth0
, fra havn 25
til havn 2525
. Du kan endre portene med de du trenger.
Noen ganger kan IP -adresser be om for mange tilkoblinger til webporter på nettstedet ditt. Dette kan forårsake mange problemer, og for å forhindre slike problemer kan du bruke følgende regel:
# iptables -A INPUT -p tcp --dport 80 -m limit -limit 100/minute -limit -burst 200 -j ACCEPT.
Kommandoen ovenfor begrenser innkommende tilkoblinger fra per minutt til 100
og setter en grense burst til 200
. Du kan redigere grensen og grense-burst til dine egne spesifikke krav.
Noen systemadministratorer liker å blokkere innkommende ping -forespørsler på grunn av sikkerhetshensyn. Selv om trusselen ikke er så stor, er det godt å vite hvordan du blokkerer en slik forespørsel:
# iptables -A INPUT -p icmp -i eth0 -j DROP.
Tilbakebringt tilgang (tilgang fra 127.0.0.1
) er viktig, og du bør alltid la den være aktiv:
# iptables -A INNGANG -i lo -j GODTAK. # iptables -A UTGANG -o lo -j AKSept.
Hvis du vil logge de nedlagte pakkene på nettverksgrensesnittet eth0
, kan du bruke følgende kommando:
# iptables -A INPUT -i eth0 -j LOG --logg -prefiks "IPtables droppet pakker:"
Du kan endre verdien etter "--log-prefiks"
med noe etter eget valg. Meldingene er logget inn /var/log/messages
og du kan søke etter dem med:
# grep "IPtables droppet pakker:"/var/log/messages.
Du kan blokkere tilgangen til systemet ditt fra en bestemt MAC -adresse ved å bruke:
# iptables -A INPUT -m mac --mac -source 00: 00: 00: 00: 00: 00 -j DROP.
Selvfølgelig må du endre "00:00:00:00:00:00"
med den faktiske MAC -adressen du vil blokkere.
Hvis du ikke vil ha for mange samtidige tilkoblinger etablert fra en enkelt IP -adresse på en gitt port, kan du bruke kommandoen nedenfor:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit -above 3 -j REJECT.
Kommandoen ovenfor tillater ikke mer enn 3
tilkoblinger per klient. Selvfølgelig kan du endre portnummeret for å matche forskjellige tjenester. Også --begrenset ovenfor
bør endres for å matche kravet ditt.
Når du har definert iptables -reglene, vil du søke fra tid til annen, og du må kanskje endre dem. En enkel måte å søke innenfor reglene dine er å bruke:
# iptables -L $ bord -v -n | grep $ streng.
I eksemplet ovenfor må du endre $ bord
med den faktiske tabellen du vil søke i og $ streng
med den faktiske strengen du leter etter.
Her er et eksempel:
# iptables -L INNGANG -v -n | grep 192.168.0.100.
Med iptables kan du definere din egen kjede og lagre tilpassede regler i den. For å definere en kjede, bruk:
# iptables -N tilpasset filter.
Nå kan du sjekke om det nye filteret er der:
# iptables -L.
INNGANG for kjeden (policy ACCEPT) målprotopt kildedestinasjon.
Kjede FREM (politikk Aksept) målprotopt kildedestinasjon
OUTPUT fra kjeden (policy ACCEPT) målprotopt kildedestinasjon
Kjede tilpasset filter(0 referanser) målprotopt kildedestinasjon
Hvis du vil skylle brannmurkjedene dine, kan du bruke:
# iptables -F.
Du kan skylle kjeder fra et bestemt bord med:
# iptables -t nat -F.
Du kan endre "nat"
med selve bordet hvilke kjeder du ønsker å skylle.
Hvis du vil lagre brannmurreglene, kan du bruke iptables-save
kommando. Du kan bruke følgende til å lagre og lagre reglene i en fil:
# iptables-save> ~/iptables.rules.
Det er opp til deg hvor du vil lagre filen og hvordan du vil navngi den.
Hvis du vil gjenopprette en liste over iptables -regler, kan du bruke iptables-restore
. Kommandoen ser slik ut:
# iptables-restoreSelvfølgelig kan banen til din regelfil være annerledes.
21. Konfigurer IPtables -regler for PCI -samsvar
Noen systemadministratorer kan være pålagt å konfigurere serverne til å være PCI -kompatible. Det er mange krav fra forskjellige PCI -leverandører, men det er få vanlige.
I mange tilfeller må du ha mer enn én IP -adresse. Du må bruke reglene nedenfor for nettstedets IP -adresse. Vær ekstra forsiktig når du bruker reglene nedenfor, og bruk dem bare hvis du er sikker på hva du gjør:
# iptables -I INPUT -d SITE -p tcp -m multiport --port 21,25,110,143,465,587,993,995 -j DROP.Hvis du bruker cPanel eller lignende kontrollpanel, må du kanskje også blokkere portene til den. Her er et eksempel:
# iptables -I in_sg -d DEDI_IP -p tcp -m multiport --dports 2082,2083,2095,2096,2525,2086,2087 -j DROP.Merk: For å være sikker på at du oppfyller kravene til PCI -leverandøren din, må du sjekke rapporten nøye og følge de nødvendige reglene. I noen tilfeller må du også blokkere UDP -trafikk på visse porter.
22. Tillat etablerte og relaterte tilkoblinger
Siden nettverkstrafikken er atskilt for innkommende og utgående, vil du tillate etablert og relatert innkommende trafikk. Gjør det for innkommende tilkoblinger med:
# iptables -A INPUT -m contrack --ctstate ESTABLISHED, RELATED -j ACCEPT.For utgående bruk:
# iptables -A OUTPUT -m contrack --ctstate ESTABLISHED -j ACCEPT.23. Slipp ugyldige pakker i IP -tabeller
Det er mulig å få noen nettverkspakker merket som ugyldige. Noen foretrekker kanskje å logge disse pakkene, men andre foretrekker å slippe dem. For å slippe ugyldige pakker kan du bruke:
# iptables -A INPUT -m conrack --ctstate INVALID -j DROP24. Blokker tilkobling på nettverksgrensesnitt
Noen systemer kan ha mer enn ett nettverksgrensesnitt. Du kan begrense tilgangen til nettverksgrensesnittet eller blokkere tilkoblinger fra en bestemt IP -adresse.
For eksempel:
# iptables -A INPUT -i eth0 -s xxx.xxx.xxx.xxx -j DROP.Endring “Xxx.xxx.xxx.xxx” med den faktiske IP -adressen (eller nettverket) du vil blokkere.
25. Deaktiver utgående e -post via IPTables
Hvis systemet ditt ikke skulle sende noen e -poster, kan du blokkere utgående porter på SMTP -porter. For eksempel kan du bruke dette:
# iptables -A OUTPUT -p tcp --dports 25,465,587 -j REJECT.Konklusjon
Iptables er en kraftig brannmur som du enkelt kan dra nytte av. Det er viktig for hver systemadministrator å lære minst grunnleggende om iptables. Hvis du vil finne mer detaljert informasjon om iptables og dens alternativer, anbefales det på det sterkeste å lese manualen:
# mann iptables.Hvis du tror vi bør legge til flere kommandoer i denne listen, kan du dele dem med oss ved å sende dem inn i kommentarfeltet nedenfor.