miten perustaa Linux chroot vankilat

termiä chroot Vankila käytettiin ensimmäisen kerran vuonna 1992, artikkelissa merkittävä tietoturvatutkija, Bill Cheswick, (mikä on mielenkiintoista, jos olet kiinnostunut tuollainen asia, löydät artikkelin täältä). Chroot vankilat alkoi ilmestyä vuonna 2003, sovelluksia kuten IRC ja FTP. Vuonna 2005 Sun esitteli “Containers” – teknologiansa nimeltä Zones, joka puolestaan oli nimiavaruuksien käsitteen edeltäjä, joka on konttien kanssa käytettävä ydinteknologia.

Chroot basics

Chroot sallii ylläpitäjän kontrolloida pääsyä palveluun tai tiedostojärjestelmään samalla kun hän kontrolloi altistumista taustalla olevalle palvelinympäristölle. Kaksi yleistä esimerkkiä, joita saatat kohdata, ovat käynnistysjärjestyksen aikana ja “emergency shell” Red Hat/CentOS/Fedora-järjestelmissä ja Secure FTP (SFTP) – järjestelmässä.

komento näyttää tältä:

chroot <newroot> ]

sudo – komennon tapaan chroot – komento muuttaa seuraavan komennon ympäristöä. Toisin sanoen se muuttaa sinut newroot – hakemistoon, ja tekee tästä hakemistosta myös “toimivan” hakemiston. command suorittaa sitten kyseisessä paikassa, mikä on hyödyllistä esimerkiksi pelastettaessa järjestelmää, joka ei käynnisty.

toisin kuin sudo, olet hakemistossa “in”. Tämä käytäntö, jälleen, on hyödyllinen, jos käynnistät ulkoisen median mutta täytyy käyttää “paikallinen” tiedostojärjestelmä tai komento tehdä työtä.

chroot toinen yleinen käyttötarkoitus on rajoittaa palvelua tai käyttäjää piilottamalla tiedostojärjestelmän loput osat kääreellä, mikä rajoittaa etäkäyttäjän näkymää muiden käyttäjien tietoihin. Suosittu toteutus käyttämällä tätä lähestymistapaa SFTP.

esimerkki

ennen kuin aloitat tämän esimerkin työstämisen, kannattaa varmistaa, että sinulla on varmuuskopiot. Tässä tapauksessa varmuuskopioi /etc/ssh/sshd_config – tiedosto, koska teet siihen muutoksia.:

# cp /etc/ssh/sshd_config /etc/ssh/sshd_config.bak

toistaiseksi rajoitat vain SFTP-käyttäjien kotihakemistoihin palvelimella. Tämä vaatimus tarkoittaa, että sinun täytyy lisätä käyttäjiä ja laittaa heidät ryhmään:

# useradd -g sftpusers -s /sbin/nologin -p nick nick

huomaa, että jos teet tämän, voit määrittää nick tilin, jolla ei ole kirjautumisriviä. Tämä tekniikka on sekä käytännöllinen että hyvä tietoturvakäytäntö: jos hän käyttää vain SFTP: tä, hänellä ei pitäisi olla sisäänkirjautumisoikeuksia. Aion keskustella tarjoamalla kuori etäkäyttäjille seuraavassa artikkelissa.

nyt sinun täytyy kertoa ssh – palvelulle, mitä tehdä, kun SFTP-käyttäjät kirjautuvat sisään. Avaa /etc/ssh/sshd_config – tiedosto ja lisää loppuun seuraava:

Subsystem sftp internal-sftpMatch Group sftpusersForceCommand internal-sftpChrootDirectory /homeX11Forwarding noAllowTcpForwarding no

on tärkeää, että lisäät nämä asetukset erillisenä tietuekokonaisuutena ja että käytät Match – syntaksia osoittaaksesi, että tämä osio koskee vain tämän ryhmän käyttäjiä. Jos olet tehnyt muutokset olemassa oleviin merkintöihin, ne koskisivat kaikkia SSH-käyttäjiä, jotka voisivat katkaista etäyhteyden.

konfiguraatiorivit jakautuvat seuraavasti:

  • ForceCommand saa ssh valitsemaan sisäänrakennetun laitoksensa tarjoamaan SFTP-palvelua (jota voi hallita itsenäisesti).
  • ChrootDirectory kertoo sshd, mihin käyttäjä voi rajoittaa.
  • Subsystem sftp internal-sftp kertoo sshd: n lataavan sisäisen sftp palvelun ja antavan sen käyttöön.

saatat joutua varmistamaan, että tätä Subsystem ei ole määritelty jo kommentoimalla tätä riviä aiemmin asetustiedostossa:

# override default of no subsystems# Subsystem sftp /usr/libexec/openssh/sftp-server

kun olet tehnyt muutokset ja tarkistanut oikeinkirjoituksen, mene eteenpäin ja tallenna muutokset. Käynnistä sitten uudelleen sshd:

# systemctl restart sshd

testaa uusi käyttäjä:

$ sftp nick@showmenick@showme's password:Connected to [email protected]> lsaccounting ansible fred jason kenny lisa nicksftp> pwdRemote working directory: /sftp> exit

Oho, odota hetki: näyttää siltä, että näet myös kaikki muiden käyttäjien hakemistot. Kuitenkin, et voi navigoida näihin hakemistoihin:

sftp> cd fredsftp> lsremote readdir("/fred"): Permission denied

voit ohjata chrooted-käyttäjän omaan kotihakemistoonsa muuttamalla ChrootDirectory – riviä sshd_config – tiedostossa näin:

ChrootDirectory /

tämä nopea muutos saa Nickin näyttämään siltä kuin hän olisi omassa kotihakemistossaan, eikä hän voi nähdä muiden käyttäjien tiedostoja:

sftp> pwdRemote working directory: /home/nicksftp>sftp> exit$ touch test.txt$ sftp nick@showmenick@showme's password:Connected to [email protected]> put test.txtUploading test.txt to /home/nick/test.txttest.txt 100% 0 0.0KB/s 00:00sftp> lstest.txtsftp>

minne se meni? Katso tätä.:

# ls /home/nicktest.txt

huomaa, että chroot jail: ää ei sinänsä pidetä riittävänä turvallisuusrajoituksena. Vaikka se estää käyttäjää muuttumasta pois rajoitetusta hakemistosta, on olemassa tapoja kiertää tämä (yleisideaan viitataan chroot(2) man-sivulla, johon kannattaa tutustua, jos harkitsee tämän tempun käyttämistä tuotanto-tai liiketoimintakriittisessä kontekstissa.)

paketointi (toistaiseksi)

niin voi nähdä, että chroot voi olla aika hyödyllinen työkalu. Osassa 2, katson enemmän määrittämällä erityisiä hakemistoja käyttäjille, ja tarjoamalla shell ympäristön etäkäyttäjälle paljastamatta muun palvelimen.

uusia kontteja? Lataa Containers Primer ja opi Linux containers perusteet.

Vastaa

Sähköpostiosoitettasi ei julkaista.