Kako zaščititi omrežne storitve z uporabo TCP ovitkov v Linuxu
V tem članku bomo razložili, kaj so ovijalniki TCP in kako jih konfigurirati na konfiguriran požarni zid.
V zvezi s tem lahko to orodje predstavljate kot zadnji varnostni ukrep za vaš sistem. Z uporabo požarnega zidu in ovojnic TCP namesto, da bi dali prednost enemu drugemu, se prepričajte, da vaš strežnik nima ene same točke okvare.
Razumevanje hosts.allow in hosts.deny
Ko omrežna zahteva prispe na vaš strežnik, ovojniki TCP s pomočjo hosts.allow
in hosts.deny
(v tem vrstnem redu) ugotovijo, ali naj odjemalec sme uporabljati določeno storitev .
Te datoteke so privzeto prazne, vse so komentirane ali ne obstajajo. Tako je skozi sloj ovojnic TCP dovoljeno vse, vaš sistem pa se lahko za popolno zaščito zanese na požarni zid. Ker to ni zaželeno, iz razloga, ki smo ga navedli v uvodu, poskrbite, da obstajata obe datoteki:
# ls -l /etc/hosts.allow /etc/hosts.deny
Sintaksa obeh datotek je enaka:
<services> : <clients> [: <option1> : <option2> : ...]
kje,
- storitve je seznam storitev, ločenih z vejico, za katere je treba uporabiti trenutno pravilo.
- odjemalci predstavljajo seznam imen gostiteljev ali naslovov IP, ločenih z vejico, na katere vpliva pravilo. Sprejeti so naslednji nadomestni znaki:
- VSE se ujema z vsem. Velja tako za stranke kot za storitve.
- LOCAL se ujema z gostitelji brez pike v njihovem FQDN-ju, na primer localhost.
- ZNANO označuje situacijo, ko so ime gostitelja, naslov gostitelja ali uporabnik znani.
- NEZNANO je nasprotje ZNANEM.
- PARANOID povzroči, da se povezava prekine, če povratna iskanja DNS (najprej na naslovu IP za določitev imena gostitelja, nato na imenu gostitelja za pridobitev naslovov IP) v vsakem primeru vrnejo drug naslov.
Morda ne pozabite, da ima pravilo, ki omogoča dostop do dane storitve v
/etc/hosts.allow
, prednost pred pravilom v/etc/hosts.deny
, ki prepoveduje to. Če za isto storitev veljata dve pravili, bo upoštevano le prvo.Na žalost vse omrežne storitve ne podpirajo uporabe ovitkov TCP. Če želite ugotoviti, ali jih določena storitev podpira, naredite:
# ldd /path/to/binary | grep libwrap
Če zgornji ukaz vrne izhod, je lahko zavit v TCP. Primer tega sta sshd in vsftpd, kot je prikazano tukaj:
Kako uporabiti zavijalce TCP za omejitev dostopa do storitev
Ko urejate
/etc/hosts.allow
in/etc/hosts.deny
, dodajte novo vrstico tako, da pritisnete Enter za zadnjo neprazno vrstico.Če želite dovoliti dostop SSH in FTP samo do 192.168.0.102 in localhost ter zavrniti vse druge, dodajte ti dve vrstici v
/etc/hosts.deny
:sshd,vsftpd : ALL ALL : ALL
in naslednja vrstica v
/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
Te spremembe se izvedejo takoj, brez ponovnega zagona.
Na naslednji sliki lahko vidite učinek odstranjevanja besede
LOCAL
iz zadnje vrstice: strežnik FTP postane nedosegljiv za localhost. Ko vrnemo nadomestni znak, je storitev spet na voljo.Če želite dovoliti vse storitve gostiteljem, kjer ime vsebuje
example.com
, dodajte to vrstico vhosts.allow
:ALL : .example.com
in če želite 10.0.1.0/24 zavrniti dostop do vsftpd do računalnikov, dodajte to vrstico v
hosts.deny
:vsftpd : 10.0.1.
Na zadnjih dveh primerih opazite piko na začetku in na koncu seznama strank. Uporablja se za označevanje\"VSE gostitelji in/ali odjemalci, kjer ime ali IP vsebuje ta niz".
Vam je bil članek v pomoč? Imate kakšno vprašanje ali komentar? Sprostite nam opombo s pomočjo spodnjega obrazca za komentar.