Iptables laten alles toe. Blokkeren van de netwerkadressen van het lokale netwerk op de externe interface. Een reeks IP-adressen openen

Iptables is primair verantwoordelijk voor pakketfiltering. Het handmatig configureren van iptables is nogal een ontmoedigende taak. Verwacht niet dat je deze momentopname te weten komt. Gelukkig zijn er veel tools die je kunnen helpen als je iptables nog niet hebt ontdekt en je het systeem dringend moet beveiligen: fwbuilder, firestarter, guarddog, arno firewall - in feite is dit een GUI voor iptables. Het ondubbelzinnige antwoord is dat er geen betere is. Het is aan jou om te kiezen. Het artikel van vandaag is echter specifiek gewijd aan iptables en is verdeeld in twee delen: theorie en praktijk. De meest ongeduldige kan het praktische gedeelte meteen doen, hoewel deze aanpak niet wordt aanbevolen.

Aandacht! Alle acties met iptables worden uitgevoerd namens de bevoorrechte gebruiker!

Theorie

Recordformaat iptables iptables [-t tabel] [commando] [actie] Voorbeeld: iptables -t filter -A INPUT ACCEPT

Acties

  • ACCEPTEREN - Pakket accepteren
  • DROP - Laat een pakket vallen
  • DNAT - Bestemmingsadres converteren
  • SNAT - Wijzig het uitgaande IP-adres in de pakketkop
  • LOG - Log pakketten en gebeurtenissen
  • MARK - Plaats een markering op een pakket
  • MASQUERADE - Wijzig het uitgaande IP-adres in de pakketheader (in tegenstelling tot SNAT - werk met dynamische IP)
  • WACHTRIJ - Een pakket in de wachtrij plaatsen voor verwerking
  • REDIRECT - Stuur pakket / stream om naar een andere poort
  • REJECT - Laat het pakket vallen + stel het systeem op afstand hiervan op de hoogte. dat haar pakket werd afgewezen
  • RETURN - Stop het pakket dat langs de huidige keten beweegt en keer terug naar de oproepende keten

Commando's

  • -A - Voeg de regel toe aan de keten
  • -D - Verwijder de regel uit de keten
  • -R - Vervang de ene regel door een andere
  • -I - Nieuwe regel invoegen
  • -L - Lijst bestaande regels
  • -F - Regels resetten
  • -Z - Tellers op nul zetten in de opgegeven keten
  • -N - Creëert een nieuwe keten met de opgegeven naam
  • -X - Verwijder de keten
  • -P - Stel het standaardbeleid in voor de geselecteerde keten
  • -E - Naam aangepaste keten wijzigen

Criteria (algemeen)

  • -p - Geef het protocoltype op
  • -s is het bron-IP van het pakket
  • -d - het IP-adres van de ontvanger van het pakket
  • -j - Specificeer de actie voor de regel
  • -i - De interface van waaruit het pakket is ontvangen
  • -o - Specificeer de naam van de uitvoerinterface
  • -f - Breid de regel uit naar alle fragmenten van het pakket

TCP-criteria:

  • –Tcp-flags - Specificeer pakketmasker en vlaggen

UDP-criteria:

  • –Sport - Poort van waaruit het pakket is verzonden
  • –Dport - Poort waarnaar het pakket is geadresseerd

Meer in man iptables

Oefening

De huidige configuratie bekijken

$ sudo iptables -L Chain INPUT (beleid ACCEPT) doel prot opt ​​bronbestemming Chain FORWARD (beleid ACCEPT) doel prot opt ​​bronbestemming Chain OUTPUT (beleid ACCEPT) doel prot opt ​​bronbestemming

Als je zoiets ziet, dan is je firewall nog niet geconfigureerd en staat alles toe. Laten we de situatie oplossen.

Het standaardbeleid instellen

  • iptables -P INPUT DROP - inkomende pakketten blokkeren
  • iptables -P OUTPUT ACCEPT - sta uitgaande pakketten toe
  • iptables -P FORWARD DROP - verwerkt pakketten die vanaf een andere machine op de server zijn gekomen en wachten op verdere doorzending. In het voorbeeld is het geblokkeerd. In dit geval moet u regels toevoegen voor vertrouwde machines.

Aangezien inkomende INPUT-pakketten worden geblokkeerd, laten we de regel schrijven:

$ sudo iptables -A INPUT -m state --state GERELATEERD, GEVESTIGD -j ACCEPTEREN

Hierdoor kunt u pakketten ontvangen van een eerder tot stand gebrachte verbinding en nieuwe pakketten accepteren die door deze verbinding worden gegenereerd.

Of het type protocol specificeren:

$ sudo iptables -A INPUT -p TCP -m state --state GEVESTIGD, GERELATEERD -j ACCEPT $ sudo iptables -A INPUT -p UDP -m state --state GEVESTIGD, GERELATEERD -j ACCEPT

Nu de lokale interface:

$ sudo iptables -A INPUT -i lo -j ACCEPT

  • NIEUW - gegevens die een nieuwe verbinding starten.
  • ESTABLISHED - een pakket afkomstig van een reeds tot stand gebrachte verbinding.
  • GERELATEERD - nieuw datapakket, maar gegenereerd door de oude bestaande verbinding
  • ONGELDIG - zo begrijpelijk

$ sudo iptables-save> /etc/iptables.up.rules

Schakel deze regels in:

$ sudo iptables-restore< /etc/iptables.up.rules

En zie het verschil:

$ sudo iptables-L

Iptables starten bij het opstarten van het systeem:

Maak in de map /etc/init.d een bestand met de naam iptables

$ sudo touch /etc/init.d/iptables

Daarin schrijven we het volgende voor:

#! / bin / sh / sbin / iptables-restore< /etc/iptables.up.rules

Laten we het iptables-bestand uitvoerbaar maken:

$ sudo chmod + x /etc/init.d/iptables

Voeg het toe aan autorun

$ sudo update-rc.d -n iptables standaardwaarden

Iptables uitvoeren op netwerkverbinding:

$ sudo echo "#! / sbin / iptables-restore"> /etc/network/if-up.d/iptables.up.rules $ sudo iptables-save >> /etc/network/if-up.d/iptables. up.rules $ sudo chmod + x /etc/network/if-up.d/iptables.up.rules

Opmerking: je kunt op elk moment controleren of je regels zijn geladen door simpelweg iptables-save in te voeren vanuit root

Voor archlinux wordt het opslaan van iptables-regels gedaan met het commando:

$ sudo rc.d bewaar iptables

Een klein initieel script (regels, iptables faq) voor een desktop of eenvoudige server. In dit geval voorbeelden van het werken met de poorten van een of andere software die op uw computer draait. Beveiligingsmaatregelen moeten op elke computer in acht worden genomen. De mythe dat Linux veiliger is, is niet waar, het hangt allemaal af van de onhandige handen van de beheerder. Er zijn goed beveiligde Windows-systemen, evenals Linux-systemen die voor bijna iedereen toegankelijk zijn. Daarom moet u toch een beetje nadenken over de netwerkbeveiliging van uw computer. Hieronder zijn enkele iptables-regels toegevoegd die in het begin van pas kunnen komen.

Specifiek $ IPT vervangen door / sbin / iptables, als iemand maar één regel nodig heeft om niets te veranderen - gewoon kopiëren en uitvoeren. Natuurlijk zijn er hier nog weinig regels, er zijn geen verschillende VPN's etc., als je wilt, voeg toe.

Deze regels kunnen volledig naar elk script worden gekopieerd en gewoon worden uitgevoerd. Voor gewone gevallen is dit voldoende. Als een applicatie niet online kan, is er speciaal logboekregistratie toegevoegd. Open gewoon tail -f / var / log / syslog (of die van jou als dat niet Ubuntu is) en kijk! Als je vragen hebt, voeg ze dan toe aan de discussie, dan lossen we het samen op.

PS Denk er naast deze regels eens over na wat je uit het artikel TCP-optimalisatie moet halen.

Hoe een regel in iptables te verwijderen

Geplaatst door Alexey Ubozhenko

Meerdere malen ben ik het feit tegengekomen dat zelfs mensen die niet dom zijn in het algemeen absoluut onvergeeflijke fouten maken. Ze openen bijvoorbeeld de poort waarop de database draait naar het hele internet.

Systeembeheer blog. Artikelen over Linux, Windows, NetApp-opslag en virtualisatie.

Dit is vaak het geval voor DevOps-beginners die hun hele leven coderen en nu ook het opzetten van servers tot hun verantwoordelijkheid behoren. Er zijn goede tutorials op het internet over de basisinstellingen van firewalls in Linux en andere *nix, maar vaak zijn dit bladen voor veel schermen. Dus hopelijk vindt iemand deze beknoptere tutorial nuttig.

Belangrijk! Het is heel gemakkelijk om per ongeluk een auto zo te ontslaan dat u er niet meer in wilt. Dit geldt met name voor cloudhosting. Als u bijvoorbeeld in AWS alle poorten van 1024 tot 65536 sluit, wordt de machine om de een of andere reden gesloten na een herstart. over het algemeen allemaal poorten. Als u in de cloud host, kunt u uw firewall het beste configureren via de gehoste webinterface.

Een korte opmerking over terminologie. De firewall die in de Linux-kernel is ingebouwd, wordt Netfilter genoemd en iptables is het hulpprogramma voor het beheren van deze firewall. Veel mensen denken ten onrechte dat de firewall iptables wordt genoemd. Dit is niet waar. Als je iets zegt als "Ik filter pakketten met iptables" laat anderen zien dat je analfabeet bent.

Welke taken kunnen in het algemeen worden opgelost met Netfilter:

  • Toestaan ​​/ weigeren van inkomend verkeer naar specifieke poorten met behulp van specifieke protocollen (IPv4 / IPv6, TCP / UDP) van gespecificeerde adressen (IP, MAC) of subnetten;
  • Alles is hetzelfde voor uitgaand verkeer;
  • U kunt bijvoorbeeld alle ICMP-pakketten volledig negeren;
  • NAT configureren, zie het bericht over het installeren en configureren van OpenVPN;
  • Ik heb gehoord dat echte goeroes bescherming kunnen instellen tegen DDoS en brute kracht, netwerktoegang kunnen beperken tot specifieke applicaties, gebruikers of groepen en andere gekke dingen kunnen doen;

Merk op dat het hulpprogramma iptables mij in eerste instantie buitengewoon onhandig leek in vergelijking met ipfw in FreeBSD. Gelukkig, na een tijdje ermee te hebben gewerkt, worden al deze vlaggen zoals -A, -D, -j en andere bekend, dus wees geduldig. Laten we eens kijken naar de belangrijkste commando's.

Toon alle regels:

Het is je misschien opgevallen dat Netfilter een soort "ketens" heeft - tenminste INPUT, OUTPUT en FORWARD.

Ik heb persoonlijk ook een Docker-ketting op mijn auto. Voor het eerst kun je de eerste twee beschouwen als respectievelijk al het inkomende en uitgaande verkeer, en de rest tijdelijk vergeten. De kans is groot dat je ze helemaal niet nodig zult hebben.

