Usuário regular usando portas abaixo de 1024 [duplicado]

4

Existe uma maneira no Linux (CentOS, se isso é importante) para permitir que usuários regulares usem portas abaixo de 1024? (escutar soquete TCP nessa porta)

Atualmente entendo que apenas o root tem privilégios para usar essas portas.

    
por wzzrd 13.11.2009 / 12:05

6 respostas

8

Não no CentOS 3/4/5 (Falta de recursos do sistema de arquivos):

Você pode definir o recurso CAP_NET_BIND_SERVICE para o programa que precisa abrir essa porta. O Root irá configurar o recurso no executável, então qualquer usuário poderá executar esse executável, ele poderá usar as portas < 1024.

Para definir o recurso no executável:

setcap cap_net_bind_service=+ep /path/to/program
    
por 13.11.2009 / 13:51
4

Você pode criar um wrapper que execute o SUID e elimine privilégios após abrir a porta.

    
por 13.11.2009 / 12:13
4

IIRC isso não é possível, ou se for não é recomendado por razões de segurança.

Mas se você quiser que os usuários possam ouvir em uma porta específica, você pode sempre usar um encaminhador TCP como rinetd ou regras iptables para redirecionar as conexões para aquela porta para que elas possam escutar e configurá-las para escute nessa porta mais alta.

Por exemplo, a linha

aa.bb.cc.dd    80      127.0.0.1   8000

na configuração de rinetd encaminhará as conexões para a porta 80 no endereço aa.bb.cc.dd para a porta 8000 localhost, à qual um usuário não privilegiado pode escutar. Uma regra equivalente do iptables seria algo como

/sbin/iptables -t nat -A PREROUTING -p tcp -d aa.bb.cc.dd --dport 80 -j DNAT --to 127.0.0.1:8000

De qualquer maneira, você tem um controle muito mais refinado do que permitir que qualquer usuário ouça em qualquer porta.

A abordagem iptables tem a vantagem de que o aplicativo de escuta verá o endereço IP do cliente que está chamando (com o método rinetd, todas as conexões serão vistas como provenientes do host local). O método iptables também permitiria o UDP e o TCP.

    
por 13.11.2009 / 12:24
1

authbind rocks.

O recurso

é ótimo, mas requer certas versões do kernel corretamente configuradas. alguns programas, como sun java, não com capabilieis. O authbind funciona em todas as versões do linux.

O authbind, no entanto, suporta apenas o IPv4.

    
por 10.09.2010 / 19:36
-1

São totalmente fora de contexto, ou estou faltando algo fundamental? link & link

    
por 10.09.2010 / 20:22
-2

link

Isso fará todo o trabalho para você.

    
por 13.11.2009 / 12:18