Zabezpečenie súboru Magento & Povolenia adresára

V predvolenom nastavení sa väčšina softvérových balíkov inštaluje s najmiernejšími povoleniami a vlastníctvom súborov/adresárov. Zvyčajne sa to robí v záujme vývojára softvéru, pretože ich softvér musí byť nainštalovaný na rôznych systémoch s rôznymi konfiguráciami. Tento článok vám má poskytnúť prehľad o tom, ako nastaviť inštaláciu Magento s najprísnejšími povoleniami v záujme celkovej bezpečnosti.
Pri spustení Linuxu existujú dve hlavné prostredia, ktoré nájdete:

  1. PHP skripty, ktoré sa spúšťajú cez mod_php alebo ekvivalent a všetky skripty sa spúšťajú ako používateľ webového servera. To znamená, že keď je váš skript spustený, môže čítať (a niekedy aj zapisovať) s rovnakou úrovňou privilégií ako webový server. To by mohlo umožniť sledovanie medzi účtami v nastaveniach zdieľaného hostingu a nie je to ideálne v zdieľanom prostredí, najmä pokiaľ ide o elektronický obchod.
  2. PHP skripty, ktoré sa spúšťajú ako používateľ, ktorý vlastní súbory samotné prostredníctvom prechodnej konštrukcie, ako je suPHP, PHP suEXEC, PHP-FPM atď. V tomto prípade vaše skripty bežia ako vy a pri spustení na zdieľanom serveri sú celkovo bezpečnejšie.

Beží ako používateľ webového servera (č. 1)

POZNÁMKA: Tieto pokyny sú určené na použitie s Magento Enterprise. Ak sa chystáte urobiť nasledovné s Magento Community Edition, potom to efektívne preruší funkčnosť Magento Connect. To znamená, že sme zahrnuli skript na zapnutie a vypnutie týchto zmien, ak chcete tieto pokyny používať flexibilne.
V predvolenom nastavení mnohé zdieľané a špecializované hostingové spoločnosti spúšťajú vaše skripty ako samotný používateľ webového servera, ako je uvedené vyššie. Je to predvolený operačný systém na väčšine systémov Linux a hoci v zdieľanom prostredí nie je najbezpečnejší, dá sa čiastočne napraviť. Dosahuje sa to obmedzením prístupu prostredníctvom prísnejších oprávnení k súborom, čo zmierňuje niektoré inherentné bezpečnostné problémy. Vo vyhradených hostiteľských prostrediach je táto metóda skutočne žiaduca, hlavne z dôvodov výkonu, a všetky naše špecializované a zoskupené plány Magento SIP používajú túto metódu. Žiadna z výhrad zdieľaného hostingu sa nevzťahuje na dedikované servery, keďže server obsluhuje jedného klienta.
Toto sú kroky, ktoré robíme v obyčajnej angličtine, po ktorých nasledujú príkazy skriptu:

  1. Ak máte prístup na zmenu vlastníctva súborov a adresárov (zvyčajne to znamená, že máte prístup root), nastavte vlastníctvo používateľa a skupiny všetkých súborov v adresári Magento na vášho lokálneho používateľa. Vo vašom prostredí sa to už môže robiť a je to jednoducho preventívne opatrenie na vymazanie všetkých súborov alebo adresárov vlastnených webovým serverom.
  2. [bash]nájdi \-exec chown youruser.youruser {} \;[/bash]

  3. Zmeňte povolenia systému Linux pre všetky súbory vo vašom základnom adresári Magento tak, aby ich mohol čítať a zapisovať vlastník (vy) a aby ich mohol čítať iba každý iný. Toto má získať základnú líniu, kde samotný webový server môže čítať všetky súbory. Na spustenie skriptov a poskytovanie statického obsahu, ako sú obrázky, CSS a súbory Javascript, bude potrebovať prístup na čítanie.
  4. [bash]find -type f \-exec chmod 644 {} \;[/bash]

  5. Zmeňte povolenia systému Linux pre všetky adresáre vo vašom základnom adresári Magento tak, aby bolo možné zoznamovať, súbory upravovať a navigovať pre vlastníka a jednoducho navigovať pre všetkých ostatných.
  6. [bash]find -type d \-exec chmod 711 {} \;[/bash]

  7. Adresáre „media“ a „var“ vyžadujú špeciálne zaobchádzanie, pretože samotný webový server musí byť schopný čítať aj vytvárať/upravovať súbory. Toto je miesto, kde väčšina inštrukcií prezrádza farmu a smeruje priamo k celosvetovému právu upravovať súbory a adresáre. Zaujmeme najmenej privilegovaný prístup tým, že zmeníme povolenia Linuxu pre všetky adresáre na zoznam, ktorý môže upravovať súbor a navigáciu pre vlastníka a pre každého iného. Urobíme tiež ďalší krok a nastavíme linuxové „skupinové“ oprávnenia pre súbor, aby ktokoľvek v skupine mohol zoznamovať, upravovať súbory a prechádzať aj v adresároch.
  8. [bash]find -type d \-exec chmod 775 {} \;
    find -type d \-exec chmod 775 {} \;[/bash]

  9. Niečo podobné urobíme aj so súbormi v adresároch „media“ a „var“. To znamená, že umožňuje vlastníkovi oprávnenie čítať a zapisovať, skupinovému používateľovi oprávnenie čítať a písať a všetkým ostatným jednoducho čítať oprávnenia.
  10. [bash]find -type f \-exec chmod 664 {} \;
    find -type f \-exec chmod 664 {} \;[/bash]

  11. Tento krok bude tiež vyžadovať prístup na úrovni root alebo flexibilnú hostingovú spoločnosť (ako my). Budete musieť nastaviť vlastníctvo súborov a adresárov pre adresáre „media“ a „var“, ktoré budú vlastnené webovým serverom a budú mať skupinové vlastníctvo vášho lokálneho používateľa. Môžete namietať, že je to spätne, ale z technických dôvodov, ktoré zahŕňajú spôsob výpočtu využitia miesta na disku, sa to v našich systémoch odporúča a robí.
  12. [bash]nájdi \-exec chown webuser.váš používateľ {} \;
    nájdi \-exec chown webuser.váš používateľ {} \;[/bash]

  13. Tento krok bude opäť vyžadovať prístup root a/alebo flexibilného hostiteľa a je pravdepodobne najmenej zrozumiteľný zo všetkých krokov. V krokoch 5 a 6 sme nastavili systém, pomocou ktorého umožníte webovému serveru prístup na čítanie a zápis vašich súborov, ale spôsobom, ktorý je veľmi špecifický – čo je dobré. Urobili sme to na špecifickej skupine existujúcich súborov a adresárov. Musíme zabezpečiť, aby budúce vytvorené súbory a adresáre dodržiavali rovnakú (alebo prísnejšiu) množinu vlastníctva a oprávnení. To sa vykonáva pomocou niektorých špeciálnych funkcií adresárov Linuxu, konkrétne bitov SUID a SGID. Keď sú tieto bity nastavené, povedia Linuxu, aby zdedil vlastníctvo adresára, ktorý okamžite zahŕňa vytvorený súbor alebo adresár. Jednoducho, keďže Magento vytvára súbory a adresáre v „médiách“ a „var“, ich vlastníctvo bude odrážať to, čo sme nastavili v kroku 6.
  14. [bash]nájdi -typ d \-exec chmod u+s,g+s {} \;
    nájdi -typ d \-exec chmod u+s,g+s {} \;[/bash]

  15. Nakoniec, pre minimálne množstvo pridanej ochrany proti snooperom zmeňte oprávnenia súborov na základných konfiguračných súboroch Magento tak, aby boli čitateľné a zapisovateľné vlastníkom súboru a čitateľné iba pre skupinu.
  16. [bash]chmod 640 [/bash]

Čítať:  Najlepšie témy WordPress pre právnikov & advokátske kancelárie

Skript povolení webového používateľa Magento:
[code language=”bash”]
#!/bin/bash
ak [ ! -f ./app/etc/local.xml ]; potom
echo “– CHYBA”
echo “– Toto nevyzerá ako inštalácia Magento. Prosím, uistite sa”
echo “– že to spúšťate z hlavného koreňového adresára dokumentu Magento”
VÝCHOD
fi
ak [ `id -u` != 0 ]; potom
echo “– CHYBA”
echo “– Tento skript by mal byť spustený ako root, aby bolo vlastníctvo súboru”
echo “– zmeny je možné nastaviť správne”
VÝCHOD
fi
echo -n “Zadajte používateľa lokálneho účtu UNIX (používateľ ftp): “
čítať užívateľa
echo -n “Zadajte miestneho používateľa webového servera UNIX (zvyčajne ‘apache’): “
čítať webového používateľa
ak [ ! `id -u $user` ]; potom
echo “– CHYBA”
echo “– Žiadny takýto používateľ: $user”
VÝCHOD
fi
ak [ ! `id -u $webuser` ]; potom
echo “– CHYBA”
echo “– Žiadny takýto používateľ: $webuser”
VÝCHOD
fi
Nájsť . \-exec chown $user.$user {} \;
Nájsť . -type f \-exec chmod 644 {} \;
Nájsť . -type d \-exec chmod 711 {} \;
nájdi ./media -type d \-exec chmod 775 {} \;
nájdi ./var -type d \-exec chmod 775 {} \;
nájdi ./media -type f \-exec chmod 664 {} \;
nájdi ./var -type f \-exec chmod 664 {} \;
nájsť ./media \-exec chown $webuser.$user {} \;
nájdi ./var \-exec chown $webuser.$user {} \;
nájdi ./media -type d \-exec chmod u+s,g+s {} \;
nájdi ./var -type d \-exec chmod u+s,g+s {} \;
chmod 640 ./app/etc/*.xml
[/code]
To je všetko. Vyššie uvedené vám poskytne niektoré z najprísnejších povolení dostupných pri inštalácii Magento.

Čítať:  Tri nástroje, ktoré testujú témy WordPress pre kvalitu kódu a dostupnosť

Beží ako váš miestny používateľ (č. 2)

V zdieľaných prostrediach je táto metóda preferovaná vzhľadom na dodatočnú úroveň zabezpečenia poskytovanú Linuxom, ak sú oprávnenia správne nakonfigurované, ako to urobíme. Všetky naše zdieľané plány Magento SIP poskytujú toto prostredie a je preferované, pretože poskytuje izoláciu používateľských povolení, takže je možné použiť prísnejšie povolenia na vlastníctvo a súbory.
Toto sú kroky, ktoré robíme v obyčajnej angličtine, po ktorých nasledujú príkazy skriptu:

  1. Ak máte prístup na zmenu vlastníctva súborov a adresárov (zvyčajne to znamená, že máte prístup root), nastavte vlastníctvo používateľa a skupiny všetkých súborov v adresári Magento na vášho lokálneho používateľa. Vo vašom prostredí sa to už môže robiť a je to len preventívne opatrenie.
  2. [bash]nájdi \-exec chown youruser.youruser {} \;[/bash]

  3. Zmeňte povolenia systému Linux pre všetky súbory vo vašom základnom adresári Magento tak, aby ich mohol čítať a zapisovať ich vlastník (vy) a aby ich mohli čítať iba všetci ostatní. Toto má získať základnú líniu, kde samotný webový server môže čítať všetky súbory. Bude potrebovať prístup na čítanie, aby mohol poskytovať statický obsah, ako sú obrázky, CSS a súbory Javascript. Na rozdiel od vyššie uvedenej metódy upravíme povolenia skriptu tak, aby boli prísnejšie v kroku 4.
  4. [bash]find -type f \-exec chmod 644 {} \;[/bash]

  5. Zmeňte povolenia Linuxu pre všetky adresáre vo vašom základnom adresári Magento na zoznam, upraviteľný súbor a navigáciu pre vlastníka a jednoducho navigovateľný pre všetkých ostatných.
  6. [bash]find -type d \-exec chmod 711 {} \;[/bash]

  7. Znížte povolenia pre všetky skripty PHP, aby ich mohol čítať iba váš používateľ. Je to ideálne, pretože obsah skriptov by mal poznať iba váš používateľ.
  8. [bash]find -type f -name “*.php” \-exec chmod 600 {} \;[/bash]

  9. Nakoniec, a to je najkrajšia časť o používaní tejto metódy, zakážte všetok prístup k vašim lokálnym konfiguračným súborom pre Magento okrem vás. Keďže PHP skripty sú jediná vec, ktorá potrebuje čítať tieto súbory a PHP beží ako vy, môžete zakázať prístup všetkým ostatným, čo je veľmi pekné!
  10. [bash]chmod 600 [/bash]

Čítať:  Najlepšie platformy na správu objednávok Magento: Jediný sprievodca, ktorý potrebujete

Skript povolení miestneho používateľa Magento: –
[code language=”bash”]
#!/bin/bash
ak [ ! -f ./app/etc/local.xml ]; potom
echo “– CHYBA”
echo “– Toto nevyzerá ako inštalácia Magento. Prosím, uistite sa”
echo “– že to spúšťate z hlavného koreňového adresára dokumentu Magento”
VÝCHOD
fi
ak [ `id -u` != 0 ]; potom
echo “– CHYBA”
echo “– Tento skript by mal byť spustený ako root, aby bolo vlastníctvo súboru”
echo “– zmeny je možné nastaviť správne”
VÝCHOD
fi
echo -n “Zadajte používateľa UNIX, ktorý má spúšťať skripty Magento ako: “
čítať užívateľa
ak [ ! `id -u $user` ]; potom
echo “– CHYBA”
echo “– Žiadny takýto používateľ: $user”
VÝCHOD
fi
Nájsť . \-exec chown $user.$user {} \;
Nájsť . -type f \-exec chmod 644 {} \;
Nájsť . -type d \-exec chmod 711 {} \;
Nájsť . -type f -name “*.php” \-exec chmod 600 {} \;
chmod 600 ./app/etc/*.xml
[/code]

Jedna poznámka na záver

Videl som veľa pokynov pre webový softvér, v ktorých sa uvádza, že súbory musia mať oprávnenia 777 (oprávnenia na čítanie/zápis/spustenie pre všetkých). Pre niektorých to môže byť potrebné, ale pre súbory je to zriedka vhodné. Povolenia 666 (oprávnenia na čítanie/zápis pre všetkých) sú v týchto prípadoch primerané (ak nie je možné nastaviť prísnejšie povolenia). Povolenia 777 nastavujú aj spúšťací bit pre súbory, ktoré väčšina webových serverov vo väčšine prípadov nevyžaduje (a nemala by). Nastavenie povolení 666 jednoducho hovorí „čítať a zapisovať pre všetkých používateľov“, čo tiež nie je skvelé, ale je správnejšie.
Skript na obnovenie povolenia: (platí pre obe metódy uvedené vyššie)
[code language=”bash”]
#!/bin/bash
ak [ ! -f ./app/etc/local.xml ]; potom
echo “– CHYBA”
echo “– Toto nevyzerá ako inštalácia Magento. Prosím, uistite sa”
echo “– že to spúšťate z hlavného koreňového adresára dokumentu Magento”
VÝCHOD
fi
ak [ `id -u` != 0 ]; potom
echo “– CHYBA”
echo “– Tento skript by sa mal spustiť ako root, aby bolo vlastníctvo súboru”
echo “– zmeny je možné nastaviť správne”
VÝCHOD
fi
echo -n “Zadajte používateľa UNIX, ktorý má spúšťať skripty Magento ako: “
čítať užívateľa
ak [ ! `id -u $user` ]; potom
echo “– CHYBA”
echo “– Žiadny takýto používateľ: $user”
VÝCHOD
fi
Nájsť . \-exec chown $user.$user {} \;
Nájsť . -type f \-exec chmod 644 {} \;
Nájsť . -type d \-exec chmod 711 {} \;
Nájsť . -type f -name “*.php” \-exec chmod 600 {} \;
chmod 600 ./app/etc/*.xml
[/code]

Čítať:  40 najlepších príkladov webových stránok elektronického obchodu & tipy na rok 2024

Nové Publikácie:

ODPORÚČANIE