Zoeken op website

Netwerkservices beveiligen met TCP-wrappers in Linux


In dit artikel leggen we uit wat TCP-wrappers zijn en hoe je deze kunt configureren om de toegang tot netwerkservices die op een Linux-server draaien te beperken. Voordat we echter beginnen, moeten we duidelijk maken dat het gebruik van TCP-wrappers de noodzaak van een goed geconfigureerde firewall niet elimineert.

In dit opzicht kunt u deze tool beschouwen als een hostgebaseerde toegangscontrolelijst, en niet als de ultieme beveiligingsmaatregel voor uw systeem. Door gebruik te maken van een firewall en TCP-wrappers, in plaats van de ene boven de andere te bevoordelen, zorgt u ervoor dat uw server niet met één enkel storingspunt achterblijft.

Hosts.allow en hosts.deny begrijpen

Wanneer een netwerkverzoek uw server bereikt, gebruiken TCP-wrappers hosts.allow en hosts.deny (in die volgorde) om te bepalen of de client een bepaalde service mag gebruiken .

Standaard zijn deze bestanden leeg, allemaal becommentarieerd of bestaan ze niet. Alles wordt dus toegestaan via de TCP-wrapperslaag en uw systeem moet voor volledige bescherming op de firewall vertrouwen. Aangezien dit niet gewenst is, vanwege de reden die we in de inleiding hebben vermeld, moet u ervoor zorgen dat beide bestanden bestaan:

ls -l /etc/hosts.allow /etc/hosts.deny

De syntaxis van beide bestanden is hetzelfde:

<services> : <clients> [: <option1> : <option2> : ...]

waar,

  1. services is een door komma's gescheiden lijst met services waarop de huidige regel moet worden toegepast.
  2. clients vertegenwoordigen de lijst met door komma's gescheiden hostnamen of IP-adressen waarop de regel van toepassing is. De volgende wildcards worden geaccepteerd:

    1. ALL komt overeen met alles. Geldt zowel voor klanten als voor diensten.
    2. LOCAL komt overeen met hosts zonder punt in hun FQDN, zoals localhost.
    3. BEKEND geeft een situatie aan waarin de hostnaam, het hostadres of de gebruiker bekend zijn.
    4. ONBEKEND is het tegenovergestelde van BEKEND.
    5. PARANOID zorgt ervoor dat een verbinding wordt verbroken als reverse DNS lookups (eerst op IP-adres om de hostnaam te bepalen, daarna op hostnaam om de IP-adressen te verkrijgen) in elk geval een ander adres retourneren.
  3. Ten slotte geeft een optionele lijst met door dubbele punten gescheiden acties aan wat er moet gebeuren als een bepaalde regel wordt geactiveerd.

Houd er misschien rekening mee dat een regel die toegang tot een bepaalde service toestaat in /etc/hosts.allow voorrang heeft boven een regel in /etc/hosts.deny die verbiedt Het. Als bovendien twee regels op dezelfde dienst van toepassing zijn, wordt alleen met de eerste rekening gehouden.

Helaas ondersteunen niet alle netwerkdiensten het gebruik van TCP-wrappers. Om te bepalen of een bepaalde service deze ondersteunt, doet u het volgende:

ldd /path/to/binary | grep libwrap

Als de bovenstaande opdracht uitvoer retourneert, kan deze in TCP-wrapping zijn. Een voorbeeld hiervan zijn sshd en vsftpd, zoals hier getoond:

TCP-wrappers gebruiken om de toegang tot services te beperken

Wanneer u /etc/hosts.allow en /etc/hosts.deny bewerkt, zorg er dan voor dat u een nieuwe regel toevoegt door na de laatste regel op Enter te drukken niet-lege regel.

Om SSH- en FTP-toegang alleen toe te staan tot 192.168.0.102 en localhost en alle andere te weigeren, voegt u deze twee regels toe in /etc/hosts.deny :

sshd,vsftpd : ALL
ALL : ALL

en de volgende regel in /etc/hosts.allow:

sshd,vsftpd : 192.168.0.102,LOCAL
#
hosts.deny	This file contains access rules which are used to
#		deny connections to network services that either use
#		the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		The rules in this file can also be set up in
#		/etc/hosts.allow with a 'deny' option instead.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : ALL
ALL : ALL
#
hosts.allow	This file contains access rules which are used to
#		allow or deny connections to network services that
#		either use the tcp_wrappers library or that have been
#		started through a tcp_wrappers-enabled xinetd.
#
#		See 'man 5 hosts_options' and 'man 5 hosts_access'
#		for information on rule syntax.
#		See 'man tcpd' for information on tcp_wrappers
#
sshd,vsftpd : 192.168.0.102,LOCAL

Deze wijzigingen vinden onmiddellijk plaats zonder dat een herstart nodig is.

In de volgende afbeelding kun je het effect zien van het verwijderen van het woord LOCAL uit de laatste regel: de FTP-server zal niet meer beschikbaar zijn voor localhost. Nadat we de wildcard weer hebben toegevoegd, is de service weer beschikbaar.

Om alle services toe te staan aan hosts waarvan de naam example.com bevat, voegt u deze regel toe in hosts.allow:

ALL : .example.com

en om de toegang tot vsftpd aan machines op 10.0.1.0/24 te weigeren, voegt u deze regel toe in hosts.deny:

vsftpd : 10.0.1.

Bij de laatste twee voorbeelden ziet u de punt aan het begin en het einde van de klantenlijst. Het wordt gebruikt om “ALLE hosts en/of clients aan te geven waar de naam of het IP-adres die string bevat”.

Was dit artikel nuttig voor u? Heeft u vragen of opmerkingen? Laat het ons gerust weten via het onderstaande reactieformulier.