[FUG-BR] Segurança no Apache

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Sexta Agosto 23 17:06:48 BRT 2013



Em 23/08/2013, às 14:28, Leonardo Augusto <lalinden em gmail.com> escreveu:

> 2013/8/23 Nilton OS <jniltinho em gmail.com>:
>> Em 23 de agosto de 2013 13:48, Patrick Tracanelli <
>> eksffa em freebsdbrasil.com.br> escreveu:
>> 
>>> O apache não roda como root. Ele roda como usuario e grupo declarados no
>>> httpd.conf (por default www:www)
>>> 
>>> No entanto ele INICIA como root pra fazer bind na tcp/80 e depois faz
>>> setuid pro usuário configurado (por default www:www)
>>> 
>>> Se voce quer um nível de segurança que impeça até mesmo esse binding como
>>> root você tem que esquecer do Unix como você está acostumado, esquecer do
>>> controle de acesso DAC que é o default do POSIX e assumir um comportamento
>>> Trusted (TrustedBSD).
>>> 
>>> Nesse caso você precisa usar o MAC Portacl (kldload mac_portacl), colocar
>>> no MAC todas as portas do sistema como portas privilegiadas (seria o ideal
>>> mas ao menos da 0-1023), e no DAC dizer que nenhuma porta é privilegiada
>>> (modificando o portrange high e jogando pra 0). Nesse momento você esqueceu
>>> o controle de acesso DAC e passou a usar o MAC
>>> 
>>> Ai voce vai no MAC e diz que o usuário www pode fazer binding no socket 80
>>> do protocolo tcp. Por exemplo:
>>> 
>>> sysctl -w security.mac.portacl.rules=uid:80:tcp:80
>>> 
>>> Pronto.
>>> 
>>> Se você quiser pode até fazer o Root ter que pedir benção pro kernel antes
>>> de ouvir em portas baixas (suser_exempt=0), mas por padrão apenas o acima
>>> já atende.
>>> 
>>> Apesar de eu acreditar que você não queira isso e ser algo mais simples,
>>> como seu apache por algum motivo estranho estar rodando como UID 0, caso em
>>> que voce avalia o motivo.
>>> 
>>> Por último e fica a dica, mais importante que com que usuário o Apache
>>> roda, é você prover isolamento de credenciais se seu ambiente for
>>> configurado.
>>> 
>>> Com o MPM ITK no Apache você pode facilmente fazer cada VirtualHost rodar
>>> com um usuário diferente; pode fazer cada contexto Directory executar com
>>> uma permissão diferente. Se seu ambiente for shared avalie isso antes de
>>> pensar em ir pra MAC pois é um tremendo diferencial pra segurança. E ai
>>> você pode ir pra outros componentes (MLS/LOMAC/BIBA/BSD_EXTENDED) pra
>>> apoiar por MAC as credenciais atribuídas via DAC no sujeito rodando o
>>> processo.
>>> 
>>> Abraços.
>>> 
>>> Em 23/08/2013, às 13:12, Leonardo de Souza <freebsd.leonardo em gmail.com>
>>> escreveu:
>>> 
>>>> Tem alguma maneira de fazer o apache iniciar automaticamente como usuario
>>>> comum pelo /rc.conf. Ou seja para que eu tenha mais segurança em meu
>>>> servidor apache não quero que ele rode como root.
>>>> -------------------------
>>> 
>>> 
>> 
>> 
>> Patrick Tracanelli, deu uma aula para esse humilde aprendiz.
>> 
>> Obrigado
>> 
>> --
>> ..............................................................................
>> *Nilton OS* | linuxpro.com.br <http://www.linuxpro.com.br>
>> 
>> *"Não são os grandes homens que transformam o mundo, mas sim os fracos nas
>> mãos de um grande Deus."*
> 
> Complicou tudo isso sim... ehehe
> <fun>
> MAC = aquele computador da apple ?
> DAC = Digital analog converter ?
> </fun>

Po foi o melhor que deu pra responder hehehe :(

Como eu não sei se a dúvida é o simples (www:www), trusted ou outra coisa, tentei responder os 3, o simples, o trusted e o outro (isolamento) hehehe. Provavelmente é o primeiro caso ne? :(

--
Patrick Tracanelli

FreeBSD Brasil LTDA.
Tel.: (31) 3516-0800
316601 em sip.freebsdbrasil.com.br
http://www.freebsdbrasil.com.br
"Long live Hanin Elias, Kim Deal!"



Mais detalhes sobre a lista de discussão freebsd