Nastavitev SELinuxa, omogočanje, onemogočanje. SELinux - teorija Subjekti in objekti

Security-Enhanced Linux (SELinux) je mehanizem funkcij v Linuxu, ki zagotavlja podporo za varnostne politike nadzora dostopa.

SELinux lahko ustvari pravila za dostop do uporabnikov ali pripomočkov, kar omogoča omejitev nekaterih zmožnosti dostopa pripomočkov z definiranjem teh zmožnosti in njihovega vedenja v obliki pravil, OS, ki uporablja SELinux, pa bo spremljal skladnost s temi pravili. V tej temi vam bom povedal, kako onemogočiti ali omogočiti SELinux v sistemu CentOS. Nekatere distribucije imajo SELinux privzeto omogočen, kar lahko povzroči neželeno vedenje z njegove strani, če ne razumete, kako SELinux deluje ali kako ga konfigurirati.

Če želite onemogočiti SELinux, lahko uporabite katero koli od 4 različnih metod, omenjenih v tem članku.

SELinux bo uveljavil varnostne politike, vključno z obveznimi kontrolami dostopa, ki so definirane v jedru Linuxa. Vsaka datoteka in proces v sistemu bosta označena s posebnimi bližnjicami, ki jih bo uporabljal SELinux. Uporabite lahko ukaz in si ogledate te bližnjice, kot je prikazano spodaj:

# ls -Z /etc/

To ni popoln seznam, ki sem ga posredoval, morda je za vas drugačen.

1. metoda za onemogočanje SELinux na CentOS. Začasno.

Če želite začasno onemogočiti SELinux, morate urediti /selinux/enforce, kot je prikazano spodaj. Upoštevajte, da ta možnost po ponovnem zagonu sistema ne bo več na voljo.

In tako, preverimo, kakšno stanje ima SELinux na strežniku:

# cat /selinux/enforce 1

Ali pa lahko uporabite:

# /usr/sbin/sestatus Stanje SELinux: omogočeno SELinuxfs mount: /selinux Trenutni način: permisiven Način iz konfiguracijske datoteke: uveljavljanje Različica pravilnika: 24 Pravilnik iz konfiguracijske datoteke: ciljno

To pomeni, da je vklopljen. Če ga želite izklopiti, uporabite naslednji ukaz:

# echo 0 > /selinux/enforce

In preverimo še enkrat:

# cat /selinux/force 0

Možne možnosti za setenforce so:

  • 1 (omogoči).
  • 0 (onemogoči).

Uporabite lahko tudi ukaz setenforce, kot je prikazano spodaj, da onemogočite SELinux. Tukaj je primer izvajanja tega ukaza:

#setenforce 0

Ali pa bom zagotovil drug primer uporabe:

# setenforce Dovoljeno

PS: Če želite preveriti, obstaja še en odličen ukaz:

# getenforce Permissive

2. metoda za onemogočanje SELinux na CentOS. Enkrat in za vselej!

Preverimo stanje SELinux na CentOS.

# cat /etc/selinux/config

Imam ga vklopljenega, želim ga izklopiti, nato pa morate za to odpreti konfiguracijo in napisati:

# vim /etc/selinux/config

Najti je treba:

SELINUX=omogočeno

Zamenjan z:

Kot je prikazano na naslednjem posnetku zaslona:

Po tem moramo znova zagnati naš OS:

# ponovni zagon

3. metoda. Onemogočanje SELinuxa v samem zagonskem nalagalniku Grub.

Če v vašem sistemu ne najdete /etc/selinux/config, lahko onemogočite SELinux tako, da posredujete parameter zagonskemu nalagalniku GRUB, kot je prikazano spodaj.

# cat /boot/grub/grub.conf

4. metoda. Onemogočanje samo določene storitve v SELinux - HTTP/Apache

Če ne želite onemogočiti celotnega SELinuxa, lahko SELinux onemogočite tudi samo za določeno storitev. Na primer, če želite onemogočiti SELinux za streženje HTTP/Apache, potem morate spremeniti spremenljivko httpd_disable_trans v /etc/selinux/targeted/booleans.

O SELinuxu smo na Habréju že pisali, vendar ni objavljenih veliko podrobnih priročnikov o tem sistemu. Danes objavljamo prav tako podroben priročnik o SELinuxu, začenši z informacijami o sistemu in konča s prilagodljivo konfiguracijo pravilnikov.
Da prispevek ne postane težko razumljiv »list«, smo se odločili priročnik razdeliti na dva dela. Prvi bo govoril o samem sistemu in nekaterih njegovih lastnostih. Drugi se nanaša na vzpostavitev politik. Zdaj objavljamo prvi del, drugi del bo objavljen malo kasneje.

1. Uvod

