Wat is een firewall en hoe werkt het?

Inleiding

A firewall is a system that provides network security by filtering incoming and outgoing network traffic based on a set of user-defined rules. In general, the purpose of a firewall is to reduce or eliminate the occurrence of unwanted network communications while allowing all legitimate communication to flow freely. In most server infrastructures, firewalls provide an essential layer of security that, combined with other measures, prevent attackers from accessing your servers in malicious ways.

In deze gids bespreken we hoe firewalls werken, met de nadruk op stateful softwarefirewalls, zoals iptables en FirewallD, zoals ze verband houden met cloud servers. We beginnen met een korte uitleg over TCP-pakketten en de verschillende soorten firewalls. Vervolgens bespreken we een verscheidenheid aan onderwerpen die relevant zijn voor stateful firewalls. Ten slotte zullen we links verstrekken naar andere tutorials die u zullen helpen bij het instellen van een firewall op uw eigen server.

TCP-netwerkpakketten

Voordat we de verschillende soorten firewalls bespreken, laten we snel kijken naar hoe Transport Control Protocol (TCP) netwerkverkeer eruitziet.

TCP-netwerkverkeer beweegt zich door een netwerk in pakketten, die containers zijn die bestaan uit een pakketkop—dit bevat besturingsinformatie zoals bron- en bestemmingsadressen, en pakketsequentie-informatie—en de gegevens (ook wel payload genoemd). Hoewel de besturingsinformatie in elk pakket helpt ervoor te zorgen dat de bijbehorende gegevens correct worden afgeleverd, bieden de elementen die het bevat ook firewalls verschillende manieren om pakketten te matchen met firewallregels.

Het is belangrijk op te merken dat het succesvol ontvangen van inkomende TCP-pakketten vereist dat de ontvanger uitgaande bevestigingspakketten terugstuurt naar de verzender. De combinatie van de besturingsinformatie in de inkomende en uitgaande pakketten kan worden gebruikt om de verbindingsstatus (bijv. nieuw, gevestigd, gerelateerd) tussen de verzender en ontvanger te bepalen.

Soorten Firewalls

Laten we snel de drie basissoorten netwerkfirewalls bespreken: pakketfiltering (stateless), stateful en toepassingslaag.

Pakketfiltering, of stateless, firewalls werken door individuele pakketten geïsoleerd te inspecteren. Als zodanig zijn ze niet op de hoogte van de verbindingsstatus en kunnen ze alleen pakketten toestaan of weigeren op basis van individuele pakketheaders.

Stateful firewalls zijn in staat om de verbindingsstatus van pakketten te bepalen, wat hen veel flexibeler maakt dan stateless firewalls. Ze werken door gerelateerde pakketten te verzamelen totdat de verbindingsstatus kan worden bepaald voordat firewallregels worden toegepast op het verkeer.

Toepassingsfirewalls gaan nog een stap verder door de verzonden gegevens te analyseren, waardoor netwerkverkeer kan worden vergeleken met firewallregels die specifiek zijn voor individuele services of toepassingen. Deze worden ook wel proxy-gebaseerde firewalls genoemd.

Naast firewallsoftware, die beschikbaar is op alle moderne besturingssystemen, kan firewallfunctionaliteit ook worden geleverd door hardwareapparaten, zoals routers of firewall-apparaten. Opnieuw zal onze discussie zich richten op stateful softwarefirewalls die worden uitgevoerd op de servers die ze moeten beschermen.

Firewallregels

Zoals hierboven vermeld, wordt netwerkverkeer dat een firewall passeert, vergeleken met regels om te bepalen of het doorgelaten moet worden of niet. Een eenvoudige manier om te laten zien hoe firewallregels eruitzien, is door een paar voorbeelden te laten zien, dus dat zullen we nu doen.

Stel dat je een server hebt met deze lijst van firewallregels die van toepassing zijn op inkomend verkeer:

  1. Accepteer nieuw en gevestigd inkomend verkeer naar de openbare netwerkinterface op poort 80 en 443 (HTTP- en HTTPS-webverkeer)
  2. Weiger inkomend verkeer van IP-adressen van de niet-technische werknemers in uw kantoor naar poort 22 (SSH)
  3. Accepteer nieuw en gevestigd inkomend verkeer van uw kantoor-IP-bereik naar de privénetwerkinterface op poort 22 (SSH)

Merk op dat het eerste woord in elk van deze voorbeelden ofwel “accepteren”, “afwijzen” of “laten vallen” is. Dit specificeert de actie die de firewall moet uitvoeren in het geval dat een stuk netwerkverkeer overeenkomt met een regel. Accepteren betekent het verkeer doorlaten, afwijzen betekent het blokkeren van het verkeer maar antwoorden met een “onbereikbare” fout, en laten vallen betekent het blokkeren van het verkeer en geen antwoord sturen. De rest van elke regel bestaat uit de voorwaarde waaraan elk pakket moet voldoen.

Het blijkt dat netwerkverkeer wordt vergeleken met een lijst van firewallregels in een sequentie, of keten, van eerste tot laatste. Meer specifiek, zodra een regel overeenkomt, wordt de bijbehorende actie toegepast op het betreffende netwerkverkeer. In ons voorbeeld zou een boekhoudmedewerker bijvoorbeeld worden afgewezen op basis van regel 2, voordat regel 3 zelfs maar wordt gecontroleerd, als hij probeert een SSH-verbinding met de server tot stand te brengen. Een systeembeheerder daarentegen zou worden geaccepteerd omdat hij alleen overeenkomt met regel 3.

Standaardbeleid

Het is gebruikelijk dat een keten van firewallregels niet expliciet elke mogelijke voorwaarde behandelt. Daarom moet er altijd een standaardbeleid worden gespecificeerd voor firewallketens, dat alleen bestaat uit een actie (accepteren, afwijzen of laten vallen).

Stel dat het standaardbeleid voor de bovenstaande keten was ingesteld op drop. Als een computer buiten uw kantoor probeerde een SSH-verbinding met de server tot stand te brengen, zou het verkeer worden verworpen omdat het niet overeenkomt met de voorwaarden van enige regels.

Als het standaardbeleid was ingesteld op accepteren, zou iedereen, behalve uw eigen niet-technische werknemers, een verbinding kunnen maken met een willekeurige open service op uw server. Dit zou een voorbeeld zijn van een zeer slecht geconfigureerde firewall omdat het slechts een subset van uw werknemers buiten houdt.

Inkomend en Uitgaand Verkeer

Omdat netwerkverkeer, vanuit het perspectief van een server, zowel inkomend als uitgaand kan zijn, onderhoudt een firewall een afzonderlijke set regels voor elk geval. Verkeer dat elders ontstaat, inkomend verkeer, wordt anders behandeld dan uitgaand verkeer dat de server verstuurt. Het is typisch dat een server de meeste uitgaande verkeer toestaat omdat de server meestal, voor zichzelf, betrouwbaar is. Toch kan de uitgaande regelset worden gebruikt om ongewenste communicatie te voorkomen in het geval dat een server wordt gecompromitteerd door een aanvaller of een kwaadaardig uitvoerbaar bestand.

Om de beveiligingsvoordelen van een firewall te maximaliseren, moet je alle manieren identificeren waarop je wilt dat andere systemen met je server communiceren, regels creëren die ze expliciet toestaan, en vervolgens al het andere verkeer blokkeren. Houd er rekening mee dat de juiste uitgaande regels moeten worden ingesteld, zodat een server zichzelf toestaat om uitgaande bevestigingen te sturen naar eventuele passende inkomende verbindingen. Ook, aangezien een server typisch zijn eigen uitgaand verkeer moet initiëren om verschillende redenen – bijvoorbeeld het downloaden van updates of het verbinden met een database – is het belangrijk om die gevallen ook op te nemen in je uitgaande regelset.

Uitgaande regels schrijven

Stel dat onze voorbeeldfirewall is ingesteld op standaard uitgaand verkeer te blokkeren. Dit betekent dat onze inkomende accepteren regels nutteloos zouden zijn zonder bijpassende uitgaande regels.

Om de voorbeeld inkomende firewall regels (1 en 3) aan te vullen, uit de Firewall regels sectie, en ervoor te zorgen dat de juiste communicatie op die adressen en poorten kan plaatsvinden, kunnen we deze uitgaande firewall regels gebruiken:

  1. Accepteer gevestigd uitgaand verkeer naar de publieke netwerkinterface op poort 80 en 443 (HTTP en HTTPS)
  2. Accepteer gevestigd uitgaand verkeer naar de privé netwerkinterface op poort 22 (SSH)

Let op dat we geen aparte regel hoeven te schrijven voor inkomend verkeer dat wordt verworpen (inkomende regel 2), omdat de server geen verbinding hoeft op te zetten of te bevestigen.

Firewall Software en Tools

Nu we hebben besproken hoe firewalls werken, laten we eens kijken naar veelvoorkomende softwarepakketten die ons kunnen helpen bij het opzetten van een effectieve firewall. Hoewel er veel andere firewall-gerelateerde pakketten zijn, zijn deze effectief en zijn ze degene die je het meest zult tegenkomen.

Iptables

Iptables is een standaard firewall die standaard wordt meegeleverd in de meeste Linux-distributies (een moderne variant genaamd nftables zal het beginnen te vervangen). Het is eigenlijk een front-end voor de kernel-level netfilter-haken die de Linux-netwerkstack kunnen manipuleren. Het werkt door elk pakket dat de netwerkinterface passeert te matchen met een set regels om te beslissen wat ermee moet gebeuren.

Om te leren hoe je een firewall met iptables implementeert, bekijk deze links:

UFW

UFW, wat staat voor Uncomplicated Firewall, is een interface naar iptables die is gericht op het vereenvoudigen van het proces van het configureren van een firewall.

Om meer te weten te komen over het gebruik van UFW, bekijk deze handleiding: Hoe een Firewall instellen met UFW op een Ubuntu en Debian Cloud Server.

FirewallD

FirewallD is een complete firewalloplossing die standaard beschikbaar is op CentOS 7-servers. Overigens gebruikt FirewallD iptables om netfilter te configureren.

Om meer te weten te komen over het gebruik van FirewallD, bekijk deze handleiding: Hoe FirewallD configureren om uw CentOS 7-server te beschermen.

Als u CentOS 7 gebruikt maar de voorkeur geeft aan het gebruik van iptables, volg dan deze tutorial: Hoe te migreren van FirewallD naar Iptables op CentOS 7.

Fail2ban

Fail2ban is software voor inbraakpreventie die uw firewall automatisch kan configureren om brute force loginpogingen en DDOS-aanvallen te blokkeren.

Om meer te weten te komen over Fail2ban, bekijk deze links:

Conclusie

Nu je begrijpt hoe firewalls werken, zou je moeten overwegen om een firewall te implementeren die de beveiliging van je serveropstelling verbetert door de bovenstaande tutorials te gebruiken.

Als je meer wilt weten over hoe firewalls werken, bekijk dan deze links:

Source:
https://www.digitalocean.com/community/tutorials/what-is-a-firewall-and-how-does-it-work