Posso restringir um usuário específico a usar apenas o host local?

2

Eu tenho vários servidores NodeJS que são acessados por meio de um servidor Nginx. O Nginx faz o relay para os servidores NodeJS por meio do host local. Neste ponto, estou fazendo todo o trabalho, então sei que posso fazer o que precisa ser feito, mas no futuro gostaria que os usuários executassem seus próprios servidores.

O que eu preciso fazer é restringir qualquer usuário não-raiz a ter acesso somente ao host local. Posso fazer isso?

    
por Rama Schneider 18.09.2017 / 11:26

1 resposta

2

Você poderia filtrar o tráfego para seus usuários usando o módulo proprietário iptables permitindo apenas a interface de loopback:

# accept incoming packets to loopback device
iptables -A OUTPUT -m owner --uid $USER -o lo -j ACCEPT
# drop everything else
iptables -A OUTPUT -m owner --uid $USER -j DROP

Com as regras acima, o usuário ainda pode criar um processo de escuta em portas não restritas, mesmo que não possa responder a nenhuma mensagem recebida. Você também pode escrever as regras como uma lista branca para todo o sistema: primeiro aceite todo o tráfego bom e solte todo o resto.

Para filtrar o tráfego de entrada, o módulo proprietário não pode ser usado (veja a página man ). Você pode configurar a cadeia de entrada para permitir o tráfego estabelecido e descartar outro tráfego de entrada não permitido explicitamente.

# change default action to drop
iptables -P INPUT DROP
# allow established connections (replies)
iptables -A INPUT -m state --state ESTABLISHED -j ACCEPT

Se você estiver executando serviços que escutam porta (s) de rede, precisará adicionar regras respectivas para permitir que eles recebam tráfego.

    
por 18.09.2017 / 11:36