- Korbin Brown
- bijgewerkt op 27 augustus 2020, 14: 25 uur EDT
Iptables is een extreem flexibele firewall utility gebouwd voor Linux besturingssystemen. Of je nu een beginnende Linux geek of een systeembeheerder bent, er is waarschijnlijk een manier waarop iptables een groot nut voor je kan zijn. Lees verder als we u laten zien hoe u de meest veelzijdige Linux firewall kunt configureren.
Foto door ezioman.
over iptables
iptables is een command-line firewall hulpprogramma dat beleidsketens gebruikt om verkeer toe te staan of te blokkeren., Wanneer een verbinding probeert zich op je systeem te vestigen, zoekt iptables naar een regel in de lijst om deze aan te passen. Als het er geen Vindt, neemt het zijn toevlucht tot de standaardactie.
iptables wordt bijna altijd voorgeïnstalleerd op elke Linux-distributie. Om het bij te werken/te installeren, haal je het iptables pakket op:
sudo apt-get install iptables
Er zijn GUI alternatieven voor iptables zoals Firestarter, maar iptables is niet echt zo moeilijk zodra je een paar commando ‘ s hebt uitgeschakeld., Je wilt uiterst voorzichtig zijn bij het configureren van iptables regels, vooral als je SSH ‘ D in een server, omdat een verkeerd commando kan permanent vergrendelen u uit totdat het handmatig is vastgesteld op de fysieke machine.
typen ketens
iptables gebruikt drie verschillende ketens: input, forward en output.
Input-deze keten wordt gebruikt om het gedrag van binnenkomende verbindingen te bepalen. Bijvoorbeeld, als een gebruiker SSH probeert in je PC / server, zal iptables proberen het IP adres en de poort te matchen met een regel in de invoerketen.,
Forward-deze keten wordt gebruikt voor binnenkomende verbindingen die niet lokaal worden geleverd. Denk aan een router-data wordt altijd verzonden naar het, maar zelden eigenlijk bestemd voor de router zelf; de gegevens worden gewoon doorgestuurd naar het doel. Tenzij je een soort van routing, NATing, of iets anders op je systeem doet dat forwarding vereist, zul je deze keten niet eens gebruiken.
er is één goede manier om te controleren of je systeem de forward chain gebruikt/nodig heeft.,
iptables -L -v
de schermafbeelding hierboven is van een server die al een paar weken draait en geen beperkingen heeft op inkomende of uitgaande verbindingen. Zoals u kunt zien, heeft de invoerketen 11 GB aan pakketten verwerkt en de uitvoerketen 17 GB verwerkt. De forward chain, aan de andere kant, heeft niet nodig om een enkel pakket te verwerken. Dit komt omdat de server geen enkele vorm van forwarding doet of wordt gebruikt als een pass-through apparaat.,
Output – deze keten wordt gebruikt voor uitgaande verbindingen. Bijvoorbeeld, als je probeert te pingen howtogeek.com, iptables zal de output keten controleren om te zien wat de regels zijn met betrekking tot ping en howtogeek.com voordat u een beslissing neemt om de verbindingspoging toe te staan of te weigeren.
het voorbehoud
hoewel het pingen van een externe host lijkt op iets dat alleen de uitvoerketen hoeft te doorkruisen, houd er rekening mee dat om de gegevens terug te geven, de invoerketen ook zal worden gebruikt., Wanneer u iptables gebruikt om uw systeem te vergrendelen, onthoud dan dat veel protocollen tweewegcommunicatie vereisen, dus zowel de invoer-als uitvoerketens moeten correct worden geconfigureerd. SSH is een gemeenschappelijk protocol dat mensen vergeten toe te staan op beide ketens.
Policy Chain Default Behavior
voordat u specifieke regels configureert, wilt u bepalen wat het standaard gedrag van de drie ketens moet zijn. Met andere woorden, wat wil je dat iptables doet als de verbinding niet overeenkomt met bestaande regels?,
om te zien wat uw beleid ketens momenteel zijn geconfigureerd om te doen met ongeëvenaard verkeer, voert u het commando iptables -L
uit.
zoals je kunt zien, hebben we ook het grep commando gebruikt om ons cleaner uitvoer te geven. In die screenshot, onze ketens zijn momenteel bedacht om verkeer te accepteren.
vaker dan niet, wilt u dat uw systeem standaard verbindingen accepteert. Tenzij u de regels voor de beleidsketen eerder hebt gewijzigd, moet deze instelling al zijn geconfigureerd., Hoe dan ook, hier is het commando om standaard verbindingen te accepteren:
iptables --policy INPUT ACCEPT
iptables --policy OUTPUT ACCEPT
iptables --policy FORWARD ACCEPT
door standaard de accept-regel te gebruiken, kunt u vervolgens iptables gebruiken om specifieke IP-adressen of poortnummers te weigeren, terwijl u alle andere verbindingen blijft accepteren. We komen zo bij die commando ‘ s.,
Als u liever alle verbindingen weigert en handmatig aangeeft welke verbindingen u wilt toestaan, moet u het standaardbeleid van uw ketens wijzigen in drop. Dit doen zou waarschijnlijk alleen nuttig zijn voor servers die gevoelige informatie bevatten en alleen maar dezelfde IP-adressen met hen verbinden.,
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP
verbindingsspecifieke responsen
met uw standaard ketenbeleid geconfigureerd, kunt u beginnen met het toevoegen van regels aan iptables, zodat het weet wat te doen als het een verbinding tegenkomt van of naar een bepaald IP-adres of poort. In deze gids, we gaan om te gaan over de drie meest elementaire en veelgebruikte “reacties”.
accepteren-de verbinding toestaan.
Drop-Drop de verbinding, doe alsof het nooit gebeurd is., Dit is het beste als je niet wilt dat de bron zich realiseert dat je systeem bestaat.
weigeren-sta de verbinding niet toe, maar stuur een fout terug. Dit is het beste als je niet wilt dat een bepaalde bron verbinding maakt met je systeem, maar je wilt dat ze weten dat je firewall ze blokkeerde.
De beste manier om het verschil tussen deze drie regels te laten zien is om te laten zien hoe het eruit ziet als een PC probeert een Linux machine te pingen met iptables geconfigureerd voor elk van deze instellingen.,
de verbinding toestaan:
De verbinding laten vallen:
De verbinding weigeren:
specifieke verbindingen toestaan of blokkeren
met uw beleid ketens geconfigureerd, kunt u nu iptables configureren om specifieke adressen, adresbereiken en poorten toe te staan of te blokkeren. In deze voorbeelden stellen we de verbindingen in op DROP
, maar u kunt ze omschakelen naar ACCEPT
of REJECT
, afhankelijk van uw behoeften en hoe u uw beleid ketens hebt geconfigureerd.,
opmerking: in deze voorbeelden gebruiken we iptables -A
om regels toe te voegen aan de bestaande keten. iptables begint aan de bovenkant van de lijst en gaat door elke regel totdat het er een vindt die overeenkomt. Als u een regel boven een andere moet invoegen, kunt u iptables -I
gebruiken om het nummer in de lijst te specificeren.
verbindingen vanaf een enkel IP-adres
dit voorbeeld laat zien hoe alle verbindingen vanaf het IP-adres 10.10.10.10 te blokkeren.,
iptables -A INPUT -s 10.10.10.10 -j DROP
verbindingen vanuit een bereik van IP-adressen
dit voorbeeld laat zien hoe alle IP-adressen in het netwerkbereik 10.10.10.0/24 kunnen worden geblokkeerd. U kunt een netmasker of standaard slash notatie gebruiken om het bereik van IP-adressen te specificeren.,
iptables -A INPUT -s 10.10.10.0/24 -j DROP
or
iptables -A INPUT -s 10.10.10.0/255.255.255.0 -j DROP
Connections to a specific port
This example shows how to block SSH connections from 10.10.10.10.
iptables -A INPUT -p tcp --dport ssh -s 10.10.10.10 -j DROP
You can replace “ssh” with any protocol or port number. The -p tcp
part of the code tells iptables what kind of connection the protocol uses., Als u een protocol blokkeert dat UDP gebruikt in plaats van TCP, dan is -p udp
nodig.
dit voorbeeld laat zien hoe SSH-verbindingen te blokkeren vanaf elk IP-adres.
iptables -A INPUT -p tcp --dport ssh -j DROP
Verbindingsstatussen
zoals we eerder al zeiden, zullen veel protocollen tweewegcommunicatie vereisen. Als je bijvoorbeeld SSH verbindingen met je systeem wilt toestaan, zullen de invoer-en uitvoerketens een regel nodig hebben die eraan wordt toegevoegd., Maar, wat als je alleen wilt dat SSH komt in uw systeem worden toegestaan? Staat het toevoegen van een regel aan de uitvoerketen ook uitgaande SSH-pogingen toe?
daar komen verbindingsstatussen voor, die u de mogelijkheid geven om tweewegcommunicatie toe te staan, maar alleen verbindingen met één weg tot stand te brengen. Kijk eens naar dit voorbeeld, waar SSH verbindingen van 10.10.10.10 zijn toegestaan, maar SSH verbindingen naar 10.10.10.10 niet., Het systeem is echter toegestaan om informatie terug te sturen via SSH zolang de sessie al is ingesteld, wat SSH communicatie mogelijk maakt tussen deze twee hosts.
Wijzigingen opslaan
de wijzigingen die u aanbrengt in uw iptables-regels zullen worden geschrapt de volgende keer dat de iptables-service opnieuw wordt gestart, tenzij u een commando uitvoert om de wijzigingen op te slaan.,div id=”02f11c1957″>
Red Hat / CentOS:
/sbin/service iptables save
Or
/etc/init.d/iptables save
Other Commands
List the currently configured iptables rules:
iptables -L
Adding the -v
option will give you packet and byte information, and adding -n
will list everything numerically., Met andere woorden – hostnamen, protocollen en netwerken worden weergegeven als nummers.
om alle momenteel geconfigureerde regels te wissen, kunt u het flush commando uitvoeren.
iptables -F