Kako osigurati mrežne usluge pomoću TCP omotača u Linuxu


U ovom ćemo članku objasniti što su TCP omotači i kako ih konfigurirati da ograniče pristup mrežnim uslugama koje se izvode na Linux poslužitelju. Međutim, prije nego što počnemo, moramo pojasniti da korištenje TCP omotača ne eliminira potrebu za ispravno konfiguriranim vatrozidom.

U tom smislu, možete razmišljati o ovom alatu kao o listi za kontrolu pristupa temeljenoj na hostu, a ne kao o krajnjoj sigurnosnoj mjeri za vaš sustav. Korištenjem vatrozida i TCP omotača, umjesto favoriziranja jednog nad drugim, pobrinut ćete se da vaš poslužitelj ne ostane ni s jednom točkom kvara.

Razumijevanje hosts.allow i hosts.deny

Kada mrežni zahtjev stigne do vašeg poslužitelja, TCP omotači koriste hosts.allow i hosts.deny (tim redoslijedom) kako bi odredili treba li klijentu dopustiti korištenje određene usluge .

Prema zadanim postavkama te su datoteke prazne, sve su komentirane ili ne postoje. Dakle, sve je dopušteno kroz sloj omotača TCP-a i vašem sustavu ostaje da se oslanja na vatrozid za punu zaštitu. Budući da to nije poželjno, zbog razloga koje smo naveli u uvodu, provjerite postoje li obje datoteke:

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

Sintaksa obje datoteke je ista:

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

gdje,

  1. usluge je popis usluga odvojenih zarezima na koje se trenutno pravilo treba primijeniti.
  2. Klijenti predstavljaju popis imena računala ili IP adresa odvojenih zarezima na koje utječe pravilo. Prihvaćaju se sljedeći zamjenski znakovi:

    1. SVE odgovara svemu. Odnosi se i na klijente i na usluge.
    2. LOCAL odgovara hostovima bez točke u njihovom FQDN-u, kao što je localhost.
    3. POZNAT označava situaciju u kojoj su ime glavnog računala, adresa glavnog računala ili korisnik poznati.
    4. NEPOZNATO suprotno je od POZNATO.
    5. PARANOID uzrokuje prekid veze ako obrnuto traženje DNS-a (prvo na IP adresi za određivanje naziva glavnog računala, zatim na imenu glavnog računala za dobivanje IP adresa) vrati različitu adresu u svakom slučaju.
  3. Konačno, izborni popis radnji odvojenih dvotočkom pokazuje što bi se trebalo dogoditi kada se dano pravilo pokrene.

Možda ćete htjeti imati na umu da pravilo koje dopušta pristup određenoj usluzi u /etc/hosts.allow ima prednost nad pravilom u /etc/hosts.deny koje zabranjuje to. Osim toga, ako se dva pravila primjenjuju na istu uslugu, samo će se prvo uzeti u obzir.

Nažalost, ne podržavaju sve mrežne usluge korištenje TCP omotača. Da biste utvrdili podržava li ih određena usluga, učinite sljedeće:

ldd /path/to/binary | grep libwrap

Ako gornja naredba vrati izlaz, može se omotati TCP-om. Primjer ovoga su sshd i vsftpd, kao što je prikazano ovdje:

Kako koristiti TCP omote za ograničavanje pristupa uslugama

Dok uređujete /etc/hosts.allow i /etc/hosts.deny, provjerite jeste li dodali novi red pritiskom na Enter nakon posljednjeg neprazna linija.

Da biste dopustili SSH i FTP pristup samo 192.168.0.102 i localhost i zabranili sve ostale, dodajte ova dva retka u /etc/hosts.deny :

sshd,vsftpd : ALL
ALL : ALL

i sljedeći redak u /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

Ove promjene se odvijaju odmah bez potrebe za ponovnim pokretanjem.

Na sljedećoj slici možete vidjeti učinak uklanjanja riječi LOCAL iz posljednjeg retka: FTP poslužitelj će postati nedostupan za localhost. Nakon što vratimo zamjenski znak, usluga ponovno postaje dostupna.

Da biste omogućili sve usluge hostovima čiji naziv sadrži example.com, dodajte ovaj redak u hosts.allow:

ALL : .example.com

i za odbijanje pristupa vsftpd-u strojevima na 10.0.1.0/24, dodajte ovaj redak u hosts.deny:

vsftpd : 10.0.1.

Na posljednja dva primjera primijetite točku na početku i kraju popisa klijenata. Koristi se za označavanje “SVIH hostova i/ili klijenata gdje ime ili IP sadrži taj niz”.

Je li vam ovaj članak bio od pomoći? Imate li pitanja ili komentara? Slobodno nam pošaljite poruku koristeći obrazac za komentare u nastavku.