Usando o SELinux para forçar o Linux a permitir que programas se liguem a números de portas menores que 1024

2

Existe uma maneira no SELinux de forçar o linux a permitir que um programa seja ligado a um número de porta menor que 1024?

    
por PHGamer 09.03.2011 / 20:55

4 respostas

2

Supondo que você tenha um módulo de política adequado para o aplicativo (vamos chamar seu aplicativo "foo"), você pode fazer uma de duas coisas. Você pode definir um tipo de foo_port_t na política, permitir que você tenha acesso a aplicativos 4, assim:

allow foo_t foo_port_t:tcp_socket name_bind;

e o uso de algo assim para rotular a porta real

semanage port -a -t foo_port_t -p tcp 803

Isto irá reivindicar a porta TCP 803 para sua aplicação. A maioria das portas abaixo de 1023 já tem rótulos e você não pode rotular uma porta, arquivo, qualquer que seja o tempo.

Então, opção dois: você pode permitir que seu aplicativo se vincule a uma porta que tenha um rótulo diferente, colocando linhas como essa no seu módulo de política:

require { 
    type http_port_t;
}

allow foo_t http_port_t:tcp_socket name_bind;

Isso permitiria que o aplicativo fosse vinculado a qualquer porta que tivesse http_port_t (significando 80, 443, 488, 8008, 8009 e 8443). Você pode encontrar o rótulo que a porta (803 neste exemplo) você deseja usar, tem por este comando:

semanage port -l | grep 803
    
por 07.04.2011 / 23:09
1

Execute como root ou sudo . Você só deve usar root para testes, nunca em produção. O kernel não permitirá que você abra uma porta abaixo de 1024 (portas conhecidas) sem essas permissões. Não tem nada a ver com o SELinux, mas com o kernel.

    
por 09.03.2011 / 21:17
0

Não é o SELinux que não permite que o seu programa seja ligado em portas privilegiadas, é o kernel do Linux. Você pode fazer um encaminhamento de porta da porta desejada para uma porta sem privilégios e executar o aplicativo em uma porta sem privilégios. Isso é seguro e permitido pelo SELinux.

    
por 09.03.2011 / 21:24
-2

Em nossa loja e experiência, descobrimos que é melhor desativar o SELinux. Eu sei que algumas pessoas acharam isso útil, mas nós não o fizemos.

Desativamos tudo em / etc / sysconfig / selinux (ou / etc / selinux / config) com SELINUX = desativado

Os problemas que tivemos em relação ao SELinux foram tão numerosos e causaram tantas horas extras que simplesmente não vale a pena.

    
por 09.03.2011 / 21:18