Alle regels verwijderen:

Beleid wijzigen (standaardgedrag) chaining:

iptables -P INPUT DROP
iptables -P INGANG ACCEPTEREN

Toegang weigeren vanaf host / subnet:

iptables -A INPUT -s 123.45.67.89 -j DROP
iptables -A INPUT -s 123.45.0.0/16-j DROP

U kunt ook domeinnamen gebruiken:

iptables -A INPUT -s example.com -j DROP

Uitgaande verbindingen blokkeren:

iptables -A UITVOER -d 123.45.67.89 -j DROP

Negatieven kunnen worden gebruikt in regels:

iptables -EEN INPUT! -s 123.45.67.89 -j DROP

Een regel verwijderen op nummer in de keten:

iptables -D INGANG 1

Een regel verwijderen op basis van wat deze doet:

iptables -D INPUT -s 123.45.67.89 -j DROP

De optie -p geeft het protocol aan. U kunt alle, icmp, tcp, udp of het protocolnummer uit / etc / protocollen gebruiken. De vlag -sport geeft de poort aan van waaruit het pakket is verzonden en -dport geeft de bestemmingspoort aan:

iptables -A INPUT -p tcp -sport80-j ACCEPTEREN
iptables -A INPUT -p tcp -dport80-j ACCEPTEREN

Voeg een regel toe aan het begin van een keten:

iptables -I INPUT ...

Of u kunt een specifieke positie specificeren:

iptables-save> /etc/iptables.rules

Regels herstellen:

iptables-herstel

Laten we nu eens kijken naar enkele praktische voorbeelden. Dit is bijvoorbeeld de emulatie van een netsplitsing in een test die het gedrag controleert van een toepassing die Akka Cluster gebruikt:

uitvoeren (node1, s "iptables -A INPUT -s $ node2 -j DROP")
uitvoeren (node1, s "iptables -A INPUT -s $ node3 -j DROP")
uitvoeren (node1, s "iptables -A OUTPUT -d $ node2 -j DROP")
uitvoeren (node1, s "iptables -A OUTPUT -d $ node3 -j DROP")

Herstel is precies hetzelfde, behalve dat de vlag -A wordt vervangen door de vlag -D.

Een ander voorbeeld. Het is nodig om uit te zoeken welke poorten op de machine luisteren en de extra poorten te sluiten. We gaan naar de auto en zeggen:

Uitvoervoorbeeld:

Actieve internetverbindingen (alleen servers)
Proto Recv-Q Send-Q Lokaal adres Buitenlands adres Staat PID / Prog-naam
tcp 0 0 0.0.0.0:80 0.0.0.0:* LUISTER 3210 / nginx
tcp 0 0 0.0.0.0:4369 0.0.0.0:* LUISTER 1789 / epmd
tcp 0 0 0.0.0.0:22 0.0.0.0:* LUISTER 797 / sshd
tcp 0 0 127.0.0.1:5432 0.0.0.0:* LUISTER 990 / postgres

Nginx en SSHd surfen op internet, dat is prima. PostgreSQL luistert alleen naar de lokale interface, dus daar is ook geen probleem mee. Maar de epmd steekt uit (je kunt het controleren met telnet vanaf een andere machine), en dit is niet goed. U kunt alleen poort 4369 sluiten. Hoe u dit doet, is hierboven weergegeven. Of je kunt nog verder gaan en alle verbindingen van buitenaf naar poort 81 en ouder weigeren:

iptables -A INPUT -m meerdere poorten \
-p tcp —dports81: 65535! -s 127.0.0.0/8-j DROP

Dit gebruikt de multiport-extensie om poortbereiken op te geven.

Wij controleren of alles werkt. Indien OK, sla de regels op:

iptables-save> /etc/iptables.rules

Om de regels op te halen bij het opstarten van het systeem, maakt u een nieuw bestand /etc/network/if-pre-up.d/iptables:

iptables-herstelexit0

... en wij zeggen:

chmod + x /etc/network/if-pre-up.d/iptables

Deze methode is geverifieerd om te werken op Ubuntu 14.04 LTS.

Debian zou ook moeten werken. Een beschrijving van een alternatieve manier om firewallregels te herstellen bij het opstarten van het systeem vindt u in het reeds genoemde artikel over OpenVPN.

Aanvullende bronnen voor degenen die meer willen weten over Netfilter:

Hoe configureert u firewalls op uw servers?

Tags: Linux, Beveiliging, Netwerken.

Het iptables-opdrachtregelhulpprogramma wordt gebruikt om de netfilter-firewall te configureren die is ingebouwd in een op Linux-kernel gebaseerd systeem.

Deze handleiding is geschikt voor zowel dummies die de aspecten van netwerkbeveiliging willen begrijpen, als ervaren specialisten als spiekbriefje.

Instellingsprincipe:

De algemene syntaxis voor het gebruik van iptables is:

iptables -t<таблица> <команда> <цепочка>[Kamer]<условие> <действие>

<таблица>

Netfilter-regels zijn verdeeld over 4 tabellen, die elk hun eigen doel hebben (meer details hieronder). Het wordt gespecificeerd met de -t toets, maar als deze parameter niet is gespecificeerd, wordt de actie uitgevoerd voor de standaard tabel - filter.

<команда>

De commando's geven aan wat voor soort actie we uitvoeren op netfilter, bijvoorbeeld een regel maken of verwijderen.

<цепочка>

Elke tabel heeft ketens, voor elk waarvan de regels zelf worden gemaakt. Voor de bovenstaande filtertabel zijn er bijvoorbeeld drie vooraf gedefinieerde ketens: INPUT (inkomende pakketten), OUTPUT (uitgaand) en FORWARD (transit).

[Kamer]

Bij sommige commando's moet een regelnummer worden opgegeven, bijvoorbeeld voor verwijderen of bewerken.

<условие>

Een voorwaarde beschrijft de criteria voor het verwerken van een bepaalde regel.

<действие>

Nou, in feite, wat doen we met het pakket als het voldoet aan de criteria van de aandoening.

* Om eerlijk te zijn, is het vermeldenswaard dat de actietoets niet aan het einde hoeft te gaan. Dit formaat wordt alleen het vaakst gevonden in instructies en maakt het gemakkelijker om de regels te lezen.

Iptables-sleutels en voorbeelden van hun gebruik

Voor het werken met tabellen (iptables -t)

Ter herinnering: alle regels in netfilter zijn verspreid over tabellen. Om met een specifieke tabel te werken, moet u de schakeloptie -t gebruiken.

Commando's

De volgende toetsen bepalen wat het hulpprogramma iptables doet.

Sleutel Beschrijving en voorbeelden
-EEN Een regel toevoegen aan het einde van de lijst:
iptables -A INPUT -s 192.168.0.15 -j DROP
inkomend van 192.168.0.15 weigeren.
-D Een regel verwijderen:
iptables -D INGANG 10
verwijder de regel in de INPUT-keten genummerd 10.
-I Een regel invoegen in een specifiek deel van de lijst:
iptables -I INPUT 5 -s 192.168.0.15 -j DROP
plaats regel 5e op de lijst.
-R Vervanging van de regel.
iptables -R UITGANG 5 -s 192.168.0.15 -j ACCEPTEREN
vervang onze 5e regel van verbieden naar toegeeflijk.
-F De regels in de keten opruimen.
iptables -F INPUT
-Z Statistieken resetten.
iptables -Z INPUT
-N Keten creatie.
iptables -N CHAINNIEUW
-X Een ketting verwijderen.
iptables -X CHAINNIEUW
-P Een standaardregel definiëren.
iptables -P INPUT DROP
-E Hernoem de keten.
iptables -E CHAINNIEUWE CHAINOLD

Conditie

Deze sleutels definiëren de voorwaarden van de regel.

Sleutel Beschrijving en voorbeelden
-P Netwerkprotocol. Geldige opties zijn TCP, UDP, ICMP of ALL.
iptables -A INPUT -p tcp -j ACCEPT
sta alle inkomende tcp-verbindingen toe.
-s Bronadres - hostnaam, IP-adres of subnet in CIDR-notatie.
iptables -A INPUT -s 192.168.0.50 -j DROP
inkomende van host weigeren 192.168.0.50
-D Bestemmingsadres. Het gebruiksprincipe is vergelijkbaar met de vorige -s-switch.
iptables -A OUTPUT -d 192.168.0.50 -j DROP
uitgaande naar host 192.168.0.50 weigeren
-I De netwerkadapter via welke de pakketten worden ontvangen (INPUT).
iptables -A INPUT -i eth2 -j DROP
inkomende weigeren voor ethernet-interface eth2.
-O Netwerkadapter waarvan pakketten vertrekken (OUTPUT).
iptables -A OUTPUT -o eth3 -j ACCEPT
laat uitgaand van ethernet-interface eth3 toe.
—Dpoort Haven van bestemming.
iptables -A INPUT -p tcp -dport 80 -j ACCEPTEREN
inkomend op poort 80 toestaan.
-Sport Bron poort.
iptables -A INPUT -p tcp -sport 1023 -j DROP
inkomend van poort 1023 weigeren.

De vermelde sleutels ondersteunen ook de constructie met het teken ! .

Netfilter instellen met iptables

Het keert de voorwaarde bijvoorbeeld om
iptables -A INPUT -s! 192.168.0.50 -j DROP
zal de verbinding met alle hosts weigeren behalve 192.168.0.50.

Acties

Acties die moeten worden uitgevoerd op een pakket dat overeenkomt met de criteria van de voorwaarde. Elke tabel heeft zijn eigen set geldige acties. Opgegeven met een sleutel -J.

tafel Actie Beschrijving
filter AANVAARDEN Lost het pakket op.
LATEN VALLEN Ontkent het pakket.
AFWIJZEN Voorkomt dat het bericht naar de bron wordt verzonden.
nat MASKERADE Vervangt voor uitgaande pakketten het bron-IP-adres door het adres van de interface van waaruit het pakket vertrekt.
SNAT Vergelijkbaar met MASQUERADE, maar met een specifieke netwerkinterface waarvan het adres zal worden gebruikt voor spoofing.
DNAT Adresspoofing voor inkomende pakketten.
OMLEIDING Leidt het verzoek om naar een andere poort op hetzelfde systeem.
mangel Servicevoorwaarden Wijziging van het TOS-veld (prioritering van verkeer).
DSCP DSCP-wijziging (ook prioritering van verkeer).
TTL Wijzig TTL (pakketlevensduur).
HL Vergelijkbaar met TTL, maar dan voor IPv6.
MARKERING Pakketmarkering. Gebruikt voor daaropvolgende filtering of vormgeving.
CONNMARK Verbindingsmarkering.
TCPMSS De MTU-waarde wijzigen.

Voorbeelden van veelgebruikte iptables-opdrachten

Algemene opdrachten

Bekijk regels met hun nummers:

iptables -L —regelnummers

Voor elke tafel moet je de regels apart bekijken:

iptables -t nat -L --regelnummers

Alle regels verwijderen:

Standaardregels instellen:

iptables -P INPUT DROP

iptables -P OUTPUT DROP

* in deze voorbeelden werkt standaard voor alle inkomende (INPUT) en uitgaande (OUTPUT) pakketten de deny-regel (DROP).

Sta alles toe

Methode 1. Door een regel toe te voegen:

iptables -I INPUT 1 -j ACCEPTEREN

iptables -I OUTPUT 1 -j ACCEPTEREN

iptables -I FORWARD 1 -j ACCEPTEREN

* deze drie commando's zullen regels creëren die alle inkomende, uitgaande en transitpakketten toestaan.

Methode 2. Door de regels op te schonen:

* hier verwijderen we eerst alle regels (-F) en stellen vervolgens het standaardbeleid in - inkomend, uitgaand en doorvoer toestaan ​​(-S).

Methode 3. De service uitschakelen (het is handig om de firewall een tijdje uit te schakelen voor het diagnosticeren van problemen):

Werken met regels

Voeg een regel toe aan het einde van de lijst:

iptables -A INPUT -p tcp -dport 25 -j ACCEPTEREN

iptables -A INPUT -p tcp -s! 192.168.0.25 —dport 993 -i eth0 -j ACCEPTEREN

Poortbereik toevoegen:

iptables -A INPUT -p tcp -dport 3000: 4000 -j ACCEPT

* in dit geval van 3000 tot 4000.

Regel invoegen:

iptables -I FORWARD 15 -p udp -d 8.8.8.8 -dport 53 -i eth1 -j ACCEPTEREN

Port forwarding

Er zijn twee manieren om te configureren.

1. Regels PREROUTING + POSTROUTING:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 19.8.232.80 —dport 22 -j DNAT —naar-bestemming 192.168.1.15:2222

iptables -t nat -A POSTROUTING -p tcp -m tcp -s 192.168.1.15 —sport 2222 -j SNAT —naar-bron 19.8.232.80:22

* waar 19.8.232.80 - het adres waarop we verbindingsverzoeken beluisteren; 22 - poort voor doorsturen; 192.168.1.15 2222 - interne poort.

2. PREROUTING + FORWARD-regels:

iptables -t nat -A PREROUTING -p tcp -i eth1 —dport 22 -j DNAT —naar-bestemming 192.168.1.15:2222

iptables -A FORWARD -p tcp -d 192.168.1.15 —dport 22 -m state —state NIEUW, GEVESTIGD, GERELATEERD -j ACCEPTEREN

* waar eth1- de netwerkinterface waarop we luisteren naar verzoeken; 22 - poort voor doorsturen; 192.168.1.15 - intern IP-adres, waarnaar wij alle verzoeken doorsturen; 2222 - interne poort.

Installatie starten

SSH toestaan:

iptables -A INPUT -p tcp -dport 22 -j ACCEPTEREN

We hebben het beleid ingesteld om inkomend te verbieden en alle uitgaande toe te staan:

iptables -P UITVOER ACCEPTEREN

Maak een regel om apt-get correct te laten werken:

iptables -A INPUT -p tcp —sport 80 -m status —status GEVESTIGD -j ACCEPTEREN

ICMP toestaan ​​(voor ping-opdracht):

iptables -A INPUT -p icmp -j ACCEPT

Bewaarregels (permanent)

Standaard werken alle regels niet meer nadat het netwerk of de computer opnieuw is opgestart. Er zijn verschillende manieren om de regels te configureren om de regels te behouden na een herstart.

Methode 1.iptables-save

We slaan de regels op in een bestand:

iptables-save> /etc/iptables.rules

Open de netwerkinstellingen:

vi / etc / netwerk / interfaces

en voeg de regel toe:

pre-up iptables-restore< /etc/iptables.rules

Methode 2.iptables-persistent

Installeer het iptables-persistent pakket:

apt install iptables-persistent

Voer de opdracht in om de regels op te slaan:

service iptables-persistent save

Methode 3.service iptables

Werkt op oudere Linux-versies:

Methode 4.iptables.init

Werkt op CentOS:

/usr/libexec/iptables/iptables.init opslaan

Ubuntu en CentOS

Er zijn standaard geen iptables op moderne Ubuntu- en CentOS-besturingssystemen.

U moet het installeren of nieuwere hulpprogramma's gebruiken.

Op CentOS

Firewall-cmd wordt gebruikt als een standaard firewallbeheerprogramma. Lees voor meer informatie de instructie Hoe firewalld in CentOS te configureren.

Als u iptables moet gebruiken, installeer dan het hulpprogrammapakket:

yum installeer iptables-services

Firewall uitschakelen:

systemctl stop firewalld

systemctl firewalld uitschakelen

We activeren en voeren iptables uit:

systemctl iptables inschakelen

In Ubuntu

Ufw wordt nu gebruikt om de firewall te beheren.

Installeer het volgende pakket om met iptables te werken:

apt-get install iptables-persistent

ufw uitschakelen:

# Netwerken # Beveiliging # UNIX # Ubuntu # Linux

Was deze tutorial nuttig voor u?

BUITEN DE VUURMUUR:
FIREWALL (FIREWALL) EN INTERNETGATEWAY
DEBAN GNU / LINUX 4.0 ETCH

Een praktische gids voor het organiseren van veilige internettoegang
vanaf een aparte computer en vanaf een lokaal netwerk in Debian GNU / Linux 4.0 Etch
Een beetje theorie

Elke verbinding met internet maakt het niet alleen mogelijk om verbinding te maken met verschillende servers en sites, maar creëert ook een potentieel gevaar van penetratie van buitenaf in onze computer. Dit gevaar mag niet worden verwaarloosd, aangezien de meeste pogingen tot ongeautoriseerde toegang tot de computers van gebruikers tegenwoordig vanaf internet deel uitmaken van een goed georganiseerde criminele onderneming. Na een succesvolle inbreuk op uw systeem, zullen ze proberen uw computer te gebruiken voor het verzenden van spam of voor het organiseren van DoS-aanvallen op andere computers of voor andere snode doeleinden. Het negeren van dit gevaar zal in het gunstigste geval uw verkeerskosten verhogen en de prestaties van uw computer vertragen; in het slechtste geval kan het u ongewild betrekken bij de criminele activiteiten van cybergroepen.

De situatie wordt verergerd door het feit dat in sommige (nog steeds) wijdverbreide besturingssystemen veel poorten standaard open worden gelaten, waardoor een aanvaller vanaf internet verbinding kan maken met de gebruiker zonder dat deze zich ervan bewust is.

Om ongeautoriseerde verbindingen van buitenaf te voorkomen en om inkomend / uitgaand verkeer in het besturingssysteem te filteren, moet een speciaal programma worden gebruikt - firewall(Engelse firewall), ook wel bekend als firewall en firewall... Hieronder staat een eenvoudig voorbeeld van het opzetten van een firewall in een gratis besturingssysteem. Debian GNU / Linux 4.0.

Het gebruik van een firewall wordt vooral relevant als u meer dan één computer heeft, maar thuis- of kantoornetwerk wiens computers online gaan.

Zelfs een klein lokaal netwerk moet goed georganiseerd zijn. Stel dat u een snel internettoegangspunt hebt (bijvoorbeeld een ADSL-modem) met een Ethernet-interface (d.w.z. netwerk).

De verleiding is groot (verhit door ongeletterde aanbevelingen, zoals bijvoorbeeld in de instructies voor mijn ADSL-modem) om de modem rechtstreeks op de switch aan te sluiten en vervolgens op de switch aan te sluiten allemaal computers van het lokale netwerk. In dit geval geeft de modem dynamisch lokale IP-adressen uit via de switch, maar het blijkt dat elke computer alleen wordt gelaten met internet! Noch een modem, noch een switch kan een obstakel worden voor een kwaadwillende. Een aanvaller kan scannen allemaal computers van een lokaal netwerk dat op deze manier is georganiseerd.

De logische en veilige oplossing is om te creëren barrière tussen de modem en het lokale netwerk - in de vorm van een aparte computer waarop een "firewall" (firewall) is geconfigureerd. Deze computer heeft twee interfaces: de ene "lijkt" op internet (dat wil zeggen, hij is fysiek verbonden met de modem), de andere is gericht op het lokale netwerk (en is fysiek verbonden met de switch waarop de andere computers ook zijn aangesloten) verbonden). Omdat onze computer met een firewall nu een knooppunt is voor andere computers om toegang te krijgen tot internet, wordt deze ook wel poort(Engelse poort).

Met een dergelijke organisatie van het lokale netwerk wordt de kans op hacken aanzienlijk verminderd - een aanvaller "ziet" alleen de gateway vanaf internet en er is een firewall op de gateway geïnstalleerd en het is niet eenvoudig om deze te hacken.

iptables instellen op Linux voor dummies

Lokale netwerkcomputers kunnen op internet surfen en blijven relatief veilig.

Een firewall configureren met behulp van de arno-iptables-firewall-configurator

Een firewall organiseren in GNU / Linux het programma wordt gebruikt iptables, die in de regel onmiddellijk wordt geïnstalleerd bij het installeren van de meeste distributies. V Debian GNU / Linux je kunt dit controleren door te starten met beheerdersrechten bekwaamheid... Installeer indien nodig iptables.

Echter, handmatige configuratie iptables is een niet-triviale taak en kan alleen worden gedaan door specialisten op het gebied van systeembeheer. Om de regels te configureren waarmee de firewall zal werken, is het daarom beter om te gebruiken speciale configurator... V Debian GNU / Linux Dit programma arno-iptables-firewall... Bij het opstarten stelt het een reeks vragen, op basis waarvan het regels genereert voor het functioneren van de firewall. iptables.

We typen in de console met superuser-rechten:

#aptitude installeer arno-iptables-firewall

Aan het begin van de installatie zal het programma vragen of we de firewall er echt mee willen configureren. iptables:

Eerst moet u de externe interface specificeren - "kijkend" naar internet, dat wil zeggen. aangesloten op het modem. Interface-instellingen worden gedefinieerd in het configuratiebestand / etc / netwerk / interfaces... Het kan er bijvoorbeeld zo uitzien:

# Dit is de lo-interface - verwijst naar onze machine zelf. auto lo iface lo inet loopback-adres 127.0.0.1 netmask 255.0.0.0 # Dit is de eth0-interface, die is verbonden met internet (ADSL-modem) # De bijzonderheid is dat het IP-adres dynamisch wordt toegewezen door de ISP, # dus de optie dhcp auto eth0 is ingesteld iface eth0 inet dhcp # Dit is de interface die naar het lokale netwerk is gericht # Het lokale netwerkadres is 192.168.2.0/24 # Voor veiligheidsdoeleinden in het lokale netwerk heeft de gateway een statisch IP-adres - 192.168.2.1, # daarom is de statische optie ingesteld # Netmasker - 255.255.255.0 # Het netwerkuitzendadres is in dit geval 192.168.2.255 auto eth1 iface eth1 inet statisch adres 192.168.2.1 netmask 255.255.255.0 broadcast 192.168.2.255