SELinux (SELinux) je prisilni sistem za nadzor dostopa, implementiran na ravni jedra. Ta sistem se je prvič pojavil v četrti različici CentOS, v različicah 5 in 6 pa je bila implementacija bistveno dopolnjena in izboljšana. Te izboljšave so SELinuxu omogočile, da postane univerzalni sistem, ki je sposoben učinkovito rešiti veliko trenutnih problemov. Vredno si je zapomniti, da se najprej uporabi klasični sistem pravic Unix, nadzor pa bo prešel na SELinux samo, če je to začetno preverjanje uspešno.

1.1 Nekaj ​​trenutnih problemov.

Da bi razumeli praktično vrednost SELinuxa, si poglejmo nekaj primerov, kjer standardni sistem za nadzor dostopa ni dovolj. Če je SELinux onemogočen, imate dostop samo do klasičnega diskrecijskega nadzora dostopa, ki vključuje DAC (diskrecijski nadzor dostopa) ali ACL (seznami za nadzor dostopa). Se pravi, govorimo o manipuliranju s pravicami pisanja, branja in izvajanja na ravni uporabnikov in uporabniških skupin, kar pa je lahko v nekaterih primerih popolnoma nezadostno. Na primer:

- Administrator ne more popolnoma nadzorovati dejanj uporabnika. Popolnoma mogoče je na primer, da uporabnik vsem drugim uporabnikom podeli pravice za branje lastnih občutljivih datotek, kot so ključi SSH.

Procesi lahko spremenijo varnostne nastavitve. Datoteke, ki vsebujejo uporabnikovo pošto, bi na primer moral brati samo en določen uporabnik, vendar lahko poštni odjemalec spremeni pravice dostopa, tako da lahko te datoteke berejo vsi.

Procesi podedujejo pravice uporabnika, ki jih je zagnal. Na primer, s trojancem okužena različica brskalnika Firefox lahko bere uporabnikove ključe SSH, čeprav za to nima razloga.

V bistvu sta v tradicionalnem modelu selektivnega nadzora dostopa (DAC) dobro implementirani le dve ravni dostopa - uporabniški in superuporabniški. Ni enostavne metode, ki bi vsakemu uporabniku omogočila zahtevane minimalne privilegije.
Seveda obstaja veliko metod za obhod teh težav znotraj klasičnega varnostnega modela, vendar nobena ni univerzalna.

1.1.1 Osnovni izrazi, uporabljeni v SELinuxu:

Domena- seznam dejanj, ki jih lahko izvede proces. Običajno je domena opredeljena kot najmanjši možni nabor dejanj, prek katerih lahko proces deluje. Na ta način, če je postopek diskreditiran, napadalec ne bo mogel narediti veliko škode.

Vloga- seznam domen, ki se lahko prijavijo. Če določene domene ni na seznamu domen za vlogo, dejanj iz te domene ni mogoče uporabiti.

Vrsta- niz dejanj, ki so dovoljena v zvezi s predmetom. Tip se od domene razlikuje po tem, da se lahko uporablja za cevi, imenike in datoteke, medtem ko se domena uporablja za procese.

Varnostni kontekst- vsi atributi SELinux - vloge, vrste in domene.

1.2 Reševanje problemov tradicionalnega varnostnega modela.

SELinux veliko strožje sledi modelu minimalnih zahtevanih privilegijev za vsako storitev, uporabnika in program. Privzeto je nastavljen »prepovedani način«, ko ima vsak element sistema samo tiste pravice, ki so bistvenega pomena za njegovo delovanje. Če uporabnik, program ali storitev poskuša spremeniti datoteko ali dostopati do vira, ki očitno ni potreben za razrešitev, jim bo dostop preprosto zavrnjen in tak poskus bo zabeležen.

SELinux je implementiran na ravni jedra, zato aplikacijske aplikacije morda sploh ne vedo ničesar o različici tega sistema za nadzor prisilnega dostopa, značilnostih njegovega delovanja itd. Če je pravilno konfiguriran, SELinux ne bo vplival na delovanje programov in storitev tretjih oseb. Čeprav je aplikacija sposobna prestreči sporočila o napakah iz tega sistema za nadzor dostopa, se enostavnost uporabe aplikacije znatno poveča. Če se poskusi dostopati do zaščitenega vira ali datoteke, SELinux pošlje sporočilo o napaki iz družine »dostop zavrnjen« glavni aplikaciji. Toda le malo aplikacij uporablja povratne kode sistemskega klica, pridobljene iz SELinuxa.

Tukaj je nekaj primerov uporabe SELinuxa, ki prikazujejo, kako lahko izboljšate varnost celotnega sistema.

- Ustvarjanje in konfiguriranje seznama programov, ki lahko berejo ssh ključe.

Preprečevanje nepooblaščenega dostopa do podatkov preko poštnega odjemalca.

