Hoe iptables te gebruiken om pakketten op Linux te filteren

Inhoudsopgave

In deze tutorial gaan we het hebben over iptables, de firewall of firewall die we in Linux hebben. Met deze tool kunnen we pakketten filteren (waar de tutorial over gaat), een logrecord genereren en NAT-vertalingen uitvoeren.

Dankzij iptables kunnen we eenvoudig regels genereren om pakketten te filteren, hoewel het de eerste keer dat je het gebruikt misschien wat verwarrend lijkt, zul je zien dat als je het een paar dagen gebruikt, er geen complicaties zijn.

Het gebruik van deze tool vereist hoge privileges, dat wil zeggen dat we superusers moeten zijn om het te laten werken. We hebben veel functies binnen iptables, het doel van de tutorial is om een ​​benadering van het gebruik ervan te zien door middel van voorbeelden. Het is belangrijk dat je, als je eenmaal klaar bent met de tutorial, blijft graven, want het is erg handig.

Dan verlaten we de officiële website voor het geval het van belang is:

OpmerkingVoor IPv6 hebben we: ip6tables.

Als we informatie over iptables willen zien, zullen we het volgende in een terminal uitvoeren:

 man iptables
We zien de volgende informatie:

In de afbeelding ziet u een deel van de informatie die door de opdracht wordt verstrekt, om alles te zien, scrolt u naar beneden in de terminal. Zoals we aan het begin van de tutorial zagen, is een van de taken die iptables ons zal toestaan, het maken van regels of filters om te weten wat te doen met de pakketten die onze machine als hun oorsprong / bestemming hebben. Voor deze taak zijn we geïnteresseerd in waarom we de volgende concepten gebruiken:

Borden
Iptables heeft verschillende tabellen, maar voor onze tutorial richten we ons alleen op filtertabel, die verantwoordelijk is voor het filteren, wordt standaard gebruikt in iptables.

kettingen
De strings die ik hier ga plaatsen, behoren tot de eerder besproken tabel.

  • Invoer: Pakketten bestemd voor onze machine.
  • Uitgang:: Pakketten die afkomstig zijn uit ons systeem.
  • Vooruit: Pakketten die door onze machine gaan om naar een andere te worden gerouteerd.

Reglement
We gaan de 2 aangeven die in de tutorial zullen worden gebruikt, maar er zijn er meer.

  • Aanvaarden: Pakketten worden geaccepteerd.
  • Afzetten: Pakketten worden weggegooid.

Parameters:
Enkele van de parameters die we kunnen gebruiken zijn de volgende.

  • -Een regel: om een ​​regel toe te voegen
  • -D regel: om de regel die we aangeven te verwijderen.
  • -L: Hiermee kunnen we de regels opsommen.
  • -F: alle bestaande regels verwijderen.
  • -j doel: stel het type regel in (Accepteren, Verwijderen).
  • -t tafel: Het geeft de gebruikte tabel aan (standaard filtertabel).
  • -p-protocol: Wordt gebruikt om het protocol aan te geven.
  • -i-interface: We stellen de interface voor de regel vast.
  • -s: Om de oorsprong aan te geven.
  • -NS: Om de bestemming aan te geven.
  • -H: Geeft hulp weer.

Er zijn er nog veel meer, zoals ze kunnen zijn --haven van bestemming of --bron-poort. Om ze allemaal te zien, kunt u de opdracht uitvoeren die we hierboven hebben besproken:

 man iptables
Of u kunt ook uitvoeren:
 iptables -h
OpmerkingJe moet goed kijken naar de opties die de tool biedt, omdat het onderscheid maakt tussen kleine letters en hoofdletters en we een fout kunnen maken (het zal niet hetzelfde zijn om -P Dat -P).

Laten we beginnen met de voorbeelden, er zullen er in totaal 10 worden geplaatst, zodat het beter wordt begrepen en we kunnen zien hoe iptables werkt in firewall-modus. In de voorbeelden zie je sudo niet, het is niet nodig als je root bent, anders moet je het woord sudo aan het begin van elk voorbeeld toevoegen.

1. Verbied vertrek naar elke bestemmingOm te beginnen gaan we een eenvoudig voorbeeld geven, verlaat de uitgang nergens.

 iptables -A OUTPUT -j DROP
Deze is heel eenvoudig, zoals je kunt zien, de volgende is nog makkelijker.

2. Wis alle regelsWe gaan verder met een heel eenvoudig voorbeeld, laten onze iptables zonder regels, hiervoor zullen we uitvoeren:

 iptables -F
Laten we het in de volgende een beetje ingewikkelder maken.