Dus, kijkend naar de instellingen / etc / netwerk / interfaces, geven we aan de firewall-configurator aan dat onze externe interface is eth0:

Op de vraag of de provider ons een IP-adres geeft dynamisch(via DHCP), antwoorden we bevestigend:

De volgende vraag is welke diensten vanaf onze computer aan externe internetgebruikers worden geleverd. We hebben er geen! Wij houden ons niet bezig met professionele webhosting en zijn niet van plan om informatie naar buiten te verspreiden. We laten de rij leeg.

Dan komt de vraag of we diensten gaan leveren via UDP. Ook nee - en laat de regel ook leeg!

Moeten we gepingd worden van de buitenwereld (controleren of er een verbinding is met de computer waarop de firewall is geïnstalleerd)? In ons geval is dit volkomen acceptabel:

Dit voltooit de configuratie voor een individuele computer die geen LAN-gateway is. Als we de computer als gateway willen gebruiken, moeten we nog een paar vragen beantwoorden. We geven de interface aan waarmee de gateway naar het lokale netwerk is gericht - in ons geval is dat: eth1 zoals blijkt uit / etc / netwerk / interfaces(laat dit veld anders leeg voor een "eenzame" computer):

Op de vraag of NAT-vertaling is toegestaan, d.w.z. het omleiden van verkeer van internet via de gateway naar het lokale netwerk en vice versa, we antwoorden "ja" - dit is in dit geval een van onze hoofdtaken:

Dan rijst de vraag: welk segment van het lokale netwerk kan worden toegelaten via doorschakeling naar externe netwerken? Alle computers van het lokale netwerk hebben toegang tot internet; stel de waarde opnieuw in 192.168.2.0/24

Tot slot bevestigen we onze wens om te lanceren iptables zonder extra verificatie van onze kant van de automatisch gegenereerde firewallregels door de configurator:

Daarna wordt, als alles goed is gegaan, een bericht weergegeven dat lijkt op het onderstaande. Het zal nu verschijnen bij elke opstart van de gateway-computer en informeren over de succesvolle lancering van de firewall:

Arno's Iptables Firewall Script v1.8.8c ——————————————————————————- Sanity checks geslaagd ... OK IPTABLES-module gedetecteerd ...

Extra IPTABLES-modules laden: Alle IPTABLES-modules geladen! Configureren / proc /…. instellingen: Anti-spoof inschakelen met rp_filter SYN-flood bescherming inschakelen via SYN-cookies Het loggen van marsmannetjes uitschakelen Het accepteren van ICMP-omleidingsberichten uitschakelen Het max. aantal gelijktijdige verbindingen naar 16384 Bescherming inschakelen tegen door de bron gerouteerde pakketten Standaard conntrack-timeouts instellen Vermindering van het DoS-vermogen inschakelen Standaard TTL = 64 instellen ECN uitschakelen (Expliciete congestiemelding) Ondersteuning inschakelen voor dynamische IP's Flushing-routetabel / proc / setup klaar . .. Regels doorspoelen in de filtertabel Standaard (veilig) beleid instellen Loglevel "info" gebruiken voor syslogd Firewallregels instellen: —————————————————————— ——— - Pakketten accepteren van het local loopback-apparaat Instellen van de maximale pakketgrootte via MSS inschakelen Mangeling TOS inschakelen Loggen van stealth-scans (nmap-sondes enz.) ingeschakeld Logboekregistratie van pakketten met slechte TCP-vlaggen ingeschakeld Loggen van ONGELDIGE pakketten uitgeschakeld Loggen van gefragmenteerde pakketten ingeschakeld Logboekregistratie van toegang vanaf gereserveerde adressen ingeschakeld Anti-spoofregels instellen Aangepaste IPTABLES-regels lezen van / etc / arno-iptables-firewall / aangepaste regels Laden (gebruikers)plug-ins Instellen van INPUT-beleid voor het externe net (INET): Ena bling-ondersteuning voor een door DHCP toegewezen IP op externe interface(s): eth0 Logging van expliciet geblokkeerde hosts ingeschakeld Logging van geweigerde lokale uitvoerverbindingen ingeschakeld Pakketten worden NIET gecontroleerd op privébronadressen De hele wereld toestaan ​​ICMP-verzoeken te verzenden (ping) Logging van gedropte ICMP-request (ping) pakketten ingeschakeld Logging van verwijderde andere ICMP-pakketten ingeschakeld Logging van mogelijke stealth-scans ingeschakeld Logging van (andere) verbindingspogingen naar PRIVILEGED TCP-poorten ingeschakeld Logging van (andere) verbindingspogingen naar PRIVILEGED UDP-poorten ingeschakeld Logging van ( andere) verbindingspogingen naar ONBEVOEGDE TCP-poorten ingeschakeld Logboekregistratie van (andere) verbindingspogingen naar ONBEVOEGDE UDP-poorten ingeschakeld Logboekregistratie van andere IP-protocollen (niet-TCP / UDP / ICMP) verbindingspogingen ingeschakeld Logboekregistratie van ICMP-flooding ingeschakeld INET-beleid toepassen op extern (INET) interface: eth0 (zonder een extern subnet gespecificeerd) Instellen van INPUT-beleid voor interne (LAN) interface(s): eth1 Toestaan ​​van ICMP-verzoeken (ping) A alle (andere) protocollen toestaan ​​FORWARD-beleid instellen voor interne (LAN) interface(s): eth1 Loggen van geweigerde LAN-> INET FORWARD-verbindingen ingeschakeld LAN-> INET-beleid instellen: ICMP-verzoeken toestaan ​​(ping) Alle (overige) toestaan ) protocollen Masquerading (NAT) inschakelen via externe interface(s): eth0 Toevoegen (interne) host(s): 192. 168.2.0 / 24 Beveiliging is GEFORCEERD voor externe interface(s) in de FORWARD-keten 16 jan 23:53:12 Alle firewallregels zijn toegepast.

Notitie 1. In de meeste gevallen vindt de succesvolle lancering van de firewall plaats na de eerste communicatie met de configurator. Als iets niet werkt, is het sterk aanbevolen om de configuratie te herhalen door de configurator opnieuw te starten met superuser-rechten:

# dpkg-arno-iptables-firewall opnieuw configureren

Dit elimineert een incidentele fout die zou kunnen optreden bij het beantwoorden van de vragen van de configurator tijdens de eerste ervaring ermee. Als dit ook niet helpt, kunt u proberen het configuratiebestand van het programma handmatig te corrigeren. arno-iptables-firewall, namelijk: /etc/arno-iptables-firewall/firewall.conf... Het kan handig zijn om de homesite van de maker van dit programma te bezoeken op http://rocky.eld.leidenuniv.nl/. Het bevat een zeer informatieve handleiding voor het werken met het programma, een interessante FAQ en daarnaast is er informatie over nieuwe versies van het programma.

Opmerking 2. Vergeet dat niet niemand een firewall kan geen 100% garantie geven voor de veiligheid van een computer op internet. U kunt firewallbeveiliging echter niet negeren. We moeten alles doen wat in onze macht ligt om dan op de barmhartigheid van God te vertrouwen. "Als de Heer de stad niet bewaart, is de wachter tevergeefs"(Ps. 126: 1).

Bron van artikel

Ik heb lang geleden een blogpost geschreven over de basisregels van Iptables voor de werkende gebruiker en je zou deze en het gerelateerde artikel over Stateful firewall waarschijnlijk moeten lezen.

Maar pre-kernel 2.6.39 (die het bevat en je kunt het gebruiken voor het whitelisten van IP als je er meer dan 10 hebt voor het whitelisten (waarbij 10 willekeurig is)).

Iptables instellen voor dummies

Het eerste handvat staat waarvan we weten dat we het willen accepteren of verwijderen, en de interfaces.

Als u alleen IP wilt toestaan, staatloos

de kans is groter dat je hiermee in de problemen komt en ik raad aan om de staat te gebruiken om je leven gemakkelijker te maken. Lost bijvoorbeeld niet op en zal zeker voor problemen zorgen bij bepaalde applicaties.

Elke computer die op het netwerk is aangesloten, loopt mogelijk gevaar. Er zijn veel bedreigingen op het netwerk, variërend van programma's die op welke manier dan ook proberen het systeem binnen te dringen en eindigend met hackers die toegang willen krijgen tot de computer die ze nodig hebben. En de software die op de computer is geïnstalleerd, bevat mogelijk nog niet bekende en niet-gepatchte kwetsbaarheden, die een beveiligingslek kunnen worden.

Als dit voor thuiscomputers niet erg relevant is, omdat ze via routers en NAT met het netwerk zijn verbonden, waardoor ze voor het externe netwerk worden verborgen, dan is het voor servers relevanter dan ooit. Het Linux-besturingssysteem heeft een zeer flexibele en betrouwbare iptables-firewall ingebouwd in de kernel.

Het is met behulp van dit programma dat het systeem wordt beschermd tegen externe inbraken, port forwarding en nog veel meer acties met verkeer. Maar het nadeel is dat het een beetje lastig in te stellen is. Dit artikel behandelt het opzetten van iptables voor dummies. Ik hoop dat je daarna vol vertrouwen de basismogelijkheden van iptables kunt gebruiken.

Het subsysteem iptables en Netfilter zijn al geruime tijd ingebouwd in de Linux-kernel. Alle netwerkpakketten die door de computer gaan, door de computer worden verzonden of voor de computer bestemd zijn, stuurt de kernel door het iptables-filter. Daar zijn deze pakketten vatbaar voor controles en vervolgens wordt voor elke controle, als deze wordt doorstaan, de gespecificeerde actie uitgevoerd. Het pakket wordt bijvoorbeeld doorgegeven aan de kernel om naar het doelprogramma te worden verzonden, of wordt weggegooid.

Soorten pakketten

Alle pakketten zijn onderverdeeld in drie soorten: inkomend, uitgaand en passerend. Inbox zijn de berichten die naar deze computer zijn verzonden, uitgaand zijn de berichten die van deze computer naar het netwerk zijn verzonden. En passerende zijn pakketjes die gewoon verder moeten worden doorgestuurd, bijvoorbeeld als je computer als router fungeert.

Dienovereenkomstig zijn in het iptables-filter alle pakketten verdeeld in drie vergelijkbare ketens:

  • Invoer- verwerkt inkomende pakketten en verbindingen. Als een externe gebruiker bijvoorbeeld probeert verbinding te maken met uw computer via ssh of een website u de inhoud ervan stuurt wanneer de browser daarom vraagt. Al deze pakketten komen in deze keten terecht;
  • vooruit- deze ketting wordt gebruikt voor het passeren van verbindingen. Dit omvat pakketten die naar uw computer worden verzonden, maar daar niet voor bedoeld zijn, ze worden gewoon via het netwerk naar hun bestemming doorgestuurd. Zoals ik al zei, wordt dit waargenomen op routers of bijvoorbeeld als uw computer wifi distribueert;
  • uitvoer- deze keten wordt gebruikt voor uitgaande pakketten en verbindingen. Dit omvat pakketten die zijn gegenereerd wanneer u een site probeert te pingen of wanneer u uw browser start en een site probeert te openen.

Maar als je denkt dat je de invoerketen gewoon helemaal kunt sluiten om de veiligheid te vergroten, dan heb je het mis. Het netwerk gebruikt zowel input- als outputketens. U probeert bijvoorbeeld te pingen, gegevens worden verzonden via uitvoer, maar het antwoord komt via invoer. Hetzelfde gebeurt bij het browsen op sites en andere activiteiten. Maar de voorwaartse keten wordt mogelijk helemaal niet gebruikt als uw computer geen router is. Dus de iptables-configuratie moet zeer zorgvuldig worden gedaan.

Regels en acties

Voordat u verder gaat met het maken van een lijst met iptables-regels, moet u overwegen hoe ze werken en wat ze zijn. Voor elk type pakket kunt u een set regels instellen die om de beurt worden gecontroleerd op naleving van het pakket, en als het pakket overeenkomt, dan de actie toepassen die in de regel is gespecificeerd. Regels vormen een keten, dus invoer, uitvoer en doorsturen worden ketens of regelketens genoemd. Er kunnen verschillende acties zijn:

  • AANVAARDEN- laat het pakket verder langs de keten van regels gaan;
  • LATEN VALLEN- verwijder het pakket;
  • AFWIJZEN- het pakket weigeren, er wordt een bericht gestuurd naar de afzender dat het pakket is afgewezen;
  • LOG- maak een record over het pakket in het logbestand;
  • WACHTRIJ- een pakket naar een aangepaste applicatie sturen.

Regels kunnen alle overeenkomsten controleren, bijvoorbeeld op ip, op ontvanger of afzenderpoort, pakketheaders en nog veel meer. Als een pakket niet aan een van de regels voldoet, wordt de standaardactie erop toegepast, meestal ACCEPTEREN.

Als we de regels hebben bedacht, kunnen we terug naar de ketens. Naast de hierboven genoemde, zijn er twee extra reeksen regels:

  • voorrouteren- het pakket komt deze keten binnen voordat het door iptables wordt verwerkt, het systeem weet nog niet waar het naartoe wordt gestuurd, naar invoer, uitvoer of doorstuurt;
  • postrouting- alle passerende pakketten die de voorwaartse keten al zijn gepasseerd, worden hier opgenomen.

Maar dat is niet alles. We hebben ook iptables-tabellen, waarmee het ook wenselijk is om te begrijpen.

Ipatables

Er is een ander abstractieniveau boven de reeksen regels in iptables, en dat zijn tabellen. Er zijn verschillende tabellen in het systeem en ze hebben allemaal een standaardset van invoer-, voorwaartse en uitvoerketens. Tabellen worden gebruikt om verschillende acties op pakketten uit te voeren, bijvoorbeeld voor wijziging of filtering. Dit is nu niet zo belangrijk voor u en het is voldoende om te weten dat het filteren van iptables-pakketten wordt uitgevoerd in de filtertabel. Maar we zullen ze allemaal behandelen:

  • rauw- ontworpen om te werken met onbewerkte zakken, terwijl ze nog niet zijn verwerkt;
  • mangel- bedoeld voor het wijzigen van pakketten;
  • nat- Biedt nat om te werken als u uw computer als router wilt gebruiken;
  • filter- de hoofdtabel voor pakketfiltering, standaard gebruikt.

Laten we, met bijna alles in theorie, eens kijken naar het iptables-opdrachtregelhulpprogramma, dat wordt gebruikt om het iptables-systeem te beheren.

Iptables-hulpprogramma

De iptables en het netfilter-subsysteem zijn in de kernel ingebouwd, maar een set hulpprogramma's om dit alles te beheren wordt niet altijd met het systeem meegeleverd. Om het hulpprogramma op Ubuntu te installeren, typt u:

sudo apt install iptables

Op Fedora-gebaseerde distributies is de installatie van iptables iets anders:

sudo yum installeer iptables

Zodra de installatie van iptables is voltooid, kunt u doorgaan naar de configuratie, maar laten we eerst eens kijken naar de syntaxis van het hulpprogramma. Meestal ziet het commando er als volgt uit:

-t tafel actieketen Extra opties

Laten we nu eens kijken naar de iptables-parameters, de tabel geeft de tabel aan waarmee moet worden gewerkt, deze parameter kan worden weggelaten, de actie is de gewenste actie, bijvoorbeeld een regel maken of verwijderen, en de aanvullende parameters beschrijven de actie en de regel die moet worden uitgevoerd.

Het blijft om de belangrijkste acties te overwegen die u met iptables kunt uitvoeren:

  • -EEN- voeg een regel toe aan de keten;
  • -MET- controleer alle regels;
  • -D- verwijder de regel;
  • -I- voeg een regel in met het vereiste nummer;
  • -L- alle regels in de huidige keten weergeven;
  • -S- toon alle regels;
  • -F- alle regels wissen;
  • -N- maak een ketting;
  • -X- verwijder de ketting;
  • -P- stel de standaardactie in.

Extra opties voor regels:

  • -P- specificeer het protocol, een van tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
    mh;
  • -s- specificeer het ip-adres van het apparaat dat het pakket verzendt;
  • -D- specificeer het ip-adres van de ontvanger;
  • -I- ingang netwerkinterface;
  • -O- uitgaande netwerkinterface;
  • -J- selecteer een actie als de regel overeenkomt.

Nu kunt u voorbeelden bekijken van hoe iptables is geconfigureerd.

Iptables-configuratievoorbeelden

We zullen een paar basisvoorbeelden bespreken, zodat u kunt consolideren wat u hierboven hebt gelezen.

Lijst met regels

Laten we eerst eens kijken hoe het opzoeken van de iptables-regels wordt uitgevoerd, de optie -L is hiervoor voldoende:

U kunt ook de gewenste keten specificeren om er alleen regels voor weer te geven:

iptables -L INPUT

Regels wissen

Je kunt iptables niet zomaar uitschakelen door de iptables-regelupdateservice te stoppen via systemd of zelfs de set configuratiehulpprogramma's te verwijderen. Het subsysteem werkt op kernelniveau en is niet afhankelijk van wat je daar hebt geïnstalleerd. Daarom, als je iets verkeerd doet, moet je de regels wissen. Voer hiervoor het volgende uit:

Of alleen voor een specifieke keten:

sudo iptables -F Invoer

Laat me u eraan herinneren dat al deze acties worden uitgevoerd voor de standaardtabel - filter.

Standaard regels

Zoals ik al zei, als geen enkele regel geschikt is voor een pakket, wordt de standaardactie erop toegepast. Het kan worden ingesteld met behulp van de -p optie:

sudo iptables -p INVOER ACCEPTEREN
$ sudo iptables -p UITVOER ACCEPTEREN
$ sudo iptables -p VOORWAARTS DROP

In dit voorbeeld staan ​​we INPUT- en OUTPUT-ketens toe, maar FORWARD niet.

Pakketten blokkeren

Om pakketten te blokkeren, kunnen we de DROP-actie gebruiken, we kunnen pakketten filteren die op veel criteria moeten worden geblokkeerd, bijvoorbeeld protocol, ip-adres, netmasker, poort en nog veel meer.

Dit is hoe de opdracht eruit zal zien, waarmee je een iptables-regel kunt toevoegen om alle inkomende pakketten van 10.10.10.10 te blokkeren:

sudo iptables -A INPUT -s 10.10.10.10 -j DROP

En nu uitgaande pakketten naar hetzelfde adres:

IP-bereikvergrendeling gebeurt op een vergelijkbare manier. Hiervoor moet u het netwerkmasker 10.10.10.0/24 gebruiken. Dit zijn alle adressen van 10.10.10.0 tot 10.10.10.255:

sudo iptables -A INPUT -s 10.10.10.0/24 -j DROP

Of een uitgebreide versie van het masker:

sudo iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP

Je kunt ook alle inkomende ssh-verbindingen blokkeren:

sudo iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP

Zoals je kunt zien, is het toevoegen van een iptables-regel heel eenvoudig.

Regels verwijderen

Het verwijderen van iptables-regels gaat op dezelfde manier als het maken van nieuwe, alleen in plaats van optie A moet u optie D gebruiken. Bekijk eerst de lijst met regels:

Dit is bijvoorbeeld hoe u de iptables-regel kunt verwijderen die de tweede is gemaakt:

sudo iptables -A OUTPUT -s 10.10.10.10 -j DROP

Je kunt iptables ook volledig wissen door het commando uit te voeren met de -F optie:

Definitie Itafels- opdrachtregelhulpprogramma, is een standaardinterface voor het beheren van de werking van een firewall (firewall) netfilter voor Linux-kernels 2.4, 2.6, 3.x, 4.x. Het hulpprogramma iptables vereist superuser (root) privileges.

We zullen omgaan met iptables en je kunt niet zonder een kleine theoretische introductie.

Om firewallregels correct op te stellen, moet je begrijpen hoe pakketten in het algemeen gaan en wat ermee gebeurt.

De volgorde van verplaatsing van transitpakketten

Stap tafel Keten Opmerking
1
2 mangel VOORBEREIDING Meestal wordt deze string gebruikt om wijzigingen aan te brengen in de pakketkop, bijvoorbeeld om bits te wijzigen Servicevoorwaarden enzovoort ..
3 nat VOORBEREIDING Deze keten wordt gebruikt om netwerkadressen te vertalen ( ). wordt later in een andere keten uitgevoerd.
4 Beslissen over verdere routing, d.w.z. op dit punt wordt besloten waar het pakket naartoe gaat - naar een lokale toepassing of naar een ander knooppunt op het netwerk.
5 mangel VOORUIT Dan gaat het pakket de ketting in VOORUIT tafels manipuleren.
6 Filter VOORUIT in een ketting VOORUIT alleen die pakketten worden ontvangen die naar een andere host gaan. Alle filtering van het transitverkeer moet hier worden uitgevoerd. Vergeet niet dat het verkeer in beide richtingen door deze keten gaat, houd hier rekening mee bij het schrijven van filterregels.
7 mangel POSTROUTING Deze keten is bedoeld om wijzigingen aan te brengen in de pakketkop nadat de laatste routeringsbeslissing is genomen.
9 nat POSTROUTING Deze ketting is in de eerste plaats bedoeld voor: Vertaling van bronnetwerkadres... Maskerade wordt hier ook uitgevoerd ( vermomd).
9 Uitgang netwerkinterface (bijvoorbeeld eth1).

Voor lokale toepassing (inkomende pakketten)

Stap tafel Keten Opmerking
1 Input netwerkinterface (bijv. eth0)
2 mangel VOORBEREIDING Meestal gebruikt om wijzigingen aan te brengen in de pakketkop, bijvoorbeeld om bits in te stellen Servicevoorwaarden enzovoort.
3 nat VOORBEREIDING Adresvertaling ( Vertaling van bestemmingsnetwerkadres).
4 Bepaal de route.
5 mangel INVOER Het pakket gaat de keten in INVOER tafels manipuleren. Hier worden de wijzigingen in de pakketkop aangebracht voordat deze worden doorgegeven aan de lokale toepassing.
6 filter INVOER Hier wordt inkomend verkeer gefilterd. Onthoud dat alle inkomende pakketten die aan ons zijn geadresseerd, door deze keten gaan, ongeacht van welke interface ze afkomstig zijn.
7 Lokaal proces/toepassing (d.w.z. serverprogramma of clientprogramma)

Van lokale processen (uitgaande pakketten)

Stap tafel Keten Opmerking
1 Lokaal proces (d.w.z. serverprogramma of clientprogramma).
2 Bepaal de route. Hier wordt bepaald waar het pakket naartoe gaat - naar welk adres, via welke netwerkinterface, enz.
3 mangel UITGANG Hier brengt u wijzigingen aan in de pakketkop. Filteren in deze keten kan negatieve gevolgen hebben.
4 nat UITGANG Deze keten wordt gebruikt voor netwerkadresvertaling (NAT) in pakketten die afkomstig zijn van lokale firewallprocessen.
5 Filter UITGANG Uitgaand verkeer wordt hier gefilterd.
6 mangel POSTROUTING Keten POSTROUTING de mangeltabellen worden voornamelijk gebruikt voor regels die wijzigingen moeten aanbrengen in de pakketheader voordat deze de firewall verlaat, maar nadat een routeringsbeslissing is genomen. Deze keten bevat alle pakketten, zowel de doorvoer als de pakketten die zijn gemaakt door lokale firewallprocessen.
7 nat POSTROUTING Hier wordt uitgevoerd Vertaling van bronnetwerkadres... Vermijd pakketfiltering in deze keten om ongewenste bijwerkingen te voorkomen. U kunt hier echter ook pakketten stoppen door het standaardbeleid toe te passen. LATEN VALLEN.
8 Netwerkinterface (bijv. eth0)

Zoals we begrijpen, zijn er drie hoofdtabellen:

  • mangel- Deze tabel is bedoeld voor bewerkingen op classificatie en markering van pakketten en verbindingen, evenals voor wijziging van pakketheaders (TTL- en TOS-velden).
  • filter- de hoofdtabel voor pakketfiltering, die standaard wordt gebruikt. In deze tabel vindt in feite pakketfiltering plaats.
  • nat- Biedt nat om te werken als u uw computer als router wilt gebruiken. Routeringsregels worden hier ingesteld.

voor tafel nat toepasselijke acties:

  • MASKERADE

Actie DNAT(Destination Network Address Translation) vertaalt bestemmingsadressen in pakketheaders. Met andere woorden, deze actie leidt pakketten om naar andere adressen dan die zijn gespecificeerd in de pakketheaders.

SNAT(Source Network Address Translation) wordt gebruikt om de bronadressen van pakketten te wijzigen. Met deze actie deelt u een enkel extern IP-adres tussen computers op het lokale netwerk om toegang te krijgen tot internet. In dit geval gebruikt de firewall SNAT, voert automatisch voorwaartse en achterwaartse adresvertaling uit, waardoor het mogelijk wordt om verbinding te maken met servers op internet vanaf computers in het lokale netwerk.

Vermomming ( MASKERADE) wordt voor dezelfde doeleinden gebruikt als: SNAT, maar in tegenstelling tot de laatste, MASKERADE legt een zwaardere belasting op het systeem. Dit gebeurt omdat elke keer dat deze actie vereist is, een IP-adres wordt gevraagd voor de netwerkinterface die in de actie is gespecificeerd, terwijl voor: SNAT Het IP-adres wordt direct aangegeven. Door dit verschil is echter MASKERADE kan werken in gevallen met een dynamisch IP-adres, d.w.z. wanneer je verbinding maakt met internet, zeg je door PPP, SLIP of DHCP.

iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -o eth0 -j MASQUERADE

uitvoeren MASKERADE voor alle pakketten die van het netwerk 10.8.0.0 naar de eth0-interface komen. Laten we voor de duidelijkheid zeggen dat we twee netwerkkaarten en twee netwerken hebben. We hebben een netwerk nodig 10.8.0.0/24 (de eerste netwerkkaart) zou bijvoorbeeld via internet kunnen gaan eth0 ( tweede netwerkkaart)

  • rauw- Ontworpen om acties uit te voeren met pakketten voordat ze door het systeem worden verwerkt.

De standaardtabel zelf filter.

  • INVOER- verwerkt verkeer dat rechtstreeks naar de host zelf gaat.
  • VOORUIT- hiermee kunt u transitverkeer filteren.
  • UITGANG- hiermee kunt u verkeer filteren dat afkomstig is van de host zelf.

Actie op een pakket.

  • AANVAARDEN- het pakket overslaan. Het pakket verlaat de huidige basisketen en gaat verder.
  • AFWIJZEN- blokkeer het pakket en informeer de bron over de weigering.
  • LATEN VALLEN- het pakket blokkeren zonder de bron op de hoogte te stellen van de weigering. Het heeft meer de voorkeur bij het filteren van verkeer op interfaces die met internet zijn verbonden, omdat het de informatie-inhoud van het scannen van hostpoorten door aanvallers verlaagt.
  • LOG- schrijf een record over het pakket naar het logbestand.

Het blijkt dat we een ketting hebben [tabel - filter] - [verkeer - INPUT] - [actie - DROP] De logica van acties lijkt alleen maar ingewikkeld. Ik denk dat we het met voorbeelden zullen uitvinden en dat alles eenvoudig zal worden.

Iptables-opdrachten:

  • -EEN voeg een regel toe aan het einde van de keten.
  • -D verwijder de regel.
  • -I voeg de regel in met het gewenste nummer.
  • -L print alle regels in de huidige keten.
  • -S alle regels afleiden.
  • -F alle regels duidelijk.
  • -N een ketting maken.
  • -X verwijder de ketting.
  • -P standaardactie instellen.

Laten we beginnen te begrijpen met specifieke voorbeelden.

iptables -A INPUT -p tcp -dport 80 -j ACCEPTEREN

-EEN een nieuwe regel toevoegen, INVOER voor inkomende pakketten, -P protocol, een van tcp, udp, udplite, icmp, icmpv6, esp, ah, sctp,
mh, - - dport bestemmingspoort 80 (alleen optie voor protocol), -J kies een actie als de regel overeenkomt, AANVAARDEN toestaan. Dat wil zeggen, inkomend tcp-verkeer op poort 80 toestaan.

De vermelde sleutels ondersteunen ook de constructie met het teken ! . Het keert de voorwaarde om, bijvoorbeeld:

iptables -A INPUT -s! 192.168.0.50 -j DROP

-s bronadres - hostnaam (www.help.com), IP-adres of subnet in CIDR-notatie (192.168.0.1/16), ! inversie, LATEN VALLEN verbieden. Alle inkomend verkeer weigeren behalve de bron 192.168.0.50 (als het niet voor was) ! , dan alleen ontkennen vanaf 192.168.0.50)

iptables -A INPUT -s 192.168.0.50 -j DROP

Inkomend verkeer van ip weigeren - 192.168.0.50 .

Lijst met regelcriteria:

  • -P Protocol, protocol kan ook worden gespecificeerd met behulp van een nummer of naam volgens de lijst in / etc / protocollen. Elk protocol kan worden gespecificeerd met het woord alles of het cijfer 0. Er zijn ook aanvullende parameters voor het protocol.: -Sport(—Bronpoort) Hiermee kunt u de uitgaande poort (of hun bereik) specificeren. —Dpoort(-Haven van bestemming) Hiermee kunt u de bestemmingspoort (of hun bereik) specificeren.
  • -s Specificeert het adres van de afzender. Het adres kan een IP-adres zijn (eventueel met een masker), een domeinnaam (in de laatste twee gevallen, voordat een regel aan de keten wordt toegevoegd, wordt de naam omgezet in een IP-adres).
  • -I Specificeert de inkomende netwerkinterface. Als de opgegeven interfacenaam eindigt met "+" (bijvoorbeeld eth +), dan voldoen alle interfaces waarvan de naam begint met de opgegeven naam (etho, eth1) aan de criteria.
  • -D Specificeert het adres van de ontvanger. De syntaxis is hetzelfde -s .
  • -O Definieert de uitgaande netwerkinterface. De syntaxis is hetzelfde -I.

Dezelfde criteria kunnen worden gecombineerd.

iptables -A INPUT -i eth0 -s 192 .168.0.0 -j DROP

Inkomende pakketten van interface weigeren eth0 en ip 192 .168.0.0... En op de interface eth1 de pakketten gaan door.

Wat als je weet voor het eerst niet welke poort je moet openen, u wilt bijvoorbeeld dat de FTP-server in passieve modus werkt. module conntrack over de status van de verbinding zal helpen, en meer specifiek het criterium - ctstate. De module is verbonden door de tag -m.

iptables -A INPUT -m conntrack -ctstate VASTGESTELD, GERELATEERD -j ACCEPTEREN

iptables -A INPUT -m conntrack —ctstate NIEUW -p tcp —dport 21 -j ACCEPTEREN # Sta toe om verbindingen op TCP-poort 21 te openen.

Mogelijke toestanden:

  • NIEUWE- de verbinding is niet open, dat wil zeggen, het pakket is de eerste in de verbinding.
  • VASTGESTELD- het pakket verwijst naar een reeds tot stand gebrachte verbinding. Dergelijke pakketten worden typisch ontvangen zonder extra filtering, zoals het geval is bij RELATED.
  • VERWANT- het pakket opent een nieuwe verbinding die logisch gerelateerd is aan de reeds bestaande, bijvoorbeeld het openen van een datakanaal in passieve FTP-modus. De verbinding krijgt status VERWANT als het is geassocieerd met een andere verbinding die het attribuut heeft VASTGESTELD.
  • INVALIDE- De INVALID-vlag betekent dat het pakket niet kan worden geïdentificeerd en daarom geen bepaalde status kan hebben.

iptables -A INPUT -m status -status GEVESTIGD, GERELATEERD -j ACCEPTEREN

S tate en de deologische voorloper van conntrack, heeft een enkele --state parameter, die vergelijkbaar is met de --ctstate parameter van de conntrack-module (maar, in tegenstelling tot deze, geen DNAT- en SNAT-statussen ondersteunt).

Laten we een snelle blik werpen op de belastingtabel, die te vinden is in het bestand / proc / net / ip_conntrack. Hierin staat een lijst met alle actieve verbindingen.

Tcp 6 300 VASTGESTELD src = 128. *. *. * Dst = 194. *. *. * Sport = 52524 dport = 2223 src = 194. *. *. * Dst = 128. *. *. * Sport = 2223 dport = 52524 mark = 0 gebruik = 2

De eerste is, zoals duidelijk is, het protocol, dan het decimale getal (wat betekent dat ik het niet weet), dan de levensduur van de verbinding. Verder is de status ESTABLISHED, dat wil zeggen, de verbinding is al tot stand gebracht, het gebeurt ook ONBEANTWOORD, wat betekent dat er nog geen responsverkeer is geweest. Vervolgens zijn de adressen van de afzender en ontvanger, de poort van de afzender en ontvanger. Verder is respectievelijk het tegenovergestelde waar, VERZEKERD geeft deze vlag aan dat de verbinding met vertrouwen tot stand is gebracht en dat dit record niet zal worden gewist wanneer het maximaal mogelijke aantal getraceerde verbindingen is bereikt.

Enkele kenmerken van de protocollen.

Een TCP-verbinding wordt altijd tot stand gebracht door de overdracht van drie pakketten, die een verbinding tot stand brengen en tot stand brengen waarmee in de toekomst gegevens worden verzonden. De sessie begint met de verzending SYN pakket, in reactie waarop wordt verzonden SYN / ACK pakket en bevestig de totstandkoming van het verbindingspakket ACK .

Zodra de tracer de eerste ( SYN) pakket en wijst het vervolgens de status toe NIEUWE... Zodra het tweede pakket ( SYN / ACK), dan krijgt de verbinding de status VASTGESTELD.

Bij het UDP-protocol is alles net even anders, dit protocol voorziet niet in het tot stand brengen en sluiten van een verbinding, maar het grootste nadeel is het gebrek aan informatie over de volgorde van binnenkomst van pakketten. Maar vanuit het oogpunt van de tracer is alles hetzelfde als bij TCP. Het eerste pakket dat aankomt, krijgt de status NIEUWE. Zodra u het antwoordpakket verzendt, wordt de status toegewezen VASTGESTELD. Het enige verschil is dat de status VERZEKERD pas wordt toegekend als er al meerdere pakketten zijn uitgewisseld.

Loggen van regeltoepassingen.

iptables geeft je de mogelijkheid om individuele pakketten en gebeurtenissen te loggen. Hiervoor wordt de actie toegepast LOG.

iptables -A INPUT -p tcp —syn -j LOG —log-niveau info —log-prefix "INPUT-pakketten"

-Log niveau Wordt gebruikt om het logniveau in te stellen. Zie de man syslog.conf voor een volledige lijst met niveaus. Meestal kunnen de volgende niveaus worden ingesteld: debuggen, info, merk op, waarschuwing, waarschuwen, foutje, fout, kritiek, alarmeren, ontstaan en paniek... Logboeken worden naar een bestand geschreven syslog.

—Log-voorvoegsel De toets stelt de tekst (prefix) in die voor alle berichten wordt gebruikt iptables... Berichten met een specifiek voorvoegsel kunnen dan gemakkelijk worden gevonden, bijvoorbeeld met grep... Het voorvoegsel kan maximaal 29 tekens lang zijn, inclusief spaties.

1 juni 17:12:20 debian-kernel: INPUT-pakketten IN = eth0 OUT = MAC = 02: 1e: 6d: 00: e2: 1c: 00: 01: e8: 11: 73: 69: 08: 00 SRC = 125.94. 12.95 DST = 194.87.239.104 LEN = 40 TOS = 0x00 PREC = 0x00 TTL = 52 ID = 38690 PROTO = TCP SPT = 12557 DPT = 23 VENSTER = 1460 $ RES = 0x00 SYN URGP = 0

Populaire iptables-beheeropdrachten.

iptables -L -n --regelnummersBekijk de lijst met regels.

-N poortnummer en ip in digitale vorm.

-Lijn nummers regel nummer.

iptables -F Stel de regels volledig opnieuw in.

iptables -P INGANG ACCEPTEREN Standaardregels voor de INPUT-tabel.
iptables -P UITVOER ACCEPTEREN Standaardregels voor de OUTPUT-tabel.
iptables -P VOORUIT DROP Standaardregels voor de FORWARD-tabel.

iptables -D INGANG 1Een regel verwijderen op nummer in de keten.

iptables -D INPUT -s 123.45.67.89 -j DROP Een regel verwijderen op basis van wat deze doet.

iptables -I INPUT ... Voeg een regel toe aan het begin van een keten.

iptables -I INPUT 3 ... Of u kunt een specifieke positie opgeven.

OMLEIDING

De REDIRECT-actie is ontworpen om pakketten van de ene set poorten naar de andere binnen één systeem om te leiden, zonder de gastheer te verlaten.
REDIRECT werkt alleen in PREROUTING- en OUTPUT-ketens van de tabel nat... De reikwijdte is dus beperkt tot alleen omleiding. Dit wordt meestal gebruikt voor een transparante proxy, wanneer een client van het lokale netwerk verbinding maakt met poort 80 en de gateway pakketten omleidt naar de lokale proxypoort:

iptables -t nat -A PREROUTING -p tcp —dport 80 -j REDIRECT —naar-poort 3128

Nieuwe regels worden niet automatisch opgeslagen en worden niet van kracht nadat de server opnieuw is opgestart. Daarom moeten we na het wijzigen van iptables de wijzigingen opslaan.

iptables - herstellen> / etc / iptablesRegels laden uit bestand.

De manier om regels op te slaan en te laden is naar eigen goeddunken. We hebben alleen kennis gemaakt met de basis van de iptables-theorie, natuurlijk zijn er veel meer aanpassingsmogelijkheden. Meer details waarover we zullen vertellen in een ander artikel.

Linux heeft een ingebouwde firewall genaamd Netfilter. Volgens de officiële website van het project:

netfilter is een verzameling systeemberichten binnen de Linux-kernel waarmee kernelmodules callback-functies van de netwerkstack kunnen registreren. De geregistreerde callback-functie verwerkt elk pakket dat door de netwerkstack gaat.

De firewall in Linux wordt bestuurd door iptables, die IPv4-filterfunctionaliteit heeft, ip6tables filtert IPv6. Deze tutorial legt uit hoe je Netfilter (iptables) kunt gebruiken op CentOS / RHEL / Fedora / Redhat Enterprise Linux. Dit artikel geeft basisvoorbeelden van het configureren van iptables in Linux om te beschermen tegen indringers.

Voorbeelden van het gebruik van iptables

  • De meeste acties die in dit artikel worden vermeld, zijn geschreven met de veronderstelling dat ze worden uitgevoerd als root vanuit bash of een andere moderne shell. Voer geen opdrachten in op het externe systeem, omdat u de toegang voor uzelf kunt uitschakelen.
  • Voor demo-doeleinden heb ik ubuntu 10.04 gebruikt, maar de opdrachten zouden met elke moderne distributie moeten werken.