Konfiguracija brskalnika tako, da lahko bere samo datoteke in mape, ki so potrebne za delovanje v uporabnikovi domači mapi.

2. Načini delovanja SELinux

SELinux ima tri glavne načine delovanja, pri čemer je privzeto nastavljen Enforcing mode. To je dokaj strog način in po potrebi ga je mogoče spremeniti v nekaj bolj priročnega za končnega uporabnika.

Uveljavljanje: privzeti način. Ko je ta način izbran, bodo vsa dejanja, ki kakor koli kršijo trenutno varnostno politiko, blokirana, poskus kršitve pa bo zabeležen v dnevniku.

Permisivno: Pri uporabi tega načina bodo informacije o vseh dejanjih, ki kršijo trenutno varnostno politiko, zabeležene v dnevniku, vendar dejanja sama ne bodo blokirana.

Onemogočeno: Popolna onemogočitev sistema prisilne kontrole dostopa.

Trenutni način in druge nastavitve SELinuxa si lahko ogledate (in jih po potrebi spremenite) s posebnim orodjem GUI, ki je na voljo v meniju Administracija (system-config-selinux). Če ste navajeni delati v konzoli, si lahko trenutno stanje ogledate z ukazom sestatus.

# sestatus Stanje SELinux: omogočeno SELinuxfs mount: /selinux Trenutni način: uveljavljanje Način iz konfiguracijske datoteke: uveljavljanje Različica pravilnika: 21 Pravilnik iz konfiguracijske datoteke: ciljno

Status SELinux lahko ugotovite tudi z uporabo ukaza getenforce.
Ukaz "setenforce" vam omogoča hitro preklapljanje med načinoma Enforcing in Permissive, spremembe stopijo v veljavo brez ponovnega zagona. Toda če omogočite ali onemogočite SELinux, je potreben ponovni zagon, ker je treba varnostne oznake znova namestiti v datotečni sistem.
Če želite izbrati privzeti način, ki bo uporabljen ob vsakem zagonu sistema, nastavite vrednost vrstice "SELINUX=" v datoteki /etc/selinux/config in določite enega od načinov - "uveljavljanje", "dovoljeno" ali " onemogočeno" . Na primer: "SELINUX=permisivno".

3. Politike SELinux

Kot smo že omenili, SELinux privzeto deluje v načinu za uveljavljanje, ko so vsa dejanja, razen dovoljenih, samodejno blokirana, ima vsak program, uporabnik ali storitev samo tiste privilegije, ki jih potrebuje za delovanje, vendar nič več. To je precej stroga politika, ki ima tako prednosti - najvišjo stopnjo informacijske varnosti kot tudi slabosti - konfiguracija sistema v tem načinu je za sistemske skrbnike povezana z veliko dela, poleg tega pa obstaja veliko tveganje, da bodo uporabniki soočajo z omejitvami dostopa, če želijo sistem uporabljati vsaj na netrivialen način. Ta pristop je sprejemljiv v podjetniškem sektorju, vendar je nesprejemljiv na računalnikih končnih uporabnikov. Mnogi skrbniki preprosto onemogočijo SELinux na svojih delovnih postajah, da bi se izognili takšnim težavam.

Da bi se temu izognili, so za ključne aplikacije in storitve, kot so na primer httpd, named, dhcpd, mysqld, definirane vnaprej konfigurirane ciljne politike, ki napadalcu ne bodo omogočile dostopa do pomembnih podatkov. Tiste aplikacije, za katere pravilnik ni definiran, se izvajajo v domeni unconfined_t in niso zaščitene s SELinuxom. Tako vam pravilno izbrani ciljni pravilniki omogočajo doseganje sprejemljive ravni varnosti, ne da bi uporabniku povzročali nepotrebne težave.

4. Nadzor dostopa v SELinuxu

SELinux ponuja naslednje modele nadzora dostopa:

Type Enforcement (TE): primarni mehanizem za nadzor dostopa, ki se uporablja v ciljnih pravilnikih. Omogoča vam podrobno upravljanje dovoljenj na najnižji ravni. Najbolj prilagodljiv, a tudi najbolj delovno intenziven mehanizem za sistemskega administratorja.

Nadzor dostopa na podlagi vlog (RBAC): V tem modelu so pravice dostopa implementirane kot vloge. Vloga je dovoljenje za izvajanje določenih dejanj enega ali več elementov sistema nad drugimi deli sistema. V bistvu je RBAC nadaljnji razvoj TE.

Večnivojska varnost (MLS): večnivojski varnostni model, v katerem je vsem sistemskim objektom dodeljena določena raven dostopa. Dovoljenje ali zavrnitev dostopa določa le razmerje med temi nivoji.

