O Apache não pode acessar o arquivo enquanto tem permissão

3

Eu não quero permitir que outros acessem a leitura, por isso adicionei meu usuário e o usuário apache a um grupo chamado apachme e, em seguida, defino esse grupo para todos os arquivos e pastas desejados apache têm acesso a, incluindo a raiz da página da web. Eu dei ao grupo e ao proprietário todas as permissões. Depois disso, o apache ainda não poderá acessar os arquivos sem definir a permissão de leitura para permitir todos ( rwxrwxr--(0774) ).

Não tenho certeza se estou perdendo algo óbvio ou o quê. Algumas informações nas fotos abaixo ajudarão.

Eu não pude incluir uma imagem da pasta que contém o arquivo de índice, pertence a apache com o grupo apachme e as permissões rwxrwxr-x(0775)

comissoreceboumerro500,alterando-opara0774irápermitirqueelesejaexecutadocorretamente

Estes são apenas para confirmar em que usuário o apache estava sendo executado e que foi adicionado ao grupo.

    
por Craig Mosey 14.02.2016 / 02:34

1 resposta

4

Do ponto de vista da segurança, não é uma boa ideia configurar páginas da web com o mesmo usuário do Apache. O usuário do Apache deve ser capaz de ler as páginas da web, mas não de escrever para elas.

Como tal, na configuração padrão, é normal que as estruturas da web sejam legíveis por todos, e quando há necessidade de escrever, normalmente para ser gravável pelo usuário do Apache, o que é um pesadelo de segurança.

Uma das estratégias para evitar isso é instalar / usar mod_ruid2. link

Quanto ao Debian, é o suficiente para fazer:

apt-get install libapache2-mod-ruid2

Por favor, note que o usuário padrão do Apache varia com a distribuição. No Debian, é www-data, em RH / CentOS é apache e em SuSE, wwwrun. Eu vou me referir a ele de agora em diante como o usuário padrão do Apache.

Se você não definir nenhuma diretiva em um vhost, ela se comportará da maneira tradicional; caso contrário, o comportamento será alterado.

A idéia é ter um processo rodando no vhost com o usuário que tem direitos sobre o vhost e, como tal, os arquivos terão essa propriedade e, como você deseja, outros usuários não poderão ler eles. Normalmente você define um usuário por vhost.

Nas diretivas Virtualhost ou Directory em um vhost, você define o usuário e o grupo que estarão ativos para esse diretório. O usuário: usergroup é quais serão as permissões efetivas que o Apache usará ao acessar o host virtual / diretório, e como tal, qualquer usuário que pertença a esse grupo será capaz de escrever / ver os diretórios.

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

    ....

Assim, ao escrever os diretórios, agora os arquivos podem ser criados como 660 com a propriedade user: usergroup se eles forem gerenciados por um grupo de usuários. Da mesma forma, os arquivos também podem ser criados por outro usuário com permissões para ler para o mundo; no entanto, para escrever, não será o usuário padrão do Apache, mas sim esse outro usuário.

As vantagens do mod_ruid2 são:

  • em um ambiente de hospedagem de hospedagem virtual, os usuários não podem ler os arquivos de outros usuários;
  • em um único usuário, você ainda pode criar arquivos como outro usuário, e nem o usuário padrão do Apache nem o usuário do ruid2 poderão sobrescrevê-los
  • mais importante, os arquivos gravados agora serão feitos com o usuário ruid2 e não mais globalmente com o usuário padrão do Apache.

Da página do github:

ABOUT mod_ruid2 is a suexec module for apache 2.0, 2.2 and 2.4, based on mod_ruid and mod_suid2

-it runs only on Linux because only the Linux kernel has implemented the required process capabilities. -it has better performance than mod_suid2 because it doesn't need to kill httpd children after one request. it makes use of kernel capabilites and after receiving a new request suids again. -there are some security issues, for instance if attacker successfully exploits the httpd process, he can set effective capabilities and setuid to root. i recommend to use some security patch in kernel (grsec), or something..

-there are two main operation modes: stat and config 1. config is default, you must define uid and gid. If no [ug]id is defined the default user and group are used.

  1. stat httpd setuid and setgid to uid and gid of requested filename(script)/directory this is good if you use mod_vhost_alias for virtual hosting

INSTALL 1. download and install latest libcap from here 2. run /apachedir/bin/apxs -a -i -l cap -c mod_ruid2.c 3. configure httpd.conf 4. restart apache

CONFIGURE OPTIONS: RMode config|stat (default is config) RUidGid user|#uid group|#gid - when RMode is config, set to this uid and gid

RMinUidGid user|#uid group|#gid - when uid/gid is < than min uid/gid set to default uid/gid RDefaultUidGid user|#uid group|#gid

RGroups group1 group2 - additional groups set via setgroups @none - clear all previous defined groups.

RDocumentChrRoot - Set chroot directory and the document root inside

EXAMPLE:

<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>

    
por 14.02.2016 / 03:08