Joomlan käyttöoikeuksia ja FTP-tasoon tutustumista, artikkelin käännös

  • Kharadus
  • Kharadus hahmo Aiheen kirjoittaja
  • Vieras
  • Vieras
12.09.2013 12:53 - 13.09.2013 09:11 #5759 : Kharadus
Kharadus loi aiheen: Joomlan käyttöoikeuksia ja FTP-tasoon tutustumista, artikkelin käännös
Alkuperäinen artikkeli löytyy osoitteesta magazine.joomla.org/issues/issue-sept-2013/item/15...m-permissions-to-the-ftp-layer

Joomla oikeuksista FTP-tasoon


Tämä artikkeli tiivistää ensimmäisen tunnin Joomlan johdantokurssistani. Se on vähän ”raskasta” luettavaa, koska se käsittelee järjestelmäarkkitehtuurikonsepteja, joihin käyttäjällä on harvemmin ammattimaista kokemusta. Artikkeli kannattaa lukea rauhallisesti, murehtimatta siitä, jos kaikki ei heti vaikuta selvältä. Piirtämällä kirjoituksen esimerkit ja kopioimalla kuvat voi hyvin huomata nauttineensa ajastaan.



Huom: Tämä artikkeli tiivistää useiden kuukausien ammattikorkeakoulutason opinnot. Jos lukijalle ei ole käsillä kynää ja paperia, sekä aimo annosta kärsivällisyyttä joiden avulla käydä esimerkkejä läpi, saattaa jokin toinen artikkeli olla parempi valinta ;-)

Artikkelissa tulee vastaan joitakin asioita, joiden sisäistäminen saattaa olla hankalaa, vaikka pyrimme välttämään liiallista näiden asioiden pariin uppoutumista. Lopussa tarjoan suositeltavaa luettavaa aiheen tiimoilta, mutta jos senkin jälkeen jotakin jää epäselväksi, voi minulle kirjoittaa vapaasti ja pyrin auttamaan ongelman kanssa.

Tavoite: Ymmärtää mikä ja miksi Joomlassa on FTP-taso!


Aloitamme tarkastelemalla tiedostojen oikeuksia, koska tämä on usean käyttäjän alustojen turvallisuuden kulmakivi.

Tiedon jäsentely tavallisessa tietokoneessa tapahtuu tiedostojen kautta. Jokaisella tiedostolla on oltava nimi, josta se tunnistetaan. Perinteisesti nimi koostuu kahdesta, pisteen erottamasta osasta: nimestä ja tiedostonimen päätteestä. Nimi auttaa meitä tunnistamaan tiedostolle annetun käyttötarkoituksen, kun taas tiedostonimen pääte kertoo tiedoston tyypin. Joitakin yleisiä päätteitä ovat:

.txt puhdas tekstitiedosto
.odt OpenOffice-tekstitiedosto
.pdf tiedosto, joka sisältää sivun ja standardin suunnitteluformaatin
.exe ajotiedosto Windowsissa
.sh ajettava komentojonotiedosto Linuxissa
.php tiedosto, joka sisältää ohjelman php-kielellä
.html html-sivun koodin sisältävä tiedosto

Erikoistyyppisiä tiedostoja ovat niin kansiot, kuin hakemistotkin. Sisäisesti tietokone käsittelee näitä, kuin ne olisivat vain tiedostoja, joihin on lisätty ominaisuus, joka määrittää ne virtuaalisiksi säilöiksi, joihin talletetaan kasoja datatiedostoja ja muita hakemistoja (joita kutsutaan alihakemistoiksi, koska ne ovat toistensa sisällä). Mitä opimme tässä artikkelissa, on se että niitä kohdellaan täsmälleen samoin, kuin tavallisiakin tiedostoja.

On olemassa muitakin erityistiedostotyyppejä, kuten pehmeitä ja kovia linkkejä yms. Se pätee myös kohta nähtäviin esimerkkeihin. Kaikki, millä on nimi käyttöjärjestelmässämme, käyttäytyy seuraavasti:

Kun tiedosto luodaan, sen nimeää käyttäjä, joka on kirjoittanut nimensä ja salasanansa tietokoneellaan (tai automaattisesti, jos käyttöjärjestelmää asennettaessa määriteltiin vain yksi käyttäjä, jota käytetään oletusarvoisesti).

Eli tiedoston nimen lisäksi tallennetaan tietoihin myös käyttäjä, jonka alaisuudessa se tehtiin, joka on määritelty owneriksi (haltija). Tämän on erittäin tärkeä muistaa.



Yläpuolisesta kuvasta näemme, että tiedoston nimen (name of the file), luomisajankohdan (date of the file & time of the file), määrittelyn hakemistoksi (jos pätee, number of directories (1 if it’s a file)), sekä haltijan nimen (owner of the file) näytetään myös, mihin ryhmään se kuuluu (group to which it belongs).

Mihin viitataan ”ryhmällä, johon se kuuluu”? Kaikki käyttäjät kuuluvat vähintään omaan ryhmäänsä. Kun käyttäjä luodaan, luodaan samanaikaisesti samalla nimellä ryhmä tuolle käyttäjälle. Näin jos vanhemmalle halutaan saada oikeudet käyttää molempien lastensa tiedostoja, ilman että he saavat oikeudet toistensa tiedostoihin tai vanhempansa tiedostoihin, on ensimmäiseksi lisättävä vanhempi käyttäjänä molempien lasten ryhmiin.



Hyvä vanhempi haluaa vain nähdä, mitä heidän lapsensa tekee muokkaamatta tai poistamatta niitä, jolloin oikeudet tulevat mukaan kuvioihin.

On olemassa kolmenlaisia työryhmiä, jotka vaikuttavat tiedostoon. Kolmen? Mehän näimme vain kaksi! Tärkein ryhmätyyppi on OWNER (haltija), järjestyksessä toisena on haltijan GROUP (ryhmä), ja kolmantena… ovat kaikki käyttäjät, jotka eivät ole joko haltija tai osa hänen ryhmäänsä, toisin sanoen OTHERS (muut käyttäjät).

Ensimmäistä kuvaa katsottaessa nähdään, että jokaisen tiedostonnimen alla on joukko kirjaimia, joita ei ole aiemmin esitelty. Tiedostolle nimeltä ”progress” ensimmäinen kirjain janalla on ”d”, kun taas kahdessa muussa tuo kirjain ei ole tarjolla ensimmäisessä asemassa. Hieman mielikuvitusta käyttäen voidaan havaita, että ensimmäinen kirjain kertoo, onko tiedosto hakemisto ( d=directory), vai vain yksittäinen tiedosto.

Tätä seuraavat yhdeksän kirjainta taas ovat käyttöoikeudet.



Kolme käyttöoikeustasoa on määritelty jokaiselle ryhmälle. Kolme haltijalle (USER), kolme haltijan ryhmälle (GROUP), jos heidät halutaan erotella haltijasta, sekä kolme kaikille muille käyttäjille (OTHERS).

Ja nyt muistelemaan binääriä!

Numerot 10-järjestelmässä (0-9) ovat samoja, kuin yleisesti 2-järjestelmässä käytössä olevat (0-1) ovat ne, joita tietokoneet käyttävät, ja niiden vertailu on helppoa.



Sinisessä osassa kuvaa näkyy ”paino (weight)”, joka vastaa binäärin numeroarvoa desimaalina. Ensimmäisessä sarakkeessa vasemmalla oleva numero on desimaali, toisessa sarakkeessa numero on binäärinä, ja toisessa numero on myös binäärinä, mutta ositettuna niin, että se voidaan lisätä helpommin.

Näin ollen binääriluku ”0101” omaa desimaalina vastaavuuden ”0 +4 +1 +1” eli ”5”, ja binääriluku ”0111” on sama kuin ”0 +4 +2 +1” desimaalina, eli ”7”.

Näin palaamme takaisin käyttöoikeuksiin:



Jokaisella ryhmällä on kolme oikeutta, vasemmalta oikealle: lue (read), kirjoita (write) ja suorita (execute).

Jos tarkastellaan toimeenpano-osioita (001), nähdään että se antaa järjestelmän ajaa tiedoston kuin se olisi ohjelma. Tämä on Joomlassa harvoin tarpeen, sillä sen kirjoituskieli (PHP) tulkitsee koodin, joka on ollut pakko merkitä suoritettavaksi.

Toinen osanen (010), joka on arvoltaan kaksi desimaalina, on kirjoitus. Tämä lupa varmistaa, että tiedostoja voidaan luoda (jos kyseessä on hakemisto) ja poistaa tai ylikirjoittaa jos kyseessä on yksittäinen tiedosto.

Kolmas ja tärkein osio (0100) on Lue. Jos tätä ei ole merkitty, ei tiedostoa voida lukea.

Mahdolliset yhdistelmät ovat:

000 Tiedosto ei ole näkyvissä, eikä sitä voida muokata tai ajaa
001 Tiedosto voidaan vain ajaa
010 Tiedostoa voidaan muokata
011 Tiedostoa voidaan muokata ja sen voi ajaa
100 Tiedostoa voidaan vain konsultoida
101 Tiedosto, jota voidaan konsultoida, on ajettavissa
110 Tiedostoa voidaan konsultoida ja muokata
111 Tiedostolle on täysi käyttöoikeus

Palautetaan mieleen aiempi kappale ja käytetään vapaasti tervettä järkeä. Haltija voi tehdä mitä vain haluaa tiedostoillee, eli ”7”, haltijan ryhmän jäsenet voivat vain lukea ne: ”4”, samoin kuten muut käyttäjät: ”4”, yleinen asetus Joomlan tiedostojen käyttöoikeuksille olisi näin ollen ”744”.

Jos asiaa miettii tarkemmin, ei haltija voi koskaan ajaa tiedostoa, joten ensimmäinen ”7” voisi olla ”6”. Korotetaan osiota ja jätetään turvallisuustasoksi ”644”?

Käyttöoikeuksia EI IKINÄ aseteta muotoon ”777” tai ”666”, koska milloinkaan ei tule sallia muiden kuin haltijan muokata tai ajaa tiedostoja ellei se ole aivan pakollista. Joomlassa näin EI KOSKAAN käy.

Nyt tiedämme, kuinka tiedostojen käyttöoikeudet toimivat, mutta miten tämä liittyy FTP-tasoon?

Päästäksemme tähän vastaukseen on tiedettävä kuinka internet-palvelin toimii.

Tutkitaanpa alla olevaa kuvaa:

Tämä on Joomlaamme ajavan internet-palvelimen perusrakenne.

Netin käyttäjä avaa selaimensa, ja kirjoittaa osoitteen, johon haluaa mennä, esim. magazine.joomla.org/es . Ensimmäiseksi tietokone kysyy DNS-palvelimelta, joka on asetettu verkkoasetuksiin, vastaavaa ip-osoitetta tuolle nimelle (magazine.joomla.org). Jos DNS-palvelin saa vastauksen, se palauttaa sen selaimella, jos taas ei, se kysyy DNS-verkon kautta DNS-pääserveriltä (master server) domania, jota on haettu (tässä tapauksessa joomla.org). Selain tietää joka tapauksessa etsiä koneelta ip-osoitetta 72.248.159.59.

Tästä alkaa kommunikaatio käyttäjän ip:n ja palvelimen ip:n välillä, mutta miten?

Jokaisella ip-osoitteella on portiksi kutsuttu asia, jotka toimivat kuten ovet kotiportaalin naapureihin. Ip-osoite toimii kuten talon kadunumero (Sarvijaakon katu 28), ja portti määrittää jokaisen erillisen huoneiston (ensimmäinen ovi oikealla).

Kaiken TC/IP-kommunikaation (joka on selaimien käyttämä protokolla) täytyy kulkea yhdestä IP:stä ja lähdeportista kohde Ip:hen ja porttiin.

Ensimmäiset 1024 porttia ovat määritelty palvelimen käytettäviksi porteiksi (kuvassa näkyy joitakin yleisimpiä), ja portit välillä 1025-65536 toimivat ulosmenevän liikenteen portteina.

Kun käyttäjän IP (esim. 80.252.16.48) lähtee liikkeelle kotiportistaan, 43560 se lähettää paketin magazine.joomla.org-serverille (72.249.159.59) nähdäkseen sivuston (portti 80). Palvelimen vastatessa se tekee sen noiden kahden ip:n ja portin välillä, joten paketit tietävät mistä tulevat, ja mihin menevät.

Tiedämme miten käyttäjä (user) ja palvelin (server) kommunikoivat, mutta mitä ne sanovat?

Tässä kohtaa tämä muuttaa monimutkaisemmaksi.

Palvelimen ensimmäinen kysymys selaimelle käyttäjän nimi ja käyttäjän ryhmä (group), joiden kautta käyttäjällä on oikeus palvelimen tiedostoihin. 99% selaimistamme vastaa ”Ei minulla ole hajuakaan, anna minulle Apache-asetuksiesi oletuskäyttäjän tiedot”. Palvelin ystävällisesti antaa nämä tiedot.

Kuvitellaanpa Apache-palvelimen asetuksia säätäessä, että asettaisimme oletusarvoisesti käyttäjät yhdistämään käyttäjänä ”apache” ryhmään ”apache”. Asetusten ollessa näin he yhdistävät itsenäisesti jopa sen jälkeen kun Joomla, tai jokin muu ohjelma kysyy käyttäjältä oikeuksia toimintaansa. Puhumme oikeuksista nähdä verkkosivusto.

Näin verkkopalvelimella (tässä tapauksessa Joomlalla) olevien tiedostojen tulisi olla luettavissa oletuskäyttäjälle (apache, ryhmästä apache), muussa tapauksessa tiedostoa ei lähetä PHP-tulkille ajettavaksi. Tämä ei välttämättä tiedä mitä tietoa tietokannasta pitäisi ladata, ja palautettavaksi ei välttämättä tule Joomlalla ajettavaa HTML-tiedostoa, jonka voisi lähettää selaimelle.



Verkkopalvelin siis määrää käyttäjän ja ryhmän, joiden kautta yhdistät verkkoon, mielenkiintoista eikö olekin?

Mutta miksi se FTP-taso? Alamme lähestyä vastausta.

Kuvitellaan, että haluan ladata uuden tiedoston. Hakemiston, johon se pyritään lataamaan, tulee omata ”kirjoita”-oikeus. Kuka on haltija? Esimerkissämme se on ”apache: apache”. Helpoin tapa ladata kuvia tai muita tiedostoja verkkoon on käyttää hakemistoa, joiden oikeudet on asetettu ainakin muotoon ”600”.

Mutta miten käy jos jokainen verkon käyttäjä yhdistää samalla käyttäjällä saman ryhmän osana? Johtaako tämä siihen, että kaikki voivat muokata toisten lataamia tietoja miten haluavat?
Tässä onkin paradoksimme:

1. Verkkopalvelimen tiedostojen tulisi olla yhden haltijan alaisuudessa kaikille verkon käyttäjille.
2. Jos haluamme muokata tai luoda tiedoston on sen oltava kirjoitettavissa.
3. Kaikki käyttäjät voivat muokata näitä tiedostoja.

Näin jokainen käyttäjä, jolla on vähintään ”700”-oikeudet palvelimen hakemistoihin ja tiedostoihin, voisi tehdä seuraavaa:

• Poistaa toisen käyttäjän tiedoston
• Muokata toisen käyttäjän tiedostoa
• Ladata ajettavan ohjelman (viruksen, troijalaisen tms.) ja ajaa sen

Ja saavumme viimein FTP-tasolle.

Joomlaan lisättiin ylimääräinen turvallisuustoiminto nimeltä Taso FTP (LAYER FTP) siltä varalta, että käytetyn palvelimen asetukset eivät ole aivan kohdillaan. Tämä tarkoittaa, että Joomla ei ota käyttöön FTP-tason vastinetta toisesta järjestelmästä, näin suojaten sisältöään.

Katsotaanpa mistä FTP-taso koostuu.

Kun Joomlan tarvitsee ladata tiedostotyyppi, joka ei ole http:llä, se yhdistää ftp-palvelimen lisätäkseen sen koneen kiintolevylle, jolla verkkopalvelimen tiedot (normaalisti) ovat, käyttäen käyttäjänimeä ja salasanaa joka sille on annettu. Näin verkkotiedostomme ovat käyttäjän ”ftp_user” hallinnassa, joka kuuluu ryhmään ”ftp_user”, ja joita ei voida koskaan muokata ryhmän ”apache” käyttäjän ”apache” toimesta.

Näin kukaan kutsumaton vieras ei voi käydä Joomlassa lisäämässä sinne epähaluttuja tiedostoja.

Tämä voidaan kyllä kiertää, jos vaikkapa käytössä olevien lisäosien koodi sisältää heikkouden, jota kautta joku vieras pääsisi sisään, mutta se on toisen ajan murhe.

Kannattaa muistaa, että palvelinta ylläpitävät turvallisuuteen erikoistuneet henkilöt, joten ongelmat voidaan ratkaista ottamatta käyttöön tätä varotoimenpidettä Joomlassa. Nyt kuitenkin päätöksemme FTP-tason käytöstä on tietoinen päätös, jonka vaikutukset ymmärrämme, käytimmepä sitä tai emme.

Mitäpä tässä enempiä turisemaan, tämä on mielestäni mielenkiintoinen alku Joomlan ominaisuuksien tutkimiseen. Jos olet jo lukenut tähän asti, niin kiitän ja toivottavasti artikkelista on ollut apua!


Artikkeli PDF-muodossa, kuvineen päivineen:


Tämä liitetiedosto on piilotettu vierailta.
Kirjaudu sisään tai rekisteröidy nähdäksesi se.
Last Edit: 13.09.2013 09:11 : Kharadus.

Kirjaudu tai Rekisteröidy liittyäksesi keskusteluun.

Valvojat: jkwebdesignGamossJiiKoo
Sivu luotiin ajassa: 0.094 sekuntia