De status van uw firewall weergeven
Voer het volgende commando in als root:
# iptables -L -n -v
Een voorbeeld antwoord:
Chain INPUT (beleid ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt ​​​​in out source bestemming Chain FORWARD (beleid ACCEPT 0 packets, 0 bytes) pkts bytes target prot opt ​​​​in out source bestemming Chain OUTPUT (beleid ACCEPT 0 packets, 0 bytes ) pkts bytes target prot opt ​​​​in out source bestemming
Dit antwoord betekent dat de firewall niet actief is.
En dit laat bijvoorbeeld zien dat de firewall in Linux actief is:

Chain INPUT (beleid ACCEPT 1810K packets, 126M bytes) pkts bytes target prot opt ​​in out source bestemming 7418K 1070M ACCEPT udp - * * 0.0.0.0/0 0.0.0.0/0 udp dpt: 1194 881 52520 ACCEPT tcp - eth0 * 0.0.0.0/0 0.0.0.0/0 tcp dpt: 2222 vlaggen: 0x17 / 0x02 staat NIEUW Chain FORWARD (beleid ACCEPT 5628K packets, 482M bytes) pkts bytes target prot opt-in out source bestemming 0 0 ACCEPT tcp - eth0 tun0 0.0 .0.0 / 0 0.0.0.0/0 tcp dpt: 1111 staat NIEUW, GERELATEERD, GEVESTIGD 599K 539M ACCEPTEREN udp - eth0 * 0.0.0.0/0 10.1.1.6 udp dpt: 1112 staat NIEUW, GERELATEERD, GEVESTIGD KetenUITVOER (beleid ACCEPTEREN 4959K pakketten, 880M bytes) pkts bytes target prot opt ​​​​in out source bestemming
De toetsen in het voorbeeld betekenen:

  • L: Maak een lijst van de regels.
  • v: Geeft gedetailleerde informatie weer. Deze toets geeft de interfacenaam, regelparameters en TOS-maskers weer. Packet- en bytetellers worden ook in de lijst weergegeven, met een "K"-achtervoegsel, "M" of "G", afhankelijk van de vereiste vermenigvuldiger.
  • N: IP-adressen niet oplossen, weergave in digitale vorm. Versnelt terugtrekking.
Voeg de schakelaar --line-numbers toe om de regels met regelnummers te bekijken, bijvoorbeeld:
# iptables -n -L -v --regelnummers
Om de INPUT- of OUTPUT-regels te bekijken, typt u:
# iptables -L INPUT -n -v # iptables -L OUTPUT -n -v --regelnummers
Stop, herstart, start firewall
Als je CentOS / RHEL / Fedora Linux hebt, voer dan in:
# service iptables stop # service iptables start # service iptables herstart
Om iptables-regels met zijn eigen middelen op te schonen, voert u het volgende in:
# iptables -F # iptables -X # iptables -t nat -F # iptables -t nat -X # iptables -t mangel -F # iptables -t mangel -X # iptables -P INPUT ACCEPT # iptables -P OUTPUT ACCEPT # iptables -P VOORUIT ACCEPTEREN
De toetsen in het voorbeeld betekenen:
  • F: Wist alle regels (flushing).
  • x: een keten verwijderen
  • t <таблица>: Tabel selecteren en regels verwijderen.
  • P: Stel het standaardbeleid in (zoals DROP, REJECT of ACCEPT).
Firewallregels verwijderen
Om het regelnummer samen met andere informatie voor bestaande regels weer te geven, voert u het volgende in:
# iptables -L OUTPUT -n --regelnummers # iptables -L OUTPUT -n --regelnummers | minder # iptables -L OUTPUT -n --regelnummers | grep 8.8.8.8
U ontvangt een lijst met IP's. Kijk naar het nummer aan de linkerkant en voer het nummer in om het te verwijderen. Als u bijvoorbeeld regel nummer 4 wilt verwijderen, voert u het volgende in:
# iptables -D INPUT 4
Of zoek de bron van IP 202.54.1.1 en verwijder deze uit de regel:
# iptables -D INPUT -s 202.54.1.1 -j DROP
De sleutel in het voorbeeld betekent:
  • D: verwijder een of meer regels uit de opgegeven keten
Firewallregels toevoegen
Om een ​​of meer regels in een gespecificeerde keten in te voegen, wordt over het algemeen de volgende syntaxis gebruikt. Zoek eerst het regelnummer uit:
# iptables -L INPUT -n --regelnummers
Uitvoer bijvoorbeeld:
Chain INPUT (beleid DROP) num target prot opt ​​​​bron bestemming 1 DROP alles - 202.54.1.1 0.0.0.0/0 2 ACCEPT alles - 0.0.0.0/0 0.0.0.0/0 status NIEUW, GEVESTIGD
Om een ​​regel tussen 1 en 2 in te voegen, voert u het volgende in:
# iptables -I INPUT 2 -s 8.8.8.8 -j DROP
Voer het volgende in om de bijgewerkte regels te bekijken:
# iptables -L INPUT -n --regelnummers
Uitvoer bijvoorbeeld:
Chain INPUT (beleid DROP) aantal doel prot opt ​​bronbestemming 1 DROP alles - 202.54.1.1 0.0.0.0/0 2 DROP alles - 8.8.8.8 0.0.0.0/0 3 ACCEPT alles - 0.0.0.0/0 0.0.0.0 / 0 staat NIEUW, GEVESTIGD
Firewallregels opslaan
Om firewallregels op CentOS / RHEL / Fedora Linux op te slaan, voer je in:
# service iptables opslaan
Op andere distributies
iptables-save> /root/my.active.firewall.rules
of
iptables-save
Firewallregels herstellen
Om firewallregels uit het bestand /root/my.active.firewall.rules te herstellen, voert u het volgende in:
# iptables-herstel< /root/my.active.firewall.rules
Om firewallregels op CentOS / RHEL / Fedora Linux te herstellen, voer je in:
# service iptables herstart
Standaard firewallbeleid instellen
Blokkeer al het verkeer:
# iptables -P INPUT DROP # iptables -P OUTPUT DROP # iptables -P VOORWAARTS DROP # iptables -L -v -n
Alleen inkomend verkeer blokkeren:
# iptables -P INGANG DROP # iptables -P VOORUIT DROP # iptables -P UITVOER ACCEPTEREN
Netwerkadressen van een lokaal netwerk op een externe interface blokkeren
IP-spoofing is een aanval die het IP-adres gebruikt van de host die het vertrouwt in de IP-pakketten die naar het slachtoffer worden verzonden als het retouradres. Pakketten met niet-routeerbare bronadressen moeten worden weggegooid met behulp van de volgende syntaxis:
# iptables -A INPUT -i eth1 -s 192.168.0.0/24 -j DROP # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
IPv4-adresbereik voor privénetwerken (zorg ervoor dat ze zijn geblokkeerd op de externe interface)
  • 10.0.0.0/8 -j (A)
  • 172.16.0.0/12 (B)
  • 192.168.0.0/16 ©
  • 224.0.0.0/4 (MULTICAST D)
  • 240.0.0.0/5 (E)
  • 127.0.0.0/8 (LOOPBACK)
IP-blokkering
Om IP-adres 1.2.3.4 te blokkeren, voert u het volgende in:
# iptables -A INPUT -s 1.2.3.4 -j DROP
Inkomende poortverzoeken blokkeren
Om alle verzoeken op poort 80 te blokkeren, voert u het volgende in:
# iptables -A INPUT -p tcp --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp --dport 80 -j DROP
Om poort 80 alleen voor IP 1.2.3.4 te blokkeren, voert u het volgende in:
# iptables -A INPUT -p tcp -s 1.2.3.4 --dport 80 -j DROP # iptables -A INPUT -i eth1 -p tcp -s 192.168.1.0/24 --dport 80 -j DROP
Uitgaande IP-blokkering
Om uitgaand verkeer van een specifieke host of domein, zoals een website, te blokkeren, voert u het volgende in:
host -t een site
Het antwoord zou zijn:
site heeft adres 95.211.41.31
Noteer uw IP-adres en voer de volgende opdracht in om al het uitgaande verkeer van 95.211.41.31 te blokkeren:
# iptables -A OUTPUT -d 95.211.41.31 -j DROP
U kunt maskers gebruiken:
# iptables -A OUTPUT -d 192.168.1.0/24 -j DROP # iptables -A OUTPUT -o eth1 -d 192.168.1.0/24 -j DROP
U kunt ook een domeinnaam gebruiken, vul in:
# iptables -A OUTPUT -p tcp -d www..ru -j DROP
Hoewel de documentatie zegt dat het gebruik van een domeinnaam in plaats van een IP niet wordt aanbevolen.
Pakketten loggen en blokkeren
Voer de volgende opdracht in om IP-spoofing te loggen en te blokkeren op de openbare interface met de naam eth1:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j LOG --log-prefix "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Standaard wordt alles vastgelegd in een bestand. / var / log / berichten.

Commentaar van:

Vooral bij duidelijk linkshandig verkeer kunt u dit beter niet doen. LOG kan alleen strikt worden ingevoegd met de limiet -m, anders zal elke DoS-aanval vele malen effectiever zijn: in feite krijgt de aanvaller indirect een direct pad met intense impact, rechtstreeks op het bestandssysteem van de server.
Hoe u het correct doet, staat hieronder:
Loggen en blokkeren van pakketten met een beperkt aantal logboekvermeldingen
De optie -m kan het aantal logboekvermeldingen dat per tijdseenheid wordt gemaakt, beperken. Dit wordt gebruikt om overstroming van logbestanden te voorkomen. Om niet meer dan 7 opnamen in 5 minuten op te nemen, voert u het volgende in:
# iptables -A INPUT -i eth1 -s 10.0.0.0/8 -m limit --limit 5 / m --limit-burst 7 -j LOG --log-prefix "IP_SPOOF A:" # iptables -A INPUT -i eth1 -s 10.0.0.0/8 -j DROP
Verkeer van een Mac-adres blokkeren of toestaan
Gebruik de volgende syntaxis:
# iptables -A INPUT -m mac --mac-source 00: 19: 99: 3C: AB: 23 -j DROP ## * accepteer alleen verkeer voor TCP-poort # 8080 van mac 00: 19: 99: 3C: AB: 22 * ## # iptables -A INPUT -p tcp --destination-port 22 -m mac --mac-source 00: 19: 99: 3C: AB: 22 -j ACCEPTEREN
ICMP-pingverzoeken weigeren of toestaan
Voer de volgende opdracht in om ICMP-verzoeken te blokkeren:
# iptables -A INPUT -p icmp --icmp-type echo-request -j DROP # iptables -A INPUT -i eth1 -p icmp --icmp-type echo-request -j DROP
Ping-reacties kunnen ook worden beperkt tot specifieke netwerken of hosts:
# iptables -A INPUT -s 192.168.1.0/24 -p icmp --icmp-type echo-request -j ACCEPT
Het volgende voorbeeld accepteert slechts een beperkt type ICMP-verzoek:
### ** ging ervan uit dat het standaard INPUT-beleid is ingesteld op DROP ** ############## iptables -A INPUT -p icmp --icmp-type echo-reply -j ACCEPT iptables -A INPUT -p icmp --icmp-type destination-unreachable -j ACCEPT iptables -A INPUT -p icmp --icmp-type time-exceeded -j ACCEPT ## ** al onze server om te reageren op pings ** ## iptables - A INPUT -p icmp --icmp-type echo-request -j ACCEPT
Een reeks IP-adressen openen
Gebruik de volgende syntaxis om een ​​reeks IP-adressen te openen:
## accepteer alleen verbinding met tcp-poort 80 (Apache) als ip tussen 192.168.1.100 en 192.168.1.200 ligt ## iptables -A INPUT -p tcp --destination-port 80 -m iprange --src-range 192.168.1.100- 192.168.1.200 -j ACCEPTEREN
## nat voorbeeld ## iptables -t nat -A POSTROUTING -j SNAT --to-source 192.168.1.20-192.168.1.25
Openbare poorten sluiten of openen
Hieronder volgt de syntaxis voor het openen en sluiten van algemene TCP- en UDP-poorten:
Vervang ACCEPT door DROP om poort te blokkeren: ## open poort ssh tcp poort 22 ## iptables -A INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT iptables -A INPUT -s 192.168. 1.0 / 24 -m status --state NIEUW -p tcp --dport 22 -j ACCEPTEREN ## open cups (afdrukservice) udp / tcp-poort 631 voor LAN-gebruikers ## iptables -A INPUT -s 192.168.1.0/24 - p udp -m udp --dport 631 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -p tcp -m tcp --dport 631 -j ACCEPT ## sta tijdsynchronisatie toe via NTP voor lan-gebruikers (open udp-poort 123) ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NEW -p udp --dport 123 -j ACCEPT ## open tcp-poort 25 (smtp) voor alle ## iptables -A INPUT - m state --state NEW -p tcp --dport 25 -j ACCEPT # open dns-serverpoorten voor alle ## iptables -A INPUT -m state --state NEW -p udp --dport 53 -j ACCEPT iptables -A INPUT -m state --state NEW -p tcp --dport 53 -j ACCEPT ## open http / https (Apache) serverpoort voor alle ## iptables -A INPUT -m state --state NEW -p tcp --dport 80 -j ACCEPTEER iptables -A INPUT -m staat --state NIEUW -p tcp --dport 443 -j ACCEPTEREN ## open tcp-poort 110 (pop3) voor alle ## iptables -A INPUT -m staat --state NIEUW -p tcp --dport 110 -j ACCEPTEREN ## open tcp-poort 143 (imap) voor alle ## iptables -A INPUT -m state --state NEW -p tcp --dport 143 -j ACCEPT ## open toegang tot Samba-bestandsserver alleen voor lan-gebruikers ## iptables -A INPUT -s 192.168.1.0/24 -m staat --state NIEUW -p tcp --dport 137 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m staat --state NIEUW -p tcp - dport 138 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m staat --state NIEUW -p tcp --dport 139 -j ACCEPT iptables -A INPUT -s 192.168.1.0/24 -m staat --state NIEUW -p tcp --dport 445 -j ACCEPTEREN ## open toegang tot proxyserver alleen voor lan-gebruikers ## iptables -A INPUT -s 192.168.1.0/24 -m state --state NIEUW -p tcp --dport 3128 - j ACCEPTEREN ## open toegang tot mysql-server alleen voor lan-gebruikers ## iptables -I INPUT -p tcp --dport 3306 -j ACCEPTEREN
Beperk het aantal gelijktijdige verbindingen met de server voor elke client op IP
U kunt de connlimit-module gebruiken om dergelijke beperkingen te plaatsen. Om niet meer dan 3 SSH-verbindingen per host te beperken, voert u het volgende in:
# iptables -A INPUT -p tcp --syn --dport 22 -m connlimit --connlimit-boven 3 -j REJECT
Stel HTTP-verzoeken in op 20:
# iptables -p tcp --syn --dport 80 -m connlimit --connlimit-boven 20 --connlimit-mask 24 -j DROP
Parameters in het voorbeeld,
  • --connlimit-above 3: Of het aantal bestaande verbindingen hoger is dan 3.
  • --connlimit-mask 24: Hosts groeperen door