Como você faz o firewall no Linux para que contas sem privilégios possam acessar apenas a web?

3

Eu tenho um servidor Debian que permite que os usuários façam o login. Eu não me importo que eles acessem a web ou façam o download de arquivos, mas eu quero restringir o acesso à internet a partir daquela máquina. Como devo configurar meu IPTABLES ou outro firewall para facilitar o trabalho?

    
por jes5199 01.06.2009 / 02:39

6 respostas

15

Isso é realmente extremamente complicado do ponto de vista técnico (a camada de rede geralmente não conhece nada sobre os usuários; não há campo "usuário" em um pacote de rede).

Mas, o Linux, sendo totalmente incrível, tem uma solução para você. Você precisará do módulo "owner" do iptables e seguirá as regras deste:

iptables -A OUTPUT -o eth0 -p tcp --dport 80 -j ACCEPT
iptables -A OUTPUT -o eth0 -m owner --uid-owner 500 -j DROP

Onde "500" é o UID do usuário que você deseja impedir de atingir a rede. A primeira regra permite apenas todo o tráfego de saída da porta 80.

Você provavelmente precisará carregar o módulo proprietário antes que isso funcione:

modprobe ipt_owner

Então, adicione isso ao seu arquivo rc.local ou similar. Isso pressupõe, obviamente, que o seu sistema tenha este módulo instalado. Eu não sei o que o pacote fornece no Debian. Pode estar no pacote padrão do iptables.

    
por 01.06.2009 / 03:14
5

Outra opção é configurar um servidor proxy (Squid) em algum lugar que permita acesso anônimo geral à Internet, mas exija um login para fazer qualquer outra coisa. Em seguida, bloqueie o acesso do seu servidor no firewall, mas permita que o proxy passe.

Se você tiver apenas uma máquina, eu faria eco à sugestão de swelljoe. Ou combine as duas ideias e torne tudo mais granular se você preferir:)

    
por 01.06.2009 / 03:38
0

Eu suspeitaria que você simplesmente bloquearia todas as portas de entrada e saída para o host, exceto as portas 22 (ssh) e 80 (web). Se você estiver usando este computador para si mesmo, além de ajudar alguns amigos a aprender, e precisar de coisas como e-mail, mensagens instantâneas, etc., eu recomendaria criar um grupo especial para eles que só pode acessar uma lista específica de aplicativos. Eu acho que você pode precisar especificar se este é um servidor autônomo ou uma estação de trabalho para você + um servidor para eles.

    
por 01.06.2009 / 02:48
0

Você pode usar uma política do SELinux para isso, mas infelizmente é um pouco mais complicado configurá-la do que a solução iptables.

    
por 01.06.2009 / 03:54
0

Eu fiz isso uma vez usando uma combinação de squid e "name" - um antigo serviço linux / unix que fornece o nome de usuário atual. De um modo geral, o nome é realmente uma idéia muito ruim (como não criptografado e você pode modificá-lo muito fácil; ele é usado por irc btw), mas para um conjunto conhecido de máquinas, funciona muito bem

    
por 02.08.2009 / 17:48
0

Você está procurando por um proxy, junto com as regras do iptables. Use iptables para restringir o acesso à porta e redirecionar o tráfego para o proxy. No proxy, você filtra o conteúdo que deseja ou não deseja passar. (O módulo proprietário funciona apenas para pacotes criados no próprio firewall, não nos pacotes provenientes da sua rede).

    
por 04.08.2009 / 04:00