BEM VINDO AO BLOG DO MARCOS CARRARO CRIADOR DO "CARRARO DASHBOARD". MUITO MAIS QUE UM SIMPLES BLOG.

quinta-feira, 12 de março de 2015

iptables + módulo time + conexões estabelecidas + conntrack

Buenas,

Montei recentemente na empresa uma rede para os funcionários somente acessarem a internet nos intervalos, porém meu proxy não esta configurado para tratar com as interceptações https, como os acessos serão feitos por mobile wpad não funcionária como esperado, a solução seria fazer o redirecionamento por iptables no qual cai na falta da configuração do proxy.

Solução, fazer um forward da rede funcionários para a rede externa somente nos horários, show, rápido fácil e focado.

iptables -A FORWARD -s 192.168.20.0/255.255.255.0 -m time --timestart 00:00:00 --timestop 11:55:00 --weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat -j DROP

iptables -A FORWARD -s 192.168.20.0/255.255.255.0 -m time --timestart 21:59:00 --timestop 23:59:00 --weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat -j DROP

iptables -A FORWARD -s 192.168.20.0/255.255.255.0 -m time --timestart 12:55:00 --timestop 21:00:00 --weekdays Sun,Mon,Tue,Wed,Thu,Fri,Sat -j DROP

Ok, fiz o teste show, as conexões com estado "new" fora desse horário é dropada, porém se o usuário acessa as 12:54 a conexão dele passa de "new" para "established", com isso ele teria esse canal fechado até o término da conexão por uma das partes.

Ali começou o problema, pois eu tinha que garantir que a conexão seria morta neste horário, pois o bem o iptables faz um rastreamento das conexões chamdo de conntrack, logo já tinha uma solução, apagar as entradas da rede no conntrack, assim eu faria com que a conexão solicita-se novamente o registro para o acesso, e como iria bater com a regra pois a conexão seria "new" o pacote seria dropado, tá feita a solução.

Para isso nada melhor que a crontab e um script.

Na crontab coloco para rodar alguns minutos depois do tempo final do intervalo para garantir que ninguém vai ficar de bobeira.

Lista as entradas da rede funcionários, sem repetir
# conntrack -L conntrack |  awk '{print $5}' | grep src=192.168.20. | sed -e "s/src=//g" | sort | uniq

Apaga a entrada
# conntrack -D -s 192.168.20.88


#!/bin/bash
conntrack -L conntrack |  awk '{print $5}' | grep src=192.168.20. | sed -e "s/src=//g" | sort | uniq |
    while read ip; do
        conntrack -D -s $ip > /dev/null
done



Read More

Posts que a turma mais esta lendo...

Posts que a turma mais esta lendo...

Marcos Carraro