[FUG-BR] Segurança no Apache

Patrick Tracanelli eksffa em freebsdbrasil.com.br
Sexta Agosto 23 13:48:54 BRT 2013


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.
> -------------------------
> Histórico: http://www.fug.com.br/historico/html/freebsd/
> Sair da lista: https://www.fug.com.br/mailman/listinfo/freebsd



Mais detalhes sobre a lista de discussão freebsd