Leonardo Pinto <[EMAIL PROTECTED]> writes:

> Só me resta uma curiosidade: Como a turma Apache, Bind, etc consegue abrir
> portas privilegiadas com seus próprios usuários?! O nome desses usuários tem
> "carta marcada" no kernel?! Ou a execução se dá como root, porém a cada
> instrução é checado os privilégios nos respectivos acessos?

Eles não abrem com seus próprios usuários.  Tente iniciar o Apache como um
usuário sem privilégios e, a menos que haja algum SUID bit ajustado para o
binário, você vai ter um erro.

O que acontece em todo programa que é consciente da necessidade de segurança é
a baixa de privilégios.  Uma vez iniciado o servidor e conectada a porta
privilegiada, iniciam-se processos com privilégios reduzidos que farão todo o
serviço. 

Isso é extremamente comum.  

De qualquer maneira, há a manutenção de um processo com permissões de
superusuário que será capaz de criar novos processos sob IDs distintos.  Como
você mesmo citou o Apache, eis o comportamento dele:

11:52 strongwill:~ # ps aux | grep htt
root     24466  0.0  0.5  51188  2620 ?        Ss   Jun17   0:00 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   24467  0.0  0.4  55320  2464 ?        S    Jun17   0:05 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   24468  0.0  1.1  62188  6180 ?        S    Jun17   0:08 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   24469  0.0  1.1  55580  5844 ?        S    Jun17   0:04 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   24470  0.0  0.6  62132  3372 ?        S    Jun17   0:12 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   24471  0.0  0.6  61008  3248 ?        S    Jun17   0:07 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   24477  0.0  0.5  56100  2948 ?        S    Jun17   0:05 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   24479  0.0  0.8  57196  4348 ?        S    Jun17   0:06 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   25061  0.0  0.5  62144  2876 ?        S    Jun17   0:10 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   25266  0.0  0.4  55432  2256 ?        S    Jun17   0:10 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
wwwrun   27193  0.0  1.3  62932  6732 ?        S    Jun17   0:08 
/usr/sbin/httpd2-prefork -f /etc/apache2/httpd.conf -DSSL
11:52 strongwill:~ # 

Verificar os privilégios a cada instrução é algo que não traria benefício
nenhum e adicionaria uma carga extra, enquanto que baixar os privilégios
sempre já faria com que as instruções rodassem sob uma menor autoridade no
sistema. 

Há MUITA documentação para programar servidores de forma segura.  Há MUITA
coisa errada também...  Mas creio que possas te basear em programas
notadamente seguros para o teu projeto e para entender o código.  Para um
programa que roda sob várias identidades distintas e que permite a
configuração de novos processos sugiro que dês uma olhada no Postfix.  O
Wietse Venema é um cara bastante preocupado com segurança e que possui uma boa
experiência em projeto de software.



-- 
Jorge Godoy      <[EMAIL PROTECTED]>
---------------------------------------------------------------------------
Esta lista é patrocinada pela Conectiva S.A. Visite http://www.conectiva.com.br

Arquivo: http://bazar2.conectiva.com.br/mailman/listinfo/linux-br
Regras de utilização da lista: http://linux-br.conectiva.com.br
FAQ: http://www.zago.eti.br/menu.html

Responder a