Uma pergunta que muitas vezes me fazem é: Usando o transporte MSN no Openfire como posso fazer para liberar o usuário X para falar com somente alguns contatos do MSN, já que o padrão é que ele possa falar com todos ?

Até hoje eu ainda não tinha respostas para essa pergunta, apesar de ter uma noção de como fazer, principalmente depois que me indicaram o plugin Packet Filter. Só que hoje resolvi testar o mesmo e encontrei uma forma de resolver isso.

O que faz o plugin Packet Filter ?
O Packet Filter é uma espécie de “iptables” para Openfire. Ele permite que você aceite, rejeite ou descarte vários tipos de pacotes XMPP baseado em regras que você pode estabelecer.

É mais ou menos assim: você pode dizer que o usuário fulano não pode enviar nem receber mensagens do usuário ciclano, ou que o grupo contabilidade pode mandar e receber mensagens do grupo diretoria, mas não do grupo rh, e por aí vai.

Vendo essas features imaginei que fosse de alguma forma possível usar o recurso para filtrar os contatos MSN (ou ICQ, ou AIM, ou o protocolo que for).

Bem, descobri que É POSSÍVEL sim, mas que é um trabalho árduo pelo menos da forma que estou implementando as regras. A forma de implementação padrão obriga que os filtros sejam feitos conta a conta e para que o mesmo funcione da forma que eu implementei você tem de liberar também um a um os contatos para qual seu usuário pode enviar/receber as mensagens (inclusive os contatos Jabber do servidor local). Ou seja, numa instalação com muitos usuários usando o transporte MSN isso pode ser inviável de gerenciar/administrar.

Mas porque isso é trabalhoso ?
Porque na realidade o packet filter não foi feito para trabalhar com os transportes, mas sim com contas locais. Mas já que no Openfire, todos os contatos de um transporte tem um JID válido você pode usar o plugin para isso também.

Você pode explicar isso melhor ?
Cada usuário do Openfire ganha um JID, que é a identificação do usuário para o servidor. No meu servidor de testes, chamado openfire.inet, meu usuário marcelo responde pelo JID marcelo@openfire.inet.

Agora vejamos o caso do transporte MSN: ao vincular minha conta local Jabber (marcelo@openfire.inet) a uma conta MSN usando o plugin Gateway IM, todos meus contatos MSN ganharam também um JID válido. Então, por exemplo, o meu contato marceloterres@dominio.com passou a ter um JID local chamado marceloterres40dominio.com@msn.openfire.inet.

Agora que ele tem um JID, eu posso usá-lo para criar regras no Packet Filter. 🙂

Mas de que forma o packet filter será eficaz ? Como posso implementá-lo ?
A melhor forma que encontrei até o momento é a seguinte:

  • em primeiro lugar você deve liberar todas os contatos que você quer permitir para o usuário (inclusive os contatos do servidor local e não só os do transporte MSN). A liberação é uma via de mão dupla, pois você precisa liberar o envio e precisa também liberar o recebimento de mensagens para cada contato do usuário (a não ser é claro que você queira que algum contato do usuário só possa mandar mensagens e não receber e vice versa).
  • em segundo lugar você deve criar 2 regras dizendo que os pacotes de mensagens de quaisquer outros usuários serão rejeitados (ATENÇÃO: para essas regras use só os pacotes de mensagens, porque se você usar os pacotes do tipo any (quaisquer) o usuário não conseguirá nem logar no servidor).
IMPORTANTE: O packet filter, assim como o Iptables, usa precedência para as regras, por isso a primeira regra que fechar é a que vale. Dessa forma, coloque antes as regras de liberação e depois as regras de bloqueio.

Tem um exemplo prático ?
A imagem abaixo ilustra melhor a questão (clique nela para ampliar e entender).

Nesse servidor de testes (openfire.inet) o usuário marcelo@openfire.inet pode mandar e receber mensagens para/do usuário local fulano (fulano@openfire.inet) e também do seu contato MSN (marceloterres@dominio.com). Todos as mensagens enviadas/recebidas de seus demais contatos serão rejeitadas, como pode ser visto nas 2 últimas linhas.


Isso não impede que o usuário veja todos seus contatos que estiverem online e nem que eles o vejam também, mas caso o usuário tente mandar uma mensagem para um contato bloqueado o servidor Openfire informa que a mensagem foi rejeitada (uma forma de resolver a questão da visibilidade seria rejeitar todos os pacotes (any) de cada contato bloqueado, mas aí isso teria de ser feito contato a contato, ou seja, mais trabalho manual).

Acredito que a solução acima não seja a mais elegante e mais simples mas de momento foi a forma que encontrei para resolver a questão.

Talvez em breve tenhamos um plugin só para isso, ou quem sabe o próprio Gateway IM não venha a implementar esse recurso, mas para quem não pode esperar, é uma solução que pode ser implementada agora.

PS: caso tenha outra sugestões de implementação, por favor poste aqui.

UPDATE (13/11/2008): Não deixem de ler o comentário de Sarunas, pois o mesmo parece simplificar e muito o uso do Packet Filter. Eu ainda não tive tempo de testá-lo, mas assim que for possível irei fazer, e conforme também vá recebendo feedback de outras pessoas, vou postar mais sobre isso aqui.

Leia também:

Openfire: como bloquear usuários MSN usando o Gateway IM e o Packet Filter
  • Fala Marcelo, parabens pelo artigo cara!!! De fato bastante trabalhoso, mas com uma funcionalidade excelente. É praticamente o mesmo trabalho que faz o appliance do BRA para MSN. Vou ver se consigo tempo para implementar e testar. Abraços.<BR/><BR/>Cássio Rosas,

  • Obrigado ! :-)<BR/><BR/>Depois que você testar poste aqui suas impressões por favor.<BR/><BR/>[]s

  • Anonymous

    Cara não sei se pode servir pra voce, mas achei a alguns dias atrás esse projeto aqui http://sourceforge.net/projects/msn-proxy<BR/><BR/>Não sei se você já conhece também, mas aí está minha contribuição, talvez alguém querendo bloquear o msn o msn-proxy ajude.

  • Obrigado pela dica.<BR/><BR/>Na realidade o que eu procurava era uma forma de fazer isso usando transporte MSN sobre o Jabber (XMPP) no servidor Openfire.<BR/><BR/>Valeu.

  • Anonymous

    Olá marcelo… Parabens pelo seu artigo… muito legal… mas eu estou tendo problemas em implementar as regras… ao implementa-las… eu não consigo enviar nem receber mensagens, implementando da maneira que vc explicou… o que poderia ser…<BR/>?

  • Obrigado pelo elogio :-)<BR/><BR/>Quanto ao seu problema. Como você fez a regra ? Poderia fazer um snapshot (como eu fiz) e mandar para mim por e-mail ? (mhterres@yahoo.com).<BR/><BR/>Assim quem sabe eu possa verificar melhor o que está havendo.<BR/><BR/>Um abraço.

  • ola Marcelo,<BR/><BR/>fiz as regras e testando com os usuarios<BR/>do proprio openfire vai tranquilo,<BR/>o problema que aparentemente ele nao esta<BR/>entendendo os usuarios do msn.<BR/><BR/>Ou seja, os ususarios do msn aparecem e <BR/>funcionanm normalmente dentro de minha conta no openfire

  • Oi.<BR/><BR/>Te inscreve na lista Openfire-BR e manda um snapshot das tuas regras para que a gente possa dar uma olhada.<BR/><BR/>[]s

  • Aldino Brasil

    Olá Marcelo,<BR/><BR/>Muito bom o seu artigo.<BR/><BR/>Se vc puder me ajudar, gostaria de umas dicas para criar grupos no openfire/spark importando estes grupos do AD.<BR/><BR/>Abraços.<BR/><BR/>Aldino Brasil de Souza.

  • Oi Aldino.<BR/><BR/>Você pode mandar suas dúvidas para <A HREF=" mhterres@yahoo.com" REL="nofollow">meu e-mail</A> ou então assinar a <A HREF="http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/openfire-br&quot; REL="nofollow">lista Openfire-Br</A>, ok ?<BR/><BR/>Um abraço,

  • Marcelo, configurei recentemente o Openfire, mas não encontro nada referente ao utilizar o msn por ele, gostaria de saber como faço para deixar apenas usuários do Openfire utilize o msn, poderia me ajudar, onde encontro, como configurar o servidor e o os clientes?<BR/>Agradeço

  • Marcelo, configurei recentemente o Openfire, mas não encontro nada referente ao utilizar o msn por ele, gostaria de saber como faço para deixar apenas usuários do Openfire utilize o msn, poderia me ajudar, onde encontro, como configurar o servidor e o os clientes?<BR/>Agradeco

  • Olá.<BR/><BR/>Para isso você deve fazer 2 coisas:<BR/><BR/>1) Bloquear no firewall de sua empresa o FORWARD da porta 1863 (exceto para o IP do servidor Openfire).<BR/><BR/>2) Configurar no Openfire o plugin Gateway-IM. Dê uma olhada <A HREF="http://mundoopensource.blogspot.com/2007/10/openfire-e-o-plugin-gateway-im.html&quot; REL="nofollow">nesse link</A> para ver se te ajuda. <BR/><BR/>Quanto a

  • Anonymous

    Olá Marcelo. Gostei muito do artigo, pois quebrei a cabeça alguns dias tentando fazer isso mas não consegui. Na verdade eu estava fazendo um caminho inverso ao seu. Ao invés de bloquear tudo e ir liberando um a um (inclusive os contatos locais), eu tentava liberar apenas os contatos externos (do msn) e bloqueava o envio de mensagens apenas para o item transporte. Amanhã mesmo eu tento configurar

  • Ok,<BR/><BR/>fico no aguardo do resultado de seus testes.<BR/><BR/>[]s

  • rod

    olá Marcelo!<BR/>ja me inscrevi no grupo de e-mail, mas to com um problema bem simples: eu adicionei os usuarios do openfire com seus contatos msn. Depois eu apaguei os contatos msn que o usuário nao precisa falar, até aí tudo bem, porém quando o usuário se desconecta e conecta novamente, aquele contato que eu proibi voltou a aparecer. o que poderia ser?<BR/>grato!

  • Olá Rod.<BR/><BR/>Quando você diz que apagou os contatos msn, a que você se refere especificamente ???<BR/><BR/>Não te entendi. Apagou onde ?<BR/><BR/>[]s

  • rod

    oi marcelo!<BR/>me perdoe pela falta de informação.<BR/>mas sobre os contatos através do gateway im, tem a opçao do usuário chamada roster.<BR/>nesse menu roster aparece todos os contatos do msn do usuario@openfire, e destes contatos msn, desejo eliminar alguns da lista de contatos do cliente pidgin.<BR/>quando elimino aquele contato do menu roster, realmente elimina da lista do cliente pidgin,

  • Agora entendi.<BR/><BR/>Eu nunca tinha tentando esse método, e me deparei com o mesmo problema que o teu. Quando o usuário loga de novo, os contatos voltam (até porque a lista de contatos fica nos servidores da rede MSN).<BR/><BR/>Não sei se isso funciona como tu quer, mas seria muito interessante. De qualquer maneira, isso não resolveria de forma completa o problema, pois se o usuário

  • Boa tarde!<BR/><BR/>Já faz um tempo que escrevi um plugin para openfire que faz o log de conversas e cria regras para habilitação/negação de conversa entre usuários e grupo de usuários.<BR/><BR/>Funciona basicamente da mesma forma citada acima, como regras de um firewall, onde a mensagem passa por cada filtro até ser liberada/negada por alguma regra ou, em caso de nao haver regra para os usuários

  • Olá.<BR/><BR/>Muito interessante isso. Com relação aos logs das conversas, o Monitoring Service já atende relativamente bem, mas quanto ao bloqueio isso é realmente muito bom. <BR/><BR/>Ele bloqueia também as contas dos transportes ?<BR/><BR/>Você poderia disponibilizar essa plugin em algum site e divulgá-lo na <A HREF="http://listas.softwarelivre.org/cgi-bin/mailman/listinfo/openfire-br&quot; REL="

  • As someone who spent a lot of time trying to figure out how to set up proper rules, which don’t require explicitly defining who can talk to who:<BR/><BR/>start of the rule with this to allow the client to login to the gateway:<BR/><BR/>pass from any to msn.my_server type any<BR/><BR/>now create the rules:<BR/><BR/>pass from some_group to some_msn40hotmail.com@msn.my_server type any<BR/>pass from

  • Thanks a lot for your help.<BR/><BR/>Regards,<BR/><BR/>Marcelo Terres

  • Fabricio

    Marcelo,<BR/>Uso a versão do Opendire que já vem com o Packet Filter como opção nativa para instalação. No entanto eu instalo normal, mas não consigo salvar as regras que crio. Você já teve esse problema?<BR/>Em versões anteriores eu percebi isso também.

  • Olá Fabrício.<BR/><BR/>Nunca passei por tal problema. Você pode tentar ver na Lista do Openfire-BR se mais alguém já teve problema semelhante.<BR/><BR/>[]s

  • Marcelo instalei o Openfire e instalei os plugins packet Filter, Gateway Im e Monitoring Server eu criei uma conta para eu fazer teste e instalei o Client (Spark)na minha aestação de trabalho, mas não sei como acessar o packet Filter para tentar fazer regras para bloquear e liberar contatos de MSN , pois sei que é bem trabalhoso mas tem como fazer isso pelo Packet Filter correto ? <BR/><BR/>eu

  • Marcelo <BR/><BR/>Gostaria de uma ajuda sua, eu instalei o Openfire em um servidor Windows 2003, instalei os plugins Gateway Im, Packet Filter e Monitoring Service na minha estação de trabalho eu instalei o Spark, no Openfire gateways eu marquei a opção MSN e permissões eu marquei Esses usuários e/ou grupos podem se registrar, e coloquei meu usuário. Até ai tudo beleza eu me conecto via spark e

  • Vá em Configurações do Servidor e irá aparecer a opção Packet Filter no menu lateral esquerdo.<BR/><BR/>[]s

  • Anonymous

    Pessoal, to testando aqui da seguinte forma: <br />criei varias regras dizendo que grupo fulano pode falar com grupo ciclano.Depois disso criei as regras dos MSN<br />E finalmente criei uma regra negando tudo.<br /> Deu um poudo de trabalho, porem fica viavel ja que nao vou criar mais grupos nenhum no meu openfire

  • Em primeiro lugar BOA DICA.<br />Agora gostaria de saber se teria como bloquear por exemplo.<br /><br />user fulano@meuopenfire.com de mandar mensagem para um determinado dominio tipo:<br /><br />fulano@meuopenfire.com DROP @hotmail.com

  • Nunca fiz algo assim, mas já tentaste colocar no To ou no From somente o domínio (hotmail.com) ?<br /><br />[]s

  • Anonymous

    Como solução rápida e eficaz pode-se usar o mecanismo de ordenação de regra a nosso favor conforme o exemplo abaixo: <br />Crie um grupo de usuários locais (Grupo_Usuario_Local);<br />Crie um grupo contendo as contas de msn que serão permitidas para conversação (Grupo_Lista_MSN_Permitido);<br />Em Packet Filter Rules crie as seguintes regras abaixo:<br />Pass Grupo_Usuario_Local

  • Caro amigo,<br /><br />Instalei o plugin do Packet Filter, porém, quando vou cadastrar uma regra simplesmente nao acontece nada, fica em branco e nao cria a regra. Pode me ajudar em algo??<br /><br />Att,<br /><br />Allan Santos

  • Olá.<br /><br />Qual a versão do Openfire em uso ?<br /><br />Você não encontrou erros nos logs do mesmo ?<br /><br />[]s

Floating Social Media Icons by Acurax Wordpress Designers
Optimization WordPress Plugins & Solutions by W3 EDGE
%d blogueiros gostam disto: