Sådan sikres netværkstjenester ved hjælp af TCP Wrappers i Linux


I denne artikel vil vi forklare, hvad TCP-indpakninger er, og hvordan man konfigurerer dem til konfigureret firewall.

I denne henseende kan du tænke på dette værktøj som en ultimativ sikkerhedsforanstaltning for dit system. Ved at bruge en firewall og TCP-indpakninger, i stedet for at favorisere den ene over den anden, vil du sørge for, at din server ikke har et enkelt fejlpunkt.

Forståelse af værter. Tillad og værter. Nægtelse

Når en netværksanmodning når frem til din server, bruger TCP-omslag hosts.allow og hosts.deny (i den rækkefølge) til at afgøre, om klienten skal have lov til at bruge en given service .

Disse filer er som standard tomme, alle kommenteret eller findes ikke. Således er alt tilladt gennem TCP-indpakningslaget, og dit system overlades til at stole på firewallen for fuld beskyttelse. Da dette ikke ønskes, skal du sørge for, at begge filer eksisterer på grund af den grund, vi nævnte i indledningen:

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

Syntaksen for begge filer er den samme:

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

hvor,

  1. tjenester er en kommasepareret liste over tjenester, som den aktuelle regel skal anvendes på.
  2. klienter repræsenterer listen med komma-adskilte værtsnavne eller IP-adresser, der er påvirket af reglen. Følgende jokertegn accepteres:
    1. ALLE matcher alt. Gælder både klienter og tjenester.
    2. LOCAL matcher værter uden en periode i deres FQDN, såsom localhost.
    3. KENDT angiver en situation, hvor værtsnavnet, værtsadressen eller brugeren er kendt.
    4. Ukendt er det modsatte af KENDT.
    5. PARANOID får en forbindelse til at blive slettet, hvis reverse DNS-opslag (først på IP-adresse for at bestemme værtsnavn, derefter på værtsnavn for at få IP-adresser) returnerer en anden adresse i hvert tilfælde.

    Det kan være en god idé at huske på, at en regel, der giver adgang til en given tjeneste i /etc/hosts.allow , har forrang for en regel i /etc/hosts.deny , der forbyder det. Derudover, hvis to regler gælder for den samme tjeneste, tages kun den første i betragtning.

    Desværre understøtter ikke alle netværkstjenester brugen af TCP-indpakninger. For at afgøre, om en given tjeneste understøtter dem, skal du gøre:

    # ldd /path/to/binary | grep libwrap
    

    Hvis ovenstående kommando returnerer output, kan den pakkes TCP. Et eksempel på dette er sshd og vsftpd, som vist her:

    Sådan bruges TCP-indpakninger til at begrænse adgangen til tjenester

    Når du redigerer /etc/hosts.allow og /etc/hosts.deny , skal du sørge for at tilføje en ny linje ved at trykke på Enter efter den sidste ikke-tomme linje.

    Hvis du kun vil tillade SSH og FTP-adgang til 192.168.0.102 og localhost og nægte alle andre, skal du tilføje disse to linjer i /etc/hosts.deny :

    sshd,vsftpd : ALL
    ALL : ALL
    

    og følgende linje i /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
    

    Disse ændringer finder sted straks uden behov for en genstart.

    I det følgende billede kan du se effekten af at fjerne ordet LOCAL fra den sidste linje: FTP-serveren bliver utilgængelig for localhost. Når vi har tilføjet jokertegnet tilbage, bliver tjenesten tilgængelig igen.

    Hvis du vil tillade alle tjenester til værter, hvor navnet indeholder eksempel.com , skal du tilføje denne linje i hosts.allow :

    ALL : .example.com
    

    og for at nægte adgang til vsftpd til maskiner den 10.0.1.0/24 skal du tilføje denne linje i hosts.deny :

    vsftpd : 10.0.1.
    

    I de sidste to eksempler skal du bemærke prikken i begyndelsen og slutningen af klientlisten. Det bruges til at indikere “ALLE værter og/eller klienter, hvor navnet eller IP'en indeholder den streng”.

    Var denne artikel nyttig for dig? Har du spørgsmål eller kommentarer? Send os gerne en note ved hjælp af nedenstående kommentarformular.