Bloqueio e desbloqueio automático, por restrições de tempo.

1. Bloqueio e desbloqueio automático, por restrições de tempo.

Ricardo Jurczyk Pinheiro
tenentblueberry

(usa Fedora)

Enviado em 04/04/2018 - 20:17h

Prezados,

Sou sysadmin de uma escola técnica, e temos mais de 250 desktops para um link de 10 Mbps, fora os acessos via wi-fi. Ou seja, pouco mais de 740 nós de rede diferentes. Não dá pra deixar aberto pra todo mundo, por inúmeros motivos. Além, trabalho com os usuários que tem tempo e vontade de ficar futucando e enchendo o saco do sysadmin: Adolescentes. Logo, Squid + SquidGuard + OpenDNS fazem minha alegria.

Eu criei um esquema pra bloqueio e liberação de acesso à Internet através de scripts em shell, que reescrevem o squid.conf e recarregam o Squid. Funciona muito bem, tirando os sites seguros, que não são filtrados pelo Squid - por enquanto, estou com um Squid compilado com suporte a HTTPS, preciso de tempo pra por em funcionamento.

Minha rede é toda instanciada: Endereço privado classe A, onde o 3o octeto marca a instância da rede. Logo, 10.0.0.0 é a sala da rede, 10.0.1.0 é o laboratório 1 e por aí vai. Tenho quase todos os campos preenchidos até o 10.0.48.0. A máscara é 255.255.192.0. Dessa forma posso cortar o acesso a certas instâncias e liberar para outras.

Meu firewall é um script que vem amadurecendo há anos, com acréscimos e modificações. No momento, consegui bloquear acesso à rede TOR, UltraSurf e barrar tentativas de ataque por força bruta vindos de vários países. As dicas do vivaolinux tem sido fundamentais (obrigado se você escreveu alguma q eu usei).

Com isso tudo, pensei em dar um passo extra, e fazer com que o script, que reescreve o squid.conf e o squidGuard.conf, também inserisse restrições de acesso a certas instancias. Ou seja, iptables -I INPUT/OUTPUT/FORWARD -s <instância da rede> -j DROP.

Sou meio tapado com iptables, e aí vem as perguntas:

1) Eu gostaria de garantir que a instância da rede barrada pelo DROP não conseguisse nem falar com o proxy. Fiquei na dúvida sobre qual chain usar. Acabei usando as 3 chains (INPUT, OUTPUT e FORWARD). É necessário?

2) No script que faz todo esse circo, eu inclui a seguinte regra:
for CHAIN in INPUT OUTPUT FORWARD; do
/usr/bin/sudo -u root iptables -I $CHAIN -i enp0s0f1 -s $LOCAL -j $REGRA > /dev/null 2>&1
done

Vamos a umas explicações...
- O script roda como um usuário não-privilegiado, logo coloquei ele no sudoers para poder fazer essas alterações.
- A variável CHAIN pega INPUT, OUTPUT e FORWARD. N sei se é necessário (pergunta 1).
- A variável LOCAL recebe a instância da rede (por exemplo, 10.0.14.0/24).
- A variável REGRA, o q fazer, se DROP ou ACCEPT.
- Redirecionei pra /dev/null pra poder evitar mensagens ecoando na tela. Eu obtenho mensagens como:
iptables: Bad rule (does a matching rule exist in that chain?). e iptables v1.4.21: Can't use -i with OUTPUT .

Já vi q uma delas eu tenho como corrigir, mas a outra n entendi direito.

3) Pensei em criar uma chain, chamada INSTANCIA, para colocar os bloqueios às instâncias lá. Aí, cada vez q eu liberava o acesso à instância, o script removia todas as regras da chain INSTANCIA e inseria regras de ACCEPT para todas as instâncias que deveriam estar liberadas. Quem n estivesse lá, era DROP.

Só q eu fiz isso tudo, e aí ele barra o acesso de todo mundo, inclusive da minha máquina (10.0.0.6, instância sala da rede). Alguma ideia?

Se alguém quiser mexer e dar uma força, posso fornecer os scripts, sem problema algum.

Obrigado e desculpa pelo testamento!

Abraço, Ricardo.


  


2. Re: Bloqueio e desbloqueio automático, por restrições de tempo.

Ricardo Jurczyk Pinheiro
tenentblueberry

(usa Fedora)

Enviado em 04/04/2018 - 20:18h

Qualquer sugestão é bem-vinda.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts