Travando Msn por horario usando iptables

Publicado por Luiz Felipe Grillo em 27/04/2006

[ Hits: 20.972 ]

 


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

Fedora Core 6 com suporte a MP3 no XMMS

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

Virtualização com KVM no Red Hat

Configurar fontes MS True Type no Linux

Leitura recomendada

Evitar boot sem senha no modo single

Testando seu firewall com scan remoto via internet

Navegar como se estivesse em outro país no Ubuntu e Linux Mint

Criptografia no Slackware com "truecrypt"

Desabilitando respostas a comandos ping

  

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