3. Verboden vertrek via haven 80Nu zorgen we voor het sluiten van de uitvoer via een specifieke poort, in dit geval is het 80, daarom zullen we niet surfen op het web via het http-protocol (als we naar een https-pagina navigeren, kunnen we navigeren, hoewel we hetzelfde zouden kunnen doen als 80).

 iptables -A OUTPUT -p tcp --destination-port 80 -j DROP
OpmerkingAls we een bestemmings- of bronpoort gebruiken, moeten we de parameter -p plaatsen om het protocol aan te geven.

We gaan verder met het vierde voorbeeld.
4. Navigatie naar een pagina verbiedenBij deze gelegenheid zijn we geïnteresseerd in het verbieden van toegang tot de X-pagina van ons systeem, laten we ons voorstellen dat deze pagina solvetic.com is, hiervoor vinden we het IP-adres, heel gemakkelijk door een ping uit te voeren zullen we het verkrijgen.

En nu zullen we uitvoeren:

 iptables -A UITVOER -d 178.33.118.246 -j DROP
Zoals we kunnen zien, is het voldoende om uw IP aan te geven na de parameter -NS.

5. Maak een lijst van de bestaande regelsIn dit voorbeeld wordt geprobeerd de filterregels weer te geven die we momenteel hebben gedefinieerd:

 iptables -L
We zien een afbeelding, we hebben maar twee regels gedefinieerd, zoals we hieronder zien:

Laten we verder gaan met het zesde voorbeeld, waarin we de lijst met regels opnieuw zullen gebruiken.

6. Een specifieke regel verwijderenHier gaan we, uitgaande van de regels die we in het vorige voorbeeld hadden, een van de exit-regels verwijderen, in dit geval de eerste die verschijnt, we voeren het volgende uit:

 iptables -D UITGANG 1
En om te controleren of het effectief is verwijderd, gebruiken we voorbeeld 5:

Laten we doorgaan met meer.

7. Vermijd gepingd te wordenWe willen niet dat ze ons pingen, hiervoor gaan we de invoer voor het ICMP-protocol blokkeren.

 iptables -A INPUT -p ICMP -j DROP
Hieronder laat ik een afbeelding van pingen achter voordat ik het bovenstaande commando uitvoer en daarna:

We kunnen zien dat onze machine niet antwoordt, omdat hij ICMP-pakketten weigert. Als we de uitvoer blokkeren in plaats van de invoer, zouden we uitvoeren:

 iptables -A OUTPUT -p ICMP -j DROP
Hetzelfde als in de vorige afbeelding zou opnieuw gebeuren. Om te testen heb ik 3 keer ping gedaan, als we het uitvoeren kunnen we het aantal pakketten zien:
 iptables -L -v

We zien dat het effectief 3 in de vorige afbeelding plaatst.

8. Voorkom dat een IP ons gegevens stuurtWe gaan een invoer toepassen, we willen niet dat een bepaald IP-adres ons verbindt, dus we zullen uitvoeren:

 iptables -A INPUT -s 192.168.66.1 -j DROP
Laten we een wat langer voorbeeld bekijken.

9. Uitgangen naar een reeks IP's toestaanStel je voor dat je alleen uitvoer naar een reeks IP-adressen wilt accepteren, maar de rest van de uitvoer wilt weigeren, dan moeten we het volgende uitvoeren:

 Iptables -A OUTPUT -d 192.168.0.0/24 -j ACCEPT Iptables -A OUTPUT -j DROP
OpmerkingDe volgorde van uitvoering van de regels is van belang, probeer dit voorbeeld met het netwerk dat u wilt toestaan ​​en maak een verbinding, u zult zien dat het werkt, verwijder vervolgens alle regels en voer de 2 zinnen in omgekeerde volgorde uit, nu zou het de verbindingen weigeren .

Laten we verder gaan met het tiende en laatste voorbeeld.

10. Open poort 143 (imap)We gaan een poort openen voor de invoer van alle tcp-pakketten, in dit geval 143 (de rest zou hetzelfde zijn).

 iptables -A INPUT -m status --state NIEUW -p tcp --dport 143 -j ACCEPTEREN
In dit voorbeeld wilden we gebruiken --dport, zodat u kunt zien dat we dit kunnen gebruiken of --haven van bestemming, we zouden ook kunnen gebruiken --sport in plaats van --bron-poort.

De tutorial eindigt hier, nu je andere regels probeert toe te passen, hoe meer je oefent, hoe sneller je regels zult toepassen en hoe minder het je zal kosten. Om af te sluiten laten we een tutorial achter die voor u interessant kan zijn, het openen en sluiten van poorten in Windows 10.

wave wave wave wave wave