![Top 7 asennettavaa sovellusta Nextcloud -instanssiasi varten](/f/6e2c9c73e9d5c61dce5eb698714c1d1b.png?width=100&height=100)
Voittaa standardin rajoitukset ja lisätä turvamekanismeja ugo/rwx
käyttöoikeudet ja pääsynvalvontaluettelot, Yhdysvaltain kansallinen turvallisuusvirasto (NSA) kehitti joustavan Pakollinen kulunvalvonta (MAC) -menetelmä tunnetaan nimellä SELinux (lyhenne jstk Parannettu suojaus Linux) rajoittaakseen muun muassa prosessien mahdollisuutta käyttää tai suorittaa muita toimintoja järjestelmäobjekteilla (kuten tiedostot, hakemistot, verkkoportit jne.) mahdollisimman pienellä luvalla, mutta sallivat kuitenkin myöhemmin tehdä muutoksia tähän malliin.
Toinen suosittu ja laajalti käytetty MAC on AppArmor, jonka tarjoamien ominaisuuksien lisäksi SELinux, sisältää oppimistilan, jonka avulla järjestelmä voi "oppia”Miten tietty sovellus toimii ja asettaa rajoituksia määrittämällä profiilit sovellusten turvallista käyttöä varten.
Sisään CentOS 7, SELinux on sisällytetty itse ytimeen ja otettu käyttöön Pakottaminen oletuksena (lisää tästä seuraavassa osiossa), toisin kuin openSUSE ja Ubuntu jotka käyttävät AppArmor.
Tässä artikkelissa kerromme SELinuxin ja AppArmorin olennaisista osista ja siitä, miten voit käyttää jotakin näistä työkaluista eduksi valitsemastasi jakelusta riippuen.
Parannettu suojaus Linux voi toimia kahdella eri tavalla:
SELinux voidaan myös poistaa käytöstä. Vaikka se ei itse ole toimintatila, se on silti vaihtoehto. Tämän työkalun käytön oppiminen on kuitenkin parempi kuin sen huomiotta jättäminen. Pidä se mielessä!
Näyttää nykyisen tilan SELinux, käytä getenforce
. Jos haluat vaihtaa toimintatilan, käytä setenforce 0
(asettaaksesi sen Salliva) tai säätövoima 1
(Pakottaminen).
Koska tämä muutos ei selviä a käynnistä uudelleen, sinun on muokattava /etc/selinux/config tiedosto ja aseta SELINUX vaihtuva kumpaankaan valvoa
, salliva
tai liikuntarajoitteinen
pysyvyyden saavuttamiseksi uudelleenkäynnistyksen aikana:
Sivuhuomautuksena, jos getenforce
palauttaa Disabled, sinun on muokattava /etc/selinux/config halutulla toimintatilalla ja käynnistä se uudelleen. Muussa tapauksessa et voi asettaa (tai vaihtaa) toimintatilaa painikkeella setenforce
.
Yksi tyypillisistä käyttötarkoituksista setenforce
koostuu SELinux -tilojen välillä (alkaen valvoa kohteeseen salliva tai päinvastoin) vianmääritykseen sovellukselle, joka toimii väärin tai ei toimi odotetulla tavalla. Jos se toimii SELinux -asetukseksi Salliva tilassa, voit olla varma, että tarkastelet SELinux -käyttöoikeusongelmaa.
Kaksi klassista tapausta, joissa meidän on todennäköisesti käsiteltävä SELinuxia, ovat:
Katsotaanpa näitä kahta tapausta seuraavien esimerkkien avulla.
Yksi ensimmäisistä asioista, joita useimmat järjestelmänvalvojat tekevät palvelimiensa suojaamiseksi, on muuttaa porttia, jossa SSH -demoni kuuntelee, lähinnä estääkseen porttiskannerit ja ulkoiset hyökkääjät. Tätä varten käytämme satamadirektiiviä /etc/ssh/sshd_config jota seuraa seuraava portin numero seuraavasti (käytämme porttia 9999 tässä tapauksessa):
Portti 9999.
Kun olemme yrittäneet käynnistää palvelun uudelleen ja tarkistaneet sen tilan, näemme, että se ei käynnistynyt:
# systemctl käynnistä sshd uudelleen. # systemctl status sshd.
Jos katsomme /var/log/audit/audit.log, sen näemme sshd estettiin aloittamasta satamassa 9999 käyttäjältä SELinux koska se on varattu portti JBoss Management palvelu (SELinux -lokiviestit sisältävät sanan “AVC” jotta ne voidaan helposti tunnistaa muista viesteistä):
# kissa /var/log/audit/audit.log | grep AVC | häntä -1.
Tässä vaiheessa useimmat ihmiset todennäköisesti poistuvat käytöstä SELinux mutta emme tee. Näemme, että SELinuxilla ja sshd -kuuntelulla eri portilla on tapa elää harmoniassa yhdessä. Varmista, että sinulla on policycoreutils-python paketti asennettu ja ajettu:
# yum asenna policycoreutils-python.
Voit tarkastella luetteloa porteista, joissa SELinux sallii sshd: n kuunnella. Seuraavassa kuvassa näemme myös kyseisen portin 9999 oli varattu toiselle palvelulle, joten emme voi toistaiseksi käyttää sitä toisen palvelun suorittamiseen:
# semanage -portti -l | grep ssh.
Voimme tietysti valita toisen portin SSH: lle, mutta jos olemme varmoja, että meidän ei tarvitse käyttää tätä erityistä JBoss-palveluun, voimme sitten muokata olemassa olevaa SELinux-sääntöä ja määrittää tämän portin SSH: lle sen sijaan:
# semanage -portti -m -t ssh_port_t -p tcp 9999.
Sen jälkeen voimme käyttää ensimmäistä semanage komento tarkistaa, onko portti määritetty oikein, vai -lC
vaihtoehdot (lyhyt luettelon mukautetusta):
# semanage -portti -lC. # semanage -portti -l | grep ssh.
Voimme nyt käynnistää SSH: n uudelleen ja muodostaa yhteyden palveluun portin avulla 9999. Huomaa, että tämä muutos selviää uudelleenkäynnistyksestä.
Jos sinun täytyy määritä Apache -virtuaalinen isäntä käyttämällä muuta hakemistoa kuin /var/www/html kuten DocumentRoot (sanotaan esim. /websrv/sites/gabriel/public_html):
DocumentRoot "/websrv/sites/gabriel/public_html"
Apache kieltäytyy tarjoamasta sisältöä, koska index.html on merkitty default_t SELinux tyyppi, johon Apache ei pääse:
# wget http://localhost/index.html. # ls -lZ /websrv/sites/gabriel/public_html/index.html.
Kuten edellisessä esimerkissä, voit tarkistaa seuraavan komennon avulla, että kyseessä on todellakin SELinuxiin liittyvä ongelma:
# kissa /var/log/audit/audit.log | grep AVC | häntä -1.
Jos haluat vaihtaa tarran /websrv/sites/gabriel/public_html rekursiivisesti httpd_sys_content_t
, tee:
# semanage fcontext -a -t httpd_sys_content_t "/websrv/sites/gabriel/public_html(/.*)?"
Yllä oleva komento antaa Apachelle vain luku -oikeuden kyseiseen hakemistoon ja sen sisältöön.
Lopuksi voit soveltaa käytäntöä (ja saada tunnisteiden muutos voimaan välittömästi) seuraavasti:
# restorecon -R -v/websrv/sites/gabriel/public_html.
Nyt sinun pitäisi päästä käsiksi hakemistoon:
# wget http://localhost/index.html.
Lisätietoja SELinuxista on Fedora 22: ssa SELinux ja järjestelmänvalvojan opas.