Kako zaščititi trde in simbolične povezave v CentOS/RHEL 7


V Linuxu se trde in mehke povezave nanašajo na datoteke, ki so zelo pomembne, če niso zaščitene zelo dobro, lahko zlonamerni uporabniki sistema ali napadalci izkoristijo vse ranljivosti v njih.

Pogosta ranljivost je tekma povezav. Gre za varnostno ranljivost v programski opremi, ki nastane, ko program nezanesljivo ustvari datoteke (zlasti začasne datoteke), zlonamerni uporabnik sistema pa lahko ustvari simbolično (mehko) povezavo do take datoteke.

To se praktično zgodi; program preveri, ali obstaja začasna datoteka ali ne, v primeru, da je ni, pa ustvari datoteko. Toda v tem kratkem času med preverjanjem datoteke in njenim ustvarjanjem lahko napadalec ustvari simbolično povezavo do datoteke in do njega nima dostopa.

Ko torej program deluje z veljavnimi pravicami, ustvari datoteko z istim imenom, kot ga je ustvaril napadalec, dobesedno ustvari ciljno (povezano) datoteko, do katere je nameraval dostopati napadalec. To bi torej lahko napadalcu omogočilo pot do kraje občutljivih podatkov iz korenskega računa ali izvajanje zlonamernega programa v sistemu.

Zato vam bomo v tem članku pokazali, kako zaščititi trde in simbolične povezave pred zlonamernimi uporabniki ali hekerji v distribucijah CentOS/RHEL 7.

V sistemu CentOS/RHEL 7 obstaja pomembna varnostna funkcija, ki dovoljuje ustvarjanje povezav ali sledenje programom le, če so izpolnjeni nekateri pogoji, kot je opisano spodaj.

Če želite sistemski uporabnik ustvariti povezavo, mora biti izpolnjen eden od naslednjih pogojev.

  • uporabnik se lahko poveže samo z datotekami, ki jih ima v lasti.
  • uporabnik mora najprej imeti dostop za branje in pisanje do datoteke, s katero se želi povezati.

Procesi lahko sledijo le povezavam, ki so zunaj svetovno zapisljivih (drugim uporabnikom je dovoljeno pisati) imenikov, ki imajo lepljive koščke, ali pa mora biti eno od naslednjega res.

  • postopek po simbolni povezavi je lastnik simbolične povezave.
  • lastnik imenika je tudi lastnik simbolične povezave.

Omogočite ali onemogočite zaščito na trdih in simboličnih povezavah

Pomembno je, da je ta funkcija privzeto omogočena z uporabo parametrov jedra v datoteki /usr/lib/sysctl.d/50-default.conf (vrednost 1 pomeni omogoči).

fs.protected_hardlinks = 1
fs.protected_symlinks = 1

Če pa želite iz teh ali drugih razlogov onemogočiti to varnostno funkcijo; ustvarite datoteko /etc/sysctl.d/51-no-protect-links.conf s temi možnostmi jedra (vrednost 0 pomeni onemogoči).

Upoštevajte, da je 51 v imenu datoteke (51-no-protect-links.conf), ki ga je treba prebrati po privzeti datoteki, da preglasi privzete nastavitve.

fs.protected_hardlinks = 0
fs.protected_symlinks = 0

Shranite in zaprite datoteko. Nato uporabite zgornji ukaz za izvedbo zgornjih sprememb (ta ukaz dejansko naloži nastavitve iz vsake konfiguracijske datoteke sistema).

# sysctl --system
OR
# sysctl -p  #on older systems

Morda bi radi prebrali tudi naslednje članke.

  1. Kako zaščititi datoteko Vim z geslom v Linuxu
  2. 5 ukazov »chattr«, s katerimi naredite pomembne datoteke IMUUTABLE (nespremenljive) v Linuxu

To je vse! Na spodnjem obrazcu za povratne informacije lahko objavite svoja vprašanja ali delite mnenja o tej temi.