Vsi procesi in datoteke znotraj SELinuxa imajo varnostni kontekst.
Oglejmo si praktični kontekst tako, da si podrobneje ogledamo začetno stran spletnega strežnika Apache, ki se nahaja na /var/www/html/index.html

$ ls -Z /var/www/html/index.html -rw-r--r-- uporabniško ime uporabniško ime system_u:object_r:httpd_sys_content_t /var/www/html/index.html

Poleg standardnih dovoljenj za datoteke lahko vidimo varnostni kontekst SELinux: system_u: object_r: httpd_sys_content_t.

Kontekst temelji na user:role:type:mls, vendar so polja user:role:type prikazana, medtem ko je polje mls skrito. Vidimo lahko tudi ciljno politiko, v tem primeru httpd_sys_content_t.

Zdaj pa si poglejmo varnostni kontekst SELinux za proces "httpd" (spletni strežnik Apache):

$ps axZ | grep httpd system_u:system_r:httpd_t 3234? Ss 0:00 /usr/sbin/httpd

Kot lahko vidimo, se ta proces izvaja na domeni httpd_t.

No, zdaj pa poglejmo varnostni kontekst datoteke v našem domačem imeniku:

$ ls -Z /home/username/myfile.txt -rw-r--r-- uporabniško ime uporabniško ime user_u:object_r:user_home_t /home/username/myfile.txt

Vidimo, da je datoteka tipa user_home_t, ta tip je privzeto dodeljen vsem datotekam v domačem imeniku.
Dostop je dovoljen samo med istovrstnimi elementi, zato lahko spletni strežnik Apache zlahka prebere datoteko /var/www/html/index.html, ki je tipa httpd_sys_content_t. Ker Apache deluje na domeni httpd_t in nima izpolnjenih polj userid:username, ne more dostopati do datoteke home/username/myfile.txt, čeprav to datoteko berejo procesi, ki nimajo ciljna politika. Na ta način, če je spletni strežnik Apache ogrožen, napadalec ne bo mogel dostopati do datotek ali izvajati procesov, ki niso v domeni httpd_t.

5. Odpravljanje težav SELinux

Prej ali slej bo prišlo do situacije, ko se boste soočili s situacijo, ko vam SELinux zavrne dostop do nečesa. Obstaja več glavnih razlogov za zavrnitev dostopa:

Nepravilno označena datoteka.
- Postopek teče v napačnem kontekstu
- Napaka v pravilniku. Postopek zahteva dostop do datoteke, ki ni bila upoštevana pri ustvarjanju pravilnika.
- Poskus invazije.

Prve tri razloge za zavrnitev dostopa odpravimo precej enostavno, med poskusom vdora pa se sproži alarm in uporabniku pošlje ustrezno obvestilo.
Če želite rešiti kakršno koli težavo, samo poglejte dnevnik SELinux. Privzeto ga proces auditd zapiše v datoteko /var/log/audit/audit.log. Če se ta proces ne izvaja, se SELinux prijavi v datoteko /var/log/messages, v tem primeru so vsa sporočila sistema za nadzor dostopa označena s ključem AVC, kar vam na primer omogoča hitro filtriranje potrebnih vrstic. z uporabo ukaza grep.
Najnovejše različice distribucij (začenši s CentOS 5) vključujejo pripomoček z grafičnim uporabniškim vmesnikom, ki omogoča prikaz dnevnika SELinux v priročni in uporabniku prijazni obliki. Prikličete ga lahko s konzole tako, da vnesete sealert -b. Pripomoček je del paketa setroubleshoot. Če strežnik X ne deluje, lahko ustvarite človeku berljiva poročila z naslednjim ukazom:

Sealert -a /var/log/audit/audit.log > /path/to/mylogfile.txt

5.1 Spreminjanje oznak varnostnega konteksta datoteke.

Ukaz "chcon" vam omogoča spreminjanje konteksta SELinux datotek ali imenikov na enak način, kot vam ukaza "chown" in "chmod" omogočata spreminjanje lastnika ali pravic dostopa do datoteke znotraj standardnega sistema za nadzor dostopa.

Poglejmo si nekaj primerov.
Predpostavimo, da je v sistemu nameščen spletni strežnik Apache in moramo spremeniti mapo, v kateri so shranjena spletna mesta (privzeto je to /var/www/html/) v recimo /html/ in ustvariti indeks. html v tem imeniku.
# mkdir /html # touch /html/index.html # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:default_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:default_t html

Zgoraj vidimo, da sta imenik /html in datoteka /html/index.html v varnostnem kontekstu tipa default_t. To pomeni, da če zaženemo Apache in poskušamo delati s tem imenikom ali datoteko, nam bo SELinux zavrnil dostop. In to bo popolnoma pravilno, ker je pravilen varnostni kontekst za datoteke, ki komunicirajo z Apachem, httpd_sys_content_t.
Spremenimo kontekst in preverimo, ali je vse narejeno pravilno:

# chcon -v --type=httpd_sys_content_t /html kontekst /html spremenjen v user_u:object_r:httpd_sys_content_t # chcon -v --type=httpd_sys_content_t /html/index.html kontekst /html/index.html spremenjen v user_u:object_r :httpd_sys_content_t # ls -Z /html/index.html -rw-r--r-- root root user_u:object_r:httpd_sys_content_t /html/index.html # ls -Z | grep html drwxr-xr-x root root user_u:object_r:httpd_sys_content_t html
Ni potrebno ročno obdelati vsake datoteke in vsakega imenika, lahko preprosto uporabite možnost rekurzivnega prehoda imenika:

# chcon -Rv --type=httpd_sys_content_t /html

Takšne spremembe varnostnega konteksta bodo vztrajale med ponovnimi zagoni, vendar bodo spremembe izgubljene, če se spremenijo oznake datotečnega sistema. Med vzdrževanjem in delovanjem to ni neobičajno. Pravilna rešitev v takšni situaciji bi bila (seveda po testiranju) ustvariti dodatno pravilo in ga nato združiti z lokalnimi lokalnimi pravili. Tako bo imel višjo prednost od osnovnih pravil.

Da bo SELinux pravilno deloval tudi po spremembi oznak datotečnega sistema, lahko uporabimo tako orodja za upravljanje SELinuxa z GUI vmesnikom kot pripomoček semanage console:

Semanage fcontext -a -t httpd_sys_content_t "/html(/.*)?"

V zgornjem primeru smo dodelili kontekst httpd_sys_content_t vsem datotekam v imeniku /html.

5.2 Obnovitev varnostnega konteksta SELinux.

Ukaz "restorecon" vam omogoča, da spremenite varnostni kontekst v tistega, ki je bil dodeljen privzeto.
Kot primer ponovno uporabimo spletni strežnik Apache. Predpostavimo, da je uporabnik uredil kopijo datoteke index.html v domačem imeniku in jo (z ukazom mv) premaknil v imenik, v katerem so shranjene spletne strani (/var/www/html).

Upoštevajte, da bo pri kopiranju (ukaz cp) varnostni kontekst datoteke sovpadal s kontekstom ciljnega imenika, pri premikanju pa bo varnostni kontekst sovpadal z izvornim kontekstom. Seveda bi lahko uporabili ukaz chcon za spremembo varnostnega konteksta, a ker so premaknjene datoteke zdaj v imeniku /var/www/html, lahko preprosto obnovimo nastavitve konteksta za vse datoteke v tem imeniku.

Za obnovitev konteksta samo za datoteko index.html lahko uporabimo ukaz:

# restorecon -v /var/www/html/index.html

Če želimo rekurzivno prečkati celoten imenik in spremeniti kontekst za vse datoteke, ki jih vsebuje, uporabimo naslednji ukaz:

# obnovitev -Rv /var/www/html

5.3 Spreminjanje oznak za celoten datotečni sistem.

Včasih je treba ponovno nastaviti varnostne oznake na celotnem datotečnem sistemu. Najpogosteje se ta operacija izvede, ko ponovno omogočite SELinux, potem ko je bil sistem nekaj časa izklopljen. To je potrebno tudi, če spremenimo vrsto upravljanja politike v strogo (v tem primeru vsi procesi delujejo v svojih posebnih domenah; nihče ne more delati v domeni unconfined_t).

Za samodejno ponovno razdelitev datotečnega sistema ob naslednjem ponovnem zagonu vnesite naslednje ukaze:
# dotik /.autorelabel # ponovni zagon
Včasih samodejna ponovna razdelitev ne deluje (najpogosteje v primerih, ko je bil posodobljen distribucijski komplet z onemogočenim SELinuxom). V tem primeru uporabite naslednji ukaz:

# genhomedircon # dotik /.autorelabel # ponovni zagon

5.4 Zagotavljanje dostopa do vrat.

Pogosto želimo, da bi lahko storitve, kot je Apache, poslušale nestandardna vrata in sprejemale dohodne povezave na njih. Osnovni pravilniki SELinux dovoljujejo dostop le do vnaprej določenih vrat, ki so tesno povezana z določeno storitvijo. Recimo, da želimo, da Apache posluša na vratih 81. V tem primeru moramo dodati pravilo z ukazom semanage:

# semanage port -a -t http_port_t -p tcp 81

Celoten seznam vrat, do katerih SELinux omogoča dostop, si lahko ogledate na naslednji način:

# semanage port -l

V naslednjem, drugem delu priročnika, bomo prikazali možnost prilagodljive konfiguracije sistemskih politik.

Nekatere distribucije Linuxa imajo privzeto omogočen SELinux, kar lahko povzroči različne težave. Če ne razumete delovanja SELinuxa in ga ne znate pravilno konfigurirati, je najbolje, da ga onemogočite, dokler ne spoznate osnovnih principov njegovega delovanja

Izključiti SELinux lahko uporabite katero koli od 4 opisanih metod.

Ne bomo se spuščali v podrobnosti o tem, za kaj se uporablja SELinux, in ga bomo neposredno onemogočili. Če sistem uporablja SELinux, lahko z izvajanjem ukaza ls -Z vidite naslednjo sliko.

# ls -Z /etc/-rw-r--r-- root root system_u:object_r:etc_t:s0 a2ps.cfg -rw-r--r-- root root system_u:object_r:adjtime_t:s0 adjtime -rw-r--r-- root korenski sistem_u:object_r:etc_aliases_t:s0 vzdevki drwxr-x--- korenski korenski sistem_u:object_r:auditd_etc_t:s0 revizija drwxr-xr-x korenski korenski sistem_u:object_r:etc_runtime_t:s0 blkid drwxr-xr-x korenski korenski sistem_u:objekt_r :bluetooth_conf_t:s0 bluetooth drwx------ root root system_u:object_r:system_cron_spool_t:s0 cron.d -rw-rw-r-- root disk system_u:object_r:amanda_dumpdates_t:s0 dumpdates

1. način: Začasno onemogočite SELinux

Če želite začasno onemogočiti SELinux, lahko spremenite datoteko /selinux/enforce. Upoštevajte, da je to začasna onemogočitev in ko bo sistem znova zagnan, bo SELinux znova deloval.

# cat /selinux/enforce 1 # echo 0 > /selinux/enforce# cat /selinux/uveljavitev 0

Uporabite lahko tudi ukaz setenforce, kot je prikazano v spodnjem primeru. Možne možnosti za ukaz setenforce so: Uveljavljanje, Dovoljeno, 1 (omogoči) ali 0 (onemogoči).

#setenforce 0

2. način: trajno onemogočite SELinux

Če želite trajno onemogočiti SELinux, uredite datoteko /etc/selinux/config in nastavite SELINUX=disabled, kot je prikazano spodaj. Po tem znova zaženite strežnik.

# cat /etc/selinux/config SELINUX=onemogočeno SELINUXTYPE=ciljano SETLOCALDEFS=0

3. način: onemogočanje SELinux v zagonskem nalagalniku Grub

Tretja metoda uporablja zagonski nalagalnik GRUB za onemogočanje SELinuxa. Dodajte na konec vrstice selinux=0

# mačka /boot/grub/grub.conf privzeto=0 časovna omejitev=5 splashimage=(hd0,0)/boot/grub/splash.xpm.gz naslov skritega menija Enterprise Linux Enterprise Linux Server (2.6.18-92.el5PAE) koren (hd0,0) jedro /boot/vmlinuz -2.6.18-92.el5PAE ro root=LABEL=/ rhgb tiho selinux=0 initrd /boot/initrd-2.6.18-92.el5PAE.img naslov Enterprise Linux Enterprise Linux Server (2.6.18-92.el5) koren (hd0,0) jedro /boot/vmlinuz-2.6.18-92.el5 ro root=LABEL=/ rhgb tiho selinux=0 initrd /boot/initrd-2.6.18-92.el5.img

4. način: Onemogočite SELinux samo za določene storitve - HTTP/Apache

Če vam SELinuxa ni treba popolnoma onemogočiti, ampak samo za določene storitve, imate to možnost. Na primer, onemogočimo SELinux za HTTP/Apache s spremembo vrednosti spremenljivke httpd_disable_trans v datoteki /etc/selinux/targeted/booleans.

# grep httpd /etc/selinux/targeted/booleans httpd_builtin_scripting=1 httpd_disable_trans=1 httpd_enable_cgi=1 httpd_enable_homedirs=1 httpd_ssi_exec=1 httpd_tty_comm=0 httpd_unified=1

Nastavite spremenljivko tudi z ukazom setsebool. Po tem znova zaženite httpd, da bodo spremembe začele veljati.

V sistemu Android 5.0 Lollipop je Google privzeto omogočil funkcijo SeLinux, zaradi česar je zelo težko spreminjati sistemsko particijo! Kako onemogočiti? Beri naprej!

Za tiste, ki radi spreminjajo vdelano programsko opremo ali potrebujejo vgradnjo aplikacije, se je Google zelo potrudil, da bi to preprečil - aktivirana je tehnologija selinux, ki "razbije" datoteke, ki končajo v sistemski particiji, ter spremenjen varnostni sistem, ki temelji na Knoxu, izposojen pri Samsungu. Vse to je bilo ustvarjeno zato, da navadni uporabniki ne moremo spremeniti sistemske particije! Čas je, da to popravimo!

Kaj je potrebno za onemogočanje zaščite v sistemu Android?

1. Računalnik z OS UBUNTU

2. Jedro boot.img iz pametnega telefona ali tablice Android

Navodila, kako onemogočiti zaščito v jedru Android

Priprava

Namestite paket, ki integrira odpiranje terminala v upravitelju datotek

1. Odprite terminal in vnesite naslednji ukaz

Za 32-bitne sisteme:

sudo apt-get namestite nautilus-open-terminal:i386

Za 64-bitne sisteme:

sudo apt-get namestite nautilus-open-terminal

2. Nato izvedite ukaz za ponovni zagon upravitelja datotek

3. Namestite paket, potreben za delo z jedrom Android

sudo apt-get install abootimg

Delo z jedrom

1. V domači mapi ustvarite mapo s katerim koli priročnim imenom in tja premaknite jedro Android - boot.img. (Primer bo pokazal mapo jedra)

2. Pojdite v mapo jedro, v kateri koli prazen prostor kliknite z desno miškino tipko in izberite »Odpri v terminalu«

3. V terminalu, ki se odpre, vnesite ukaz:

abootimg -x boot.img

Nato v mapi jedro videli boste, da so se pojavile nove mape (jedro je bilo razpakirano)

4. Ustvarimo novo mapo (pokličimo jo rw) znotraj mape jedro, v terminalu pišemo

5. V terminal napišite ukaz za nadaljnje razpakiranje particije initrd.img

zcat ../initrd.img | cpio -i

6. Nato v mapi rw našli boste veliko datotek

7. Poiščite in odprite datoteko default.prop

8. V datoteki spremenite vrstico

in shranite datoteko ter zapustite njo

9. V terminalu sestavite datoteko initrd.img in napišite ukaz

najti . | cpio -o -H novoc | gzip > ../initrd.img

10. Vrnemo se nazaj v mapo jedra, za to pišemo v terminalu

11. Prevajanje jedra Android z opravljenimi spremembami

abootimg --create boot.img -k zImage -r initrd.img

in nato še en ukaz

abootimg --create boot.img -f bootimg.cfg -k zImage -r initrd.img

Jedro Android s podporo za init.d je dokončano! Nato morate bliskati!

To je vse! Ostanite z družbami in se naročite nanje! Naprej bo bolj zanimivo!

Pozdravljeni vsi, spregovorimo nekaj o SELinuxu, a pred tem malo definicije za tiste, ki še niste slišali, kaj to je. SELinux je okrajšava za angleščino. besede Security-Enhanced Linux, kar pomeni Linux z izboljšano varnostjo. Z drugimi besedami, gre za izvedbo sistema prisilne kontrole dostopa, ki je sposoben delovati vzporedno s klasičnim sistemom selektivne kontrole dostopa. Razlika je v tem, da v SELinuxu prek določenih pravilnikov pravice dostopa določa sistem sam, sistem selektivnega nadzora dostopa pa razdeli procesni dostop do virov glede na uporabniške pravice, za preprosto razumevanje so to pravice rwx na treh ravneh - lastnik , skupina lastnikov in drugi uporabniki.
Po kratkem opisu si poskusimo ogledati nekaj ukazov in možnosti SELinux. Naši primeri bodo prikazani na operacijskem sistemu Linux CentOS 6. Morda prvi in ​​verjetno najbolj priljubljeni so ukazi za preverjanje stanja SELinux.

/usr/sbin/getenforce

/usr/sbin/sestatus

Vrne vrednosti za ukaz getenforce
Uveljavljanje– označuje, da je SELinux aktiviran in da so uveljavljena pravila pravilnika;
Permisivno– označuje, da je SELinux aktiviran, vendar pravila pravilnika niso uveljavljena in se uporabljajo samo pravila DAC;
Onemogočeno– označuje, da je SELinux onemogočen.

Povratne vrednosti za ukaz sestatus
Ta ukaz poleg stanja SELinux vrne tudi uporabljen pravilnik SELinux, primer:

$ /usr/sbin/sestatus Status SELinux: omogočen SELinuxfs mount: /selinux Trenutni način: uveljavljanje Način iz konfiguracijske datoteke: uveljavljanje Različica pravilnika: 23 Pravilnik iz konfiguracijske datoteke: ciljno

Status SELinux: omogočeno – pomeni, da je SELinux omogočen;
Trenutni način: uveljavljanje – pomeni, da je SELinux omogočen v prisilnem načinu;
Pravilnik iz konfiguracijske datoteke: ciljno – označuje, da je uporabljen ciljni pravilnik SELinux.

Omogočanje SELinux
Omogočite/onemogočite SELinux v operacijskem sistemu v konfiguracijski datoteki
/etc/selinux/config

# Ta datoteka nadzira stanje SELinuxa v sistemu. # SELINUX= lahko sprejme eno od teh treh vrednosti: # uveljavljanje - varnostna politika SELinux je uveljavljena. # permisivno - SELinux natisne opozorila namesto uveljavitve. # onemogočeno - Naložen ni noben pravilnik SELinux. SELINUX=onemogočeno # SELINUXTYPE= lahko sprejme eno od teh dveh vrednosti: # targeted - Ciljni procesi so zaščiteni, # mls - Multi Level Security protection. SELINUXTYPE=ciljano

Možnost SELINUX=onemogočeno pomeni, da je SELinux onemogočen. Preden zaženete SELinux, morate izvesti nekaj manipulacij.
1. Preverite namestitev paketov SELinux

Rpm -qa | grep selinux rpm -q policycoreutils rpm -qa | grep settroubleshoot

Prepričajte se tudi, da so nameščeni naslednji paketi: selinux-policy-targeted, selinux-policy, libselinux, libselinux-python, libselinux-utils, policycoreutils, setroubleshoot, setroubleshoot-server, setroubleshoot-plugins. Paketi policycoreutils-gui, odpravljanje težav, selinux-policy-devel, in mcstrans neobvezno.
Manjkajoče pakete lahko namestite z ukazom (kot root)

Ime namestitvenega paketa Yum

2. Vsaka datoteka datotečnega sistema mora biti pred zagonom označena s kontekstom SELinux. Do te točke je lahko omejenim domenam dostop zavrnjen, kar lahko povzroči, da se operacijski sistem ne naloži pravilno. Stanje je mogoče popraviti z nastavitvijo možnosti SELINUX=permissive v konfiguracijski datoteki /etc/selinux/config.

3. Označevanje datotek bo izvedeno med naslednjim ponovnim zagonom sistema. Oznake za vse datoteke se med postopkom nastavijo v kontekstu SELinux. V zadnji vrstici vsak znak * predstavlja 1000 označenih datotek. Trajanje postopka je odvisno od števila datotek v sistemu in hitrosti diskov.

*** Opozorilo -- potrebna je ponovna oznaka ciljanega pravilnika SELinux. *** Ponovno označevanje lahko traja zelo dolgo, odvisno od velikosti datotečnega *** sistema in hitrosti trdih diskov. ****

4. V primeru, ko pravilnik SELinux ni prisilno dodeljen in se delo izvaja v razširitvenem načinu, se prepovedi zapišejo v dnevnik kot dejanja, ki bi bila prepovedana v prisilnem načinu. Prepričajte se, da SELinux ne prepoveduje dejanj med zadnjim zagonom sistema; za to zaženite ukaz

Grep "SELinux preprečuje" /var/log/messages

Izhod mora biti prazen, kar pomeni, da je vse v redu in da SELinux ne prepoveduje dejanja.
5. Ko se prepričate, da v dnevnikih ni sporočil o prepovedih, nastavite parameter SELINUX v uveljavitvi (datoteka /etc/selinux/config):

# Ta datoteka nadzira stanje SELinuxa v sistemu. # SELINUX= lahko sprejme eno od teh treh vrednosti: # uveljavljanje - varnostna politika SELinux je uveljavljena. # permisivno - SELinux natisne opozorila namesto uveljavitve. # onemogočeno - Naložen ni noben pravilnik SELinux. SELINUX=uveljavljanje # SELINUXTYPE= lahko sprejme eno od teh dveh vrednosti: # targeted - Ciljni procesi so zaščiteni, # mls - Multi Level Security protection. SELINUXTYPE=ciljano

6. Po tem je treba znova zagnati operacijski sistem. Po ponovnem zagonu morate z ukazom getenforce preveriti vrnjeno vrednost Enforcing.

$ /usr/sbin/getenforce uveljavitev

7. Če si želite ogledati preslikave med SELinuxom in uporabniki sistema, zaženite ukaz

/usr/sbin/semanage prijava –l

Izhod ukaza bi moral biti takšen:

Uporabniško ime SELinux MLS/MCS obseg __default__ unconfined_u s0-s0:c0.c1023 root unconfined_u s0-s0:c0.c1023 system_u system_u s0-s0:c0.c1023

Obstajajo tudi nekatere značilnosti, ki jih je treba upoštevati. Ko je SELinux onemogočen, uporabniško ustvarjene datoteke niso označene in posledično lahko pride do težav, ko jih postavite v stanje uveljavljanja. Datoteke bodo označene tako, da se možnost spremeni iz onemogočenega v dopustni/izvršljivi način, s čimer se prepreči težava pojavljanja neoznačenih datotek.