Travando Msn por horario usando iptables

Publicado por Luiz Felipe Grillo em 27/04/2006

[ Hits: 20.750 ]

 


Travando Msn por horario usando iptables



Depois de alguma batalha, consegui travar o MSN para algumas máquinas, e ainda por cima por horário, só usando o IPTables. Segue o que fiz:

Criei um arquivo maquinas.txt, contendo os IP's que eu queria travar. Exemplo:

192.168.1.12
192.168.1.15
192.168.1.20

Daí criei um script chamado travarMsn.sh contendo o seguinte:

#!/bin/bash
case "$1" in
    start)
    for i in $(cat /root/maquinas.txt)
    do
        iptables -A FORWARD -p tcp -s $i -d 0/0 --dport 1863 -j DROP
        iptables -A FORWARD -p udp -s $i -d 0/0 --dport 1863 -j DROP
        iptables -A FORWARD -s $i -d loginnet.passport.com -j DROP
        iptables -A FORWARD -s $i -m string --string "msn" -j DROP
        iptables -A FORWARD -s $i -m string --string "Msn" -j DROP
        iptables -A FORWARD -s $i -m string --string "MSN" -j DROP
        echo "$i travada para msn."
        done
        ;;
    stop)
    for i in $(cat /root/maquinas.txt)
    do
        echo -n "Liberando msn..."
        iptables -D FORWARD -p tcp -s $i -d 0/0 --dport 1863 -j DROP
        iptables -D FORWARD -p udp -s $i -d 0/0 --dport 1863 -j DROP
        iptables -D FORWARD -s $i -d loginnet.passport.com -j DROP
        iptables -D FORWARD -s $i -m string --string "msn" -j DROP
        iptables -D FORWARD -s $i -m string --string "Msn" -j DROP
        iptables -D FORWARD -s $i -m string --string "MSN" -j DROP
        echo "feito."
        done
        ;;
esac

Como pode-se perceber, basta dar o comando:

# travarMsn.sh start

Para que as máquinas especificadas parem de acessar o MSN. Caso queira liberar o acesso, basta dar 'stop' no lugar de 'start'.

Bom, agora só falta adicionar no horário desejado, usando o cron:

# crontab -e

Dentro do arquivo do cron digite:

#Travar as dez da noite, liberar as sete da manhã
#m h dom mon dow command

00 22 * * * /root/travarMsn.sh start
00 07 * * * /root/travarMsn.sh stop

Facinho né?

[]'s à comunidade!

Outras dicas deste autor

Virtualização com KVM no Red Hat

Configurar fontes MS True Type no Linux

Fedora Core 6 com suporte a MP3 no XMMS

Listar o modelo e o serial number da máquina no Linux

Leitura recomendada

Liberar Panda Cloud no Squid

Firewall (Iptables + Squid) no Debian Squeeze

Instalação de Módulo de Segurança para Caixa e BB no Slackware Current - Warsaw

Cartilha de segurança

Recuperando a senha de root

  

Comentários
[1] Comentário enviado por zorzeto em 27/04/2006 - 14:14h

excelente artigo...gostaria de saber se da pra eu boquear alguns usuarios especificos...ja me disseram pra usar o tal do octopus(IM Config) mas falta verba pra adquiri-lo..alias..naum bloquear usuarios especificos..mas sim ...liberar usuarios especificos..e bloquear todo o resto...

[2] Comentário enviado por quig0n em 28/04/2006 - 09:26h

claro... trave todos, usando:
iptables -A FORWARD -p tcp -s $Endereco_Rede_Local -d 0/0 --dport 1863 -j DROP
Por ex:
iptables -A FORWARD -p tcp -s 192.168.1.0/24 -d 0/0 --dport 1863 -j DROP

e depois ir fazendo a mesma regra para os ips q desejar, ou colocá-los num arquivo como mencionado na dica.
Abraços

[3] Comentário enviado por zorzeto em 28/04/2006 - 09:56h

mas como eu faria para saber os ips dos contatos...sem ter q perguntar aos usuarios???existe alguma maneira de descobrir isso pelo linux???

[4] Comentário enviado por astrolabio em 17/05/2006 - 23:13h

boa noite fiz do jeito que vc falou porem el não esta rodando pois o da falha de segmentação como corrigir isso

[5] Comentário enviado por astrolabio em 17/05/2006 - 23:15h

zorzeto para vc descobrir o ip dos seus usuarios basta vc ver pel tail -f /var/log/squid/access.log, depois vc pega os ips que vc quer liberar ou bloquear e realiza do jeito que vc quer nesse caso é se tiver com squid isntalado.

[6] Comentário enviado por quig0n em 18/05/2006 - 10:27h

Retirem as linhas que contem a chamada ao modulo 'string',
para ficar assim:

#!/bin/bash
case "$1" in
start)
for i in $(cat /root/maquinas.txt)
do
iptables -A FORWARD -p tcp -s $i -d 0/0 --dport 1863 -j DROP
iptables -A FORWARD -p udp -s $i -d 0/0 --dport 1863 -j DROP
iptables -A FORWARD -s $i -d loginnet.passport.com -j DROP
echo "$i travada para msn."
done
;;
stop)
for i in $(cat /root/maquinas.txt)
do
echo -n "Liberando msn..."
iptables -D FORWARD -p tcp -s $i -d 0/0 --dport 1863 -j DROP
iptables -D FORWARD -p udp -s $i -d 0/0 --dport 1863 -j DROP
iptables -D FORWARD -s $i -d loginnet.passport.com -j DROP
echo "feito."
done
;;
esac

deem permissao de execucao, utilizando o root (chmod +x nome_do_arquivo.sh)

para inserir a tarefa no crontab, para ser executada pelo root, entre como root e digite crontab -e. Edite os horarios desejados, conforme citado na dica.
abraços

[7] Comentário enviado por alvarojmi em 21/06/2006 - 14:00h

aaa

[8] Comentário enviado por alvarojmi em 21/06/2006 - 16:53h

Primeiramente quero parabenizar pelo artigo, graças a esse tipo de iniciativa que conseguimos retirar duvidas da comunidade e ampliar nosso conhecimento.
Mas estou esbarrando em um probleminha, não sei onde colocar os arquivos TravarMsn.sh e maquinas.txt, eu entendi pelo script que os arquivos ficavam em root/maquinas.txt e bin/bash, mas no bash não consegui entrar.
Será que essa dica não é valida para o Slackeware

[9] Comentário enviado por tallor em 14/07/2006 - 16:28h

O problema é que o MSN ainda continua conectando...

[10] Comentário enviado por rodrigom em 01/11/2006 - 09:39h

Amigo, nao estou conseguindo fazer com q esse script pare o msn, talvez eu esteja fazendo algo errado, se puder me dar uma ajuda...
Minha duvida é a seguinte, eu preciso especificar o endereço da maquina q quero travar o msn ai no script ou so no arquivo "maquinas.txt", e em qual das linhas ? como ficaria para travar a maquinha 10.0.0.3 por ex ?

Muito obrigado

[11] Comentário enviado por rodrigom em 02/11/2006 - 20:32h

Amigos, tem mais uma dica do meu amigo "hugoalvarez" q com ctza é util
* hugoalvarez usa Slackware
* hugoalvarez tem conceito: 5.7

Aqui também não funciona, mas o problema está nas regras de bloqueio do MSN e não no script, o script tá certinho mas essas regras dentro dele não bloqueiam direito o msn, ao dar um DROP nas portas dos MSN's mais novos como o Live ele foge por onde conseguir, é só corrigir as regras de acordo com a necessidade da sua rede que você conseguirá funcionar o MSN com horário, idéia limpa e simples muito bom artigo ainda não tinha visto.

Flws

[12] Comentário enviado por alann em 04/06/2007 - 06:08h

gostaria de uma ajuda...meu msn foi "hackiado" vamos dizer por um lammer..na verdade ele apenas travou meu msn, nao podendo conectar mais, ele nao tem a senha nem nada apenas travou o msn eh como se algm ficase o dia inteiro chutando senhas ate o próprio msn travar para q nao seja roubado...mas se fosse ele voltaria em 24hrs..mas nesse caso pelo q fiquei sabendo ele usa um programa+dos q trava e nao entra de jeito nenhum nem no email...ele está travando mtaa gente e gostaria de saber se alguem pode ajudar! obrigado.

[13] Comentário enviado por l-x em 09/09/2008 - 14:55h

cara, no meu caso apresentou a seguinte mensagem:

lab:/# ./travarMsn.sh start
iptables v1.3.6: STRING match: You must specify `--algo'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.6: STRING match: You must specify `--algo'
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.6: STRING match: You must specify `--algo'
Try `iptables -h' or 'iptables --help' for more information.
172.16.21.108 travada para msn.


Copiei e colei o q vc passou. Será q fiz algo de errado?

[14] Comentário enviado por l-x em 09/09/2008 - 15:03h

ta acusando erro de parametro

[15] Comentário enviado por Rafael Guedes em 19/01/2009 - 10:49h

Dica 100% funcional... Obrigado amigo! O meu ficou assim l-x:

#!/bin/bash
case "$1" in
start)
for i in $(cat /etc/sem_msn.lst)
do
iptables -A FORWARD -p tcp -s $i -d 0/0 --dport 1863 -j DROP
iptables -A FORWARD -p udp -s $i -d 0/0 --dport 1863 -j DROP
iptables -A FORWARD -s $i -d loginnet.passport.com -j DROP
iptables -A FORWARD -s $i -m string --algo bm --string "msn" -j DROP
iptables -A FORWARD -s $i -m string --algo bm --string "Msn" -j DROP
iptables -A FORWARD -s $i -m string --algo bm --string "MSN" -j DROP
echo "$i travada para msn."
done
;;
stop)
for i in $(cat /etc/sem_msn.lst)
do
echo -n "Liberando msn..."
iptables -D FORWARD -p tcp -s $i -d 0/0 --dport 1863 -j DROP
iptables -D FORWARD -p udp -s $i -d 0/0 --dport 1863 -j DROP
iptables -D FORWARD -s $i -d loginnet.passport.com -j DROP
iptables -D FORWARD -s $i -m string --algo bm --string "msn" -j DROP
iptables -D FORWARD -s $i -m string --algo bm --string "Msn" -j DROP
iptables -D FORWARD -s $i -m string --algo bm --string "MSN" -j DROP
echo "feito."
done
;;
esac

[16] Comentário enviado por hgb7 em 12/02/2009 - 10:43h

Vlw Cara! :)

ah... precisei dar permissão ao .sh para funcionar ^^

e funciona, mas aparecem as seguintes mensagens:

Try `iptables -h' or 'iptables --help' for more information.
iptables v1.3.0: Couldn't load match `string':/lib/iptables/libipt_string.so: cannot open shared object file: No such file or directory

Try `iptables -h' or 'iptables --help' for more information.
192.168.1.148 travada para msn.

Tive de comentar estas linhas, para parar este erro, mas ainda sim a trava funciona:

#iptables -A FORWARD -s $i -m string --string "msn" -j DROP
#iptables -A FORWARD -s $i -m string --string "Msn" -j DROP
#iptables -A FORWARD -s $i -m string --string "MSN" -j DROP

Alguém sabe que consequencia terei em comentar estes e deixar habilitado só esta linha:

iptables -A FORWARD -s $i -d loginnet.passport.com -j DROP

Obrigado :)


[17] Comentário enviado por d2nemi em 25/04/2012 - 15:50h

iptables -A FORWARD -p tcp -s 192.168.254.0/24 -d 69.63.180.0/24 -m time --timestart 08:00 --timestop 12:00 -m multiport --sports 80,443 -j DROP

[18] Comentário enviado por d2nemi em 25/04/2012 - 15:54h

100% funcionando

iptables -A FORWARD -p tcp -s 192.168.2.0/24 -d 65.52.0.0/16 -m time --timestart 08:00 --timestop 18:00 -m multiport --sports 1863, 443 -j DROP
iptables -A FORWARD -p tcp -s 192.168.2.0/24 -d 65.52.0.0/14 -m time --timestart 08:00 --timestop 18:00 -m multiport --sports 1863, 443 -j DROP
iptables -A FORWARD -p tcp -s 192.168.2.0/24 -d 65.54.0.0/16 -m time --timestart 08:00 --timestop 18:00 -m multiport --sports 1863, 443 -j DROP
iptables -A FORWARD -p tcp -s 192.168.2.0/24 -d 65.55.0.0/16 -m time --timestart 08:00 --timestop 18:00 -m multiport --sports 1863, 443 -j DROP
iptables -A FORWARD -p tcp -s 192.168.2.0/24 -d 65.54.0.0/14 -m time --timestart 08:00 --timestop 18:00 -m multiport --sports 1863, 443 -j DROP
iptables -A FORWARD -p tcp -s 192.168.2.0/24 -d 79.141.216.0/24 -m time --timestart 08:00 --timestop 18:00 -m multiport --sports 1863, 443 -j DROP
iptables -A FORWARD -p tcp -s 192.168.2.0/24 -d 207.46.0.0/16 -m time --timestart 08:00 --timestop 18:00 -m multiport --sports 1863, 443 -j DROP










Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts