GNU/Linux >> Znalost Linux >  >> Linux

Apache nemůže přistupovat k souboru, zatímco má oprávnění?

Nechci umožnit ostatním přístup ke čtení, takže jsem přidal svého uživatele a apache uživatele do skupiny s názvem apachme a pak nastavte tuto skupinu na všechny soubory a složky, které chci apache mít přístup, včetně kořenového adresáře webové stránky. Poté jsem skupině a vlastníkovi udělil všechna oprávnění. Poté, co tento Apache stále nemůže přistupovat k souborům, aniž by nastavil oprávnění ke čtení povolit vše (rwxrwxr--(0774) ).

Složka, která obsahuje soubor indexu, je vlastněna apache se skupinou apachme a oprávnění rwxrwxr-x(0775)

s tímto dostávám chybu 500 a měním ji na 0774 nechá to běžet dobře

Ty slouží pouze k potvrzení, pod jakým uživatelem apache běží a že byl přidán do skupiny.

Přijatá odpověď:

Z bezpečnostního hlediska není opravdu dobrý nápad nastavovat webové stránky se stejným uživatelem Apache. Uživatel Apache by měl být schopen číst webové stránky, ale ne na ně psát.

Jako takové je ve standardní konfiguraci normální, že webové struktury jsou čitelné pro všechny, a když je potřeba zapisovat, normálně do nich může zapisovat uživatel Apache, což je bezpečnostní noční můra.

Jednou ze strategií, jak se tomu vyhnout, je instalace/použití mod_ruid2. https://github.com/mind04/mod-ruid2

Pokud jde o Debian, stačí udělat:

apt-get install libapache2-mod-ruid2

Upozorňujeme, že výchozí uživatel Apache se liší podle distribuce. V Debianu je to www-data, v RH/CentOS je to apache a v SuSE wwwrun. Od této chvíle jej budu označovat jako výchozího uživatele Apache.

Pokud ve vhost nedefinujete žádné direktivy, bude se chovat tradičním způsobem; jinak se chování změní.

Myšlenka spočívá v tom, že ve vhostu běží proces s uživatelem, který má práva k vhost, a jako takové budou mít soubory toto vlastnictví, a jak si přejete, ostatní uživatelé je nebudou moci číst. Normálně definujete uživatele pro vhost.

V direktivách Virtualhost nebo Directory ve vhost definujete uživatele a skupinu, kteří budou pro tento adresář aktivní. User:usergroup je to, co budou efektivní oprávnění, která bude Apache používat při přístupu k virtuálnímu hostiteli/adresáři, a jako takový bude moci každý uživatel, který patří do této skupiny, zapisovat/vidět adresáře.

    <Directory "/vhostdir/">
            RMode config
            RUidGid user usergroup

    ....

Při psaní adresářů lze nyní soubory vytvářet jako 660 s vlastnictvím uživatel:skupina uživatelů, pokud jsou spravovány skupinou uživatelů. Podobně mohou být soubory vytvořeny také jiným uživatelem s oprávněním ke čtení pro svět; nicméně pro zápis to nebude výchozí uživatel Apache, ale tento jiný uživatel.

Výhody mod_ruid2 jsou pak:

  • v prostředí virtuálního hostingu uživatelé nemohou číst soubory ostatních uživatelů;
  • v jednom uživateli můžete stále vytvářet soubory jako další uživatel a ani výchozí uživatel Apache, ani uživatel ruid2 je nebudou moci přepsat
  • Důležitější je, že zapsané soubory se nyní budou provádět s uživatelem ruid2 a již ne globálně s výchozím uživatelem Apache.
Související:Centos – Jak zmenšit kořenový souborový systém bez spouštění livecd?

Ze stránky github:

ABOUT mod_ruid2 je modul suexec pro Apache 2.0, 2.2 a 2.4, založený
na mod_ruid a mod_suid2

-běží pouze na Linuxu, protože pouze linuxové jádro implementovalo požadované schopnosti procesu.
-má lepší výkon než mod_suid2, protože nepotřebuje zabíjet httpd děti po jednom požadavku. využívá schopnosti jádra
a po obdržení nového požadavku suid znovu.
-jsou zde určité bezpečnostní problémy, například pokud útočník úspěšně zneužije proces httpd, může nastavit efektivní schopnosti a
setuid na root. doporučuji použít nějakou bezpečnostní záplatu v jádře
(grsec), nebo tak něco..

-existují dva hlavní provozní režimy:stat a config
1. config je výchozí, musíte definovat uid a gid. Pokud není definováno [ug]id, použije se výchozí uživatel a skupina.

  1. stat httpd setuid a setgid na uid a gid požadovaného souboru(script)/adresáře to je dobré, pokud používáte mod_vhost_alias
    pro virtuální hosting

INSTALOVAT
1. stáhněte a nainstalujte nejnovější libcap odtud
2. spusťte /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c
3. nakonfigurujte httpd.conf
4. restartujte apache

MOŽNOSTI KONFIGURACE:RMode config|stat (výchozí je config) RUidGid
user|#uid group|#gid – když je RMode config, nastavte toto uid a gid

RMinUidGid user|#uid group|#gid – když je uid/gid nastaveno na výchozí uid/gid RDefaultUidGid user|#uid group|#gid

RGroups group1 group2 – další skupiny nastavené pomocí setgroups @none –
vymazat všechny dříve definované skupiny.

RDocumentChrRoot – Nastaví chroot adresář a kořen dokumentu uvnitř

PŘÍKLAD:

<VirtualHost example.com>    
ServerAdmin [email protected]    
RDocumentChRoot /home /example.com/public_html    
ServerName     example.com    
ServerAlias    www.example.com    
RMode          config     # unnecessary since config is the default    
RUidGid        user1 group1    
RGroups        apachetmp

<Directory /home/example.com/public_html/dir>
   RMode stat    </Directory>

<Directory /home/example.com/public_html/dir/test>
   RMode config
   RUidGid user2 group2
   RGroups groups1    </Directory>

<Directory /home/example.com/public_html/dir/test/123>
   RUidGid user3 group3    </Directory>

<Location /yustadir>
   RMode config
   RUidGid user4 user4
   RGroups groups4    </Location>


Linux
  1. Linux File Access Monitoring?

  2. Jak optimalizovat ukládání statických souborů Apache do mezipaměti na Ubuntu 18.04

  3. Udělit uživateli přístup Sudo (přidat do souboru Sudoers nebo skupiny Wheel)

  1. Jak auditovat přístup k souborům v systému Linux

  2. Spuštění Apache jako jiný uživatel

  3. osvědčený postup pro přístupová oprávnění uživatelům pro apache tomcat

  1. [CentOS 7 Apache]:Oprávnění odepřeno:oprávnění k souboru zakazují přístup k serveru

  2. oprávnění odepřeno pro soubor autorizovaný_klíč

  3. Jak zablokovat přístup k souboru, aby nebyl obsluhován službou Tomcat?