Zoeken op website

RHCSA-serie: Firewall Essentials en netwerkverkeerscontrole met behulp van FirewallD en Iptables - Deel 11


In eenvoudige bewoordingen is een firewall een beveiligingssysteem dat het inkomende en uitgaande verkeer in een netwerk controleert op basis van een reeks vooraf gedefinieerde regels (zoals bijvoorbeeld de pakketbestemming/-bron of het type verkeer) .

In dit artikel bespreken we de basisprincipes van firewalld, de standaard dynamische firewall-daemon in Red Hat Enterprise Linux 7, en de iptables-service, de oudere versie firewallservice voor Linux, waarmee de meeste systeem- en netwerkbeheerders goed bekend zijn, en die ook beschikbaar is in RHEL 7.

Een vergelijking tussen FirewallD en Iptables

Onder de motorkap praten zowel firewalld als de iptables service met het netfilter raamwerk in de kernel via dezelfde interface, niet verrassend, het iptables commando . In tegenstelling tot de iptables-service kan firewalld echter de instellingen wijzigen tijdens normaal systeemgebruik zonder dat bestaande verbindingen verloren gaan.

Firewalld zou standaard geïnstalleerd moeten zijn in uw RHEL-systeem, hoewel het mogelijk niet actief is. U kunt dit verifiëren met de volgende opdrachten (firewall-config is de configuratietool voor de gebruikersinterface):


yum info firewalld firewall-config

En,


systemctl status -l firewalld.service

Aan de andere kant is de service iptables niet standaard inbegrepen, maar kan via deze service worden geïnstalleerd.


yum update && yum install iptables-services

Beide daemons kunnen worden gestart en ingeschakeld om tijdens het opstarten te starten met de gebruikelijke systemd-opdrachten:


systemctl start firewalld.service | iptables-service.service
systemctl enable firewalld.service | iptables-service.service

Lees ook: Handige opdrachten om Systemd Services te beheren

Wat de configuratiebestanden betreft, gebruikt de iptables-service /etc/sysconfig/iptables (die niet zal bestaan als het pakket niet op uw systeem is geïnstalleerd). Op een RHEL 7-box die als clusterknooppunt wordt gebruikt, ziet dit bestand er als volgt uit:

Terwijl firewalld zijn configuratie in twee mappen opslaat, /usr/lib/firewalld en /etc/firewalld:


ls /usr/lib/firewalld /etc/firewalld

We zullen deze configuratiebestanden later in dit artikel verder onderzoeken, nadat we hier en daar een paar regels hebben toegevoegd. Het volstaat u er inmiddels aan te herinneren dat u bij beide tools altijd meer informatie kunt vinden.


man firewalld.conf
man firewall-cmd
man iptables

Vergeet daarnaast niet om een kijkje te nemen bij Reviewing Essential Commands & System Documentation – Part 1 van de huidige serie, waar ik verschillende bronnen heb beschreven waar u informatie kunt krijgen over de pakketten die op uw RHEL 7 systeem zijn geïnstalleerd. .

Iptables gebruiken om netwerkverkeer te controleren

Mogelijk wilt u Configure Iptables Firewall – Deel 8 van de serie Linux Foundation Certified Engineer (LFCE) raadplegen om uw geheugen op te frissen over iptables internals voordat u verder gaat. We kunnen dus meteen naar de voorbeelden springen.

Voorbeeld 1: Zowel inkomend als uitgaand webverkeer toestaan

TCP-poorten 80 en 443 zijn de standaardpoorten die door de Apache-webserver worden gebruikt voor het verwerken van normale (HTTP) en beveiligde (HTTPS<) webverkeer. U kunt als volgt inkomend en uitgaand webverkeer via beide poorten op de enp0s3-interface toestaan:


iptables -A INPUT -i enp0s3 -p tcp --dport 80 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 80 -m state --state ESTABLISHED -j ACCEPT
iptables -A INPUT -i enp0s3 -p tcp --dport 443 -m state --state NEW,ESTABLISHED -j ACCEPT
iptables -A OUTPUT -o enp0s3 -p tcp --sport 443 -m state --state ESTABLISHED -j ACCEPT
Voorbeeld 2: Blokkeer alle (of sommige) inkomende verbindingen van een specifiek netwerk

Het kan voorkomen dat u al het (of een deel van) het verkeer dat afkomstig is van een specifiek netwerk moet blokkeren, bijvoorbeeld 192.168.1.0/24:


iptables -I INPUT -s 192.168.1.0/24 -j DROP

zal alle pakketten verwijderen die afkomstig zijn van het 192.168.1.0/24 netwerk, terwijl,


iptables -A INPUT -s 192.168.1.0/24 --dport 22 -j ACCEPT

staat alleen inkomend verkeer toe via poort 22.

Voorbeeld 3: Leid inkomend verkeer om naar een andere bestemming

Als u uw RHEL 7 box niet alleen als softwarefirewall gebruikt, maar ook als daadwerkelijke hardwaregebaseerde firewall, zodat deze zich tussen twee verschillende netwerken bevindt, moet IP-forwarding al zijn ingeschakeld in uw systeem . Als dit niet het geval is, moet u /etc/sysctl.conf bewerken en de waarde van net.ipv4.ip_forward als volgt instellen op 1:


net.ipv4.ip_forward = 1

sla vervolgens de wijziging op, sluit uw teksteditor en voer ten slotte de volgende opdracht uit om de wijziging toe te passen:


sysctl -p /etc/sysctl.conf

Het kan bijvoorbeeld zijn dat u een printer hebt geïnstalleerd op een interne box met IP 192.168.0.10, waarbij de CUPS-service luistert op poort 631 (beide op de printserver en op uw firewall). Om printverzoeken van clients aan de andere kant van de firewall door te sturen, moet u de volgende iptables-regel toevoegen:


iptables -t nat -A PREROUTING -i enp0s3 -p tcp --dport 631 -j DNAT --to 192.168.0.10:631

Houd er rekening mee dat iptables de regels opeenvolgend leest, dus zorg ervoor dat het standaardbeleid of latere regels niet de regels uit de bovenstaande voorbeelden overschrijven.

Aan de slag met FirewallD

Een van de veranderingen die met firewalld zijn geïntroduceerd, zijn zones. Dit concept maakt het mogelijk om netwerken in verschillende zones te verdelen. Het niveau van vertrouwen dat de gebruiker heeft besloten te stellen in de apparaten en het verkeer binnen dat netwerk.

Om de actieve zones weer te geven:


firewall-cmd --get-active-zones

In het onderstaande voorbeeld is de publieke zone actief en is de interface enp0s3 er automatisch aan toegewezen. Om alle informatie over een bepaalde zone te bekijken:


firewall-cmd --zone=public --list-all

Omdat u meer over zones kunt lezen in de RHEL 7 Security-handleiding, vermelden we hier slechts enkele specifieke voorbeelden.

Voorbeeld 4: Services door de firewall laten gaan

Gebruik voor een lijst met ondersteunde services.


firewall-cmd --get-services

Om http- en https-webverkeer via de firewall toe te staan, met onmiddellijke ingang en bij volgende keer opstarten:


firewall-cmd --zone=MyZone --add-service=http
firewall-cmd --zone=MyZone --permanent --add-service=http
firewall-cmd --zone=MyZone --add-service=https
firewall-cmd --zone=MyZone --permanent --add-service=https
firewall-cmd --reload

Als–zone wordt weggelaten, wordt de standaardzone (u kunt dit controleren met firewall-cmd –get-default-zone) gebruikt.

Om de regel te verwijderen, vervangt u het woord toevoegen door verwijderen in de bovenstaande opdrachten.

Voorbeeld 5: IP/Port forwarding

Allereerst moet u weten of masquerading is ingeschakeld voor de gewenste zone:


firewall-cmd --zone=MyZone --query-masquerade

In de onderstaande afbeelding kunnen we zien dat maskeren is ingeschakeld voor de externe zone, maar niet voor openbaar:

U kunt maskeren voor het publiek inschakelen:


firewall-cmd --zone=public --add-masquerade

of gebruik masquerading in external. Dit is wat we zouden doen om Voorbeeld 3 te repliceren met firewalld:


firewall-cmd --zone=external --add-forward-port=port=631:proto=tcp:toport=631:toaddr=192.168.0.10

En vergeet niet de firewall opnieuw te laden.

Meer voorbeelden vindt u in deel 9 van de RHCSA-serie, waar we hebben uitgelegd hoe u de poorten kunt toestaan of uitschakelen die gewoonlijk worden gebruikt door een webserver en een ftp-server, en hoe u de overeenkomstige regel kunt wijzigen als de standaardpoort voor die services zijn veranderd. Daarnaast wilt u wellicht de firewalld-wiki raadplegen voor verdere voorbeelden.

Lees ook: Handige FirewallD-voorbeelden om Firewall in RHEL 7 te configureren

Conclusie

In dit artikel hebben we uitgelegd wat een firewall is, wat de beschikbare services zijn om er een te implementeren in RHEL 7, en een paar voorbeelden gegeven die u kunnen helpen hiermee aan de slag te gaan taak. Als u opmerkingen, suggesties of vragen heeft, kunt u ons dit laten weten via het onderstaande formulier. Alvast bedankt!