Imspector, um proxy para mensageiros instantâneos no Linux

Encontrei o Imspector após ter a necessidade de controlar o uso do MSN na empresa onde trabalho. Ao instalá-lo pude notar o seu poder e também que ele está em constante desenvolvimento, pois o acompanho desde a versão 0.4, a atual é 0.7.

[ Hits: 38.110 ]

Por: Adriano Rodrigues Balani em 04/11/2008 | Blog: http://blogdobalani.blogspot.com


Configuração e execução



vamos criar o banco de dados:

Obs.: Para prosseguir nesse tópico o MySQL tem que estar instalado e rodando perfeitamente.

Entre no prompt do MySQL:

# mysql -p (em seguida digite a senha do root do MySQL)

Criação do banco:

mysql> create database imspector; (atente para o ; no final do comando dentro do prompt do mysql)

Criação da tabela:

mysql> CREATE TABLE `messages` (
   `id` int(11) NOT NULL auto_increment,
   `timestamp` int(11) NOT NULL default '0',
   `clientaddress` text NOT NULL,
   `protocolname` text NOT NULL,
   `outgoing` int(11) NOT NULL default '0',
   `type` int(11) NOT NULL default '0',
   `localid` text NOT NULL,
   `remoteid` text NOT NULL,
   `filtered` int(11) NOT NULL default '0',
   `categories` text NOT NULL,
   `eventdata` blob NOT NULL,
   PRIMARY KEY  (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1;


Pronto, criado o banco de dados, vamos ao arquivo de configuração, sendo o mesmo situado no seguinte caminho: /usr/etc/imspector/imspector.conf

Opções gerais:

# Portas de trabalho
port=16667
http_port=18080

# Rede de trabalho
listeneaddr=0.0.0.0

# Diretório de plugins
plugin_dir=/usr/lib/imspector

# Protocolos habilitados
icq_protocol=on
irc_protocol=on
msn_protocol=on
yahoo_protocol=on
gg_protocol=on
jabber_protocol=on
https_protocol=on

# Além de gravar em banco ele também guarda os registros em log
log_typing_events=on
file_logging_dir=/var/log/imspector

# Conexão com o banco, descomentar e completar com seus dados
# MySQL logging plugin stuff
mysql_server=localhost
mysql_database=imspector
mysql_username=SEU USUÁRIO QUE CONECTA AO BANCO
mysql_password=SENHA DO USUÁRIO

A configuração básica está pronta, agora falta colocar umas regras de redirecionamento para o Imspector começar a captura.

Adicione as seguintes regras no seu script do iptables:

# Regras para quem usa proxy transparente

# MSN:
iptables -t nat -A PREROUTING -p tcp --destination-port 1863 -j REDIRECT --to-ports 16667
# Jabber:
iptables -t nat -A PREROUTING -p tcp --destination-port 5222 -j REDIRECT --to-ports 16667
# Jabber over SSL:
iptables -t nat -A PREROUTING -p tcp --destination-port 5223 -j REDIRECT --to-ports 16667
# ICQ/AIM:
iptables -t nat -A PREROUTING -p tcp --destination-port 5190 -j REDIRECT --to-ports 16667
# Yahoo:
iptables -t nat -A PREROUTING -p tcp --destination-port 5050 -j REDIRECT --to-ports 16667
# IRC:
iptables -t nat -A PREROUTING -p tcp --destination-port 6667 -j REDIRECT --to-ports 16667
# Gadu-Gadu:
iptables -t nat -A PREROUTING -p tcp --destination-port 8074 -j REDIRECT --to-ports 16667

# Regras para quem redireciona todo o trafico para o Squid, não usa proxy transparente:

# MSN:
iptables -t nat -A OUTPUT -p tcp --destination-port 1863 -m owner --uid-owner 100 -j REDIRECT --to-ports 16667
# Jabber:
iptables -t nat -A OUTPUT -p tcp --destination-port 5222 -m owner --uid-owner 100 -j REDIRECT --to-ports 16667
# Jabber over SSL:
iptables -t nat -A OUTPUT -p tcp --destination-port 5223 -m owner --uid-owner 100 -j REDIRECT --to-ports 16667
# ICQ/AIM:
iptables -t nat -A OUTPUT -p tcp --destination-port 5190 -m owner --uid-owner 100 -j REDIRECT --to-ports 16667
# Yahoo:
iptables -t nat -A OUTPUT -p tcp --destination-port 5050 -m owner --uid-owner 100 -j REDIRECT --to-ports 16667
# IRC:
iptables -t nat -A OUTPUT -p tcp --destination-port 6667 -m owner --uid-owner 100 -j REDIRECT --to-ports 16667
# Gadu-Gadu:
iptables -t nat -A OUTPUT -p tcp --destination-port 8074 -m owner --uid-owner 100 -j REDIRECT --to-ports 16667

Execução:

A sua execução é simples, para ter um debug do que está acontecendo:

# imspector -D

Modo normal:

# imspector

Agora é só criar um script de inicialização no /etc/rc.d e colocar no rc.M e pronto, essa parte está concluída.

O Imspector 0.7 vem com um script CGI em Perl para visualizar as conversas, porém esse script pega as conversas registradas em log, não do banco. O que passei no script é o básico para seu funcionamento, visite a pagina do desenvolvedor e explore seus recursos.

Bibliografia: www.imspector.org

SEJA LIVRE! VIVA O LINUX!

Página anterior    

Páginas do artigo
   1. Dependências, download e instalação
   2. Configuração e execução
Outros artigos deste autor

Recurso de Views no Bind

Leitura recomendada

Sistemas Operacionais Online

Gravando mp3 usando o XMMS

Rodando ASP em servidores web Linux

Análise do Seamonkey - A evolução da espécie

VivoZap do Moto Q no Ubuntu

  
Comentários
[1] Comentário enviado por renato.leite em 04/11/2008 - 08:16h

Otimo artigo, fico muito bom...

[2] Comentário enviado por brunocontin em 04/11/2008 - 14:56h

Tenho umas dúvidas,
# Portas de trabalho
port=16667
http_port=18080 ## Porta usada para acesso http? eu tentei só que não conecta, inclusive https

# Rede de trabalho
listeneaddr=0.0.0.0 ### aqui seria a minha placa de rede interna? tip 192.168.254.100 ?

seu eu não coloco https, eleme da a mensageem Bad request: GET
mais se eu colocar https: ele não me retorna nada

[3] Comentário enviado por balani em 06/11/2008 - 01:00h

Ola, brunocontin, desculpe a demora para responder

Não estou entendendo o seu problema, vc pode explicar melhor?

Obrigado pelo comentario.

[4] Comentário enviado por rodrigolhart em 07/01/2009 - 11:41h

Ola,
Estou com problemas na instalação,
quando dou o comando imspector -d me da esse erro

imspector: error while loading shared libraries: libimspector.so: cannot open shared object file: No such file or directory

o que pode ser ??

[5] Comentário enviado por balani em 07/01/2009 - 12:01h

Olá rodrigolhart, faça o seguinte, dentro do diretorio aonde está o source do imspector verifique se tem a biblioteca libimspector.so, e copie ela para /usr/lib/imspector e depois atualize o ldconfig, digitando ldconfig no prompt. Qualquer duvida, é deixar um comentario.

[6] Comentário enviado por primus em 15/01/2009 - 17:47h

Ola,

Utilizo o ubuntu server 8.10 com OpenSSL, mas quando digito o comando make dentro imspector-0.7 apresenta a seguinte mensagem de erro, alguem pode me ajudar!!!!

g++ -Wall -O2 -fPIC -I/usr/include -DHAVE_SSL main.cpp -c
In file included from main.cpp:10:
imspector.h:39:25: error: openssl/ssl.h: No such file or directory
imspector.h:40:25: error: openssl/bio.h: No such file or directory
imspector.h:41:25: error: openssl/err.h: No such file or directory
In file included from imspector.h:71,
from main.cpp:10:
socket.h:33: error: âSSL_CTXâ has not been declared
socket.h:57: error: ISO C++ forbids declaration of âSSLâ with no type
socket.h:57: error: expected â;â before â*â token
socket.h:58: error: ISO C++ forbids declaration of âX509â with no type
socket.h:58: error: expected â;â before â*â token
In file included from imspector.h:74,
from main.cpp:10:
sslstate.h:18: error: âSSL_CTXâ has not been declared
sslstate.h:30: error: ISO C++ forbids declaration of âSSL_METHODâ with no type
sslstate.h:30: error: expected â;â before â*â token
sslstate.h:31: error: ISO C++ forbids declaration of âSSL_CTXâ with no type
sslstate.h:31: error: expected â;â before â*â token
sslstate.h:32: error: ISO C++ forbids declaration of âSSL_CTXâ with no type
sslstate.h:32: error: expected â;â before â*â token
sslstate.h:34: error: ISO C++ forbids declaration of âX509â with no type
sslstate.h:34: error: expected â;â before â*â token
sslstate.h:35: error: ISO C++ forbids declaration of âEVP_PKEYâ with no type
sslstate.h:35: error: expected â;â before â*â token
sslstate.h:36: error: ISO C++ forbids declaration of âEVP_PKEYâ with no type
sslstate.h:36: error: expected â;â before â*â token
make: *** [main.o] Error 1

[7] Comentário enviado por balani em 15/01/2009 - 20:22h

Obrigado pela visita primus, o seu problema é o seguinte, na hora de compilar o imspector o compilador não está encontrando os headers do openssl, que normalmente ficam em /usr/include/openssl.

qualquer duvida, posta aí.

Abraços, Adriano R Balani.

[8] Comentário enviado por primus em 16/01/2009 - 13:15h

Obrigado!

Os headers do openssl não estava instalado, utilizei o seguinte comando apt-get -y --force-yes -f install libssl-dev. O imspector esta funcionando, mas estou com uma duvida. Existe interface web para o imspector como no msn-proxy?

[9] Comentário enviado por balani em 16/01/2009 - 14:57h

Olá primus, que bom que deu certo, é o seguinte tô fazendo uma interface em php, ela é bem simples, mais dá para ver as conversas por contato, assim que ela tiver pronta eu vou postar um artigo e o condigo-fonte.

Abraços.

Adriano Rodrigues Balani

[10] Comentário enviado por douglascrp em 01/03/2009 - 18:12h

fiz a instalação conforme o tutorial, mas não consegui fazer com que o imspector capturasse as mensagens.

abaixo, o script que uso para compartilhar a internet do micro, e a minha "tentativa" de fazer o direcionamento das portas para o imspector.


echo 1 > /proc/sys/net/ipv4/ip_forward

/sbin/modprobe ip_conntrack
/sbin/modprobe ipt_MASQUERADE
/sbin/modprobe ipt_LOG
/sbin/modprobe iptable_nat

iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
iptables -P FORWARD ACCEPT

iptables -t nat -A PREROUTING -p tcp --destination-port 1863 -j REDIRECT --to-ports 16667
iptables -t nat -A PREROUTING -p tcp --destination-port 5222 -j REDIRECT --to-ports 16667
iptables -t nat -A PREROUTING -p tcp --destination-port 5223 -j REDIRECT --to-ports 16667
iptables -t nat -A PREROUTING -p tcp --destination-port 5190 -j REDIRECT --to-ports 16667
iptables -t nat -A PREROUTING -p tcp --destination-port 5050 -j REDIRECT --to-ports 16667
iptables -t nat -A PREROUTING -p tcp --destination-port 6667 -j REDIRECT --to-ports 16667
iptables -t nat -A PREROUTING -p tcp --destination-port 8074 -j REDIRECT --to-ports 16667

iptables -A POSTROUTING -t nat -s 192.168.0.0/24 -o eth1 -j MASQUERADE


o que tem de errado com esse script?
a internet e o msn funciona normalmente nas máquinas, mas o log não é gerado.

obrigado desde já

[11] Comentário enviado por balani em 03/03/2009 - 13:26h

Olá meu amigo, obrigado pelo comentario

Tem como vc postar o conteu do seu arquivo imspector.conf?

Abraços

[12] Comentário enviado por igor.matos em 16/03/2009 - 10:54h

Balani,

Por um acaso você já terminou a interface PHP? Estava para desenvolver uma em Delphi. Não reclame da linguagem, rs - não sou desenvolvedor e era só para quebrar o galho mesmo.

Aguardo sua resposta, mas devo fazer a minha nessa semana.

Abraços.

[13] Comentário enviado por juniorarruda em 31/03/2009 - 09:48h

Parabéns pelo artigo

Quando tento executar o imspector.cgi dentro da pasta /usr/lib/cgi-gin/ acessando http://mygatewayim/cgi-bin/imspector.cgi
não me abre os relatórios, mostra a lista de datas disponível e fica escrito no canto direito superior "Updating" mas daí nao sai e
meu error.log do apache fica assim:

Illegal offset (undefined ) resetting...
Illegal offset (undefined ) resetting...
[Tue Mar 31 09:50:16 2009] [error] [client 192.168.0.254] (104)Connection reset by peer: ap_content_length_filter: apr_bucket_read() failed, referer: http://192.168.0.254/cgi-bin/imspector.cgi

Se alguém puder me ajudar fico muito grato.

T+++

[14] Comentário enviado por balani em 03/04/2009 - 16:46h

Saudações meus caros,

Estou liberando a primeira versão da interface em php para visualização do imspector, porem ela não está completa, falta o controle de usuario, porem visualiza o conteudo do banco, qualquer duvida me adicionem no msn: adrianobalani@yahoo.com.br.
para baixar: http://rapidshare.de/files/46511348/sis.zip.html

só para constar, coloquei o nome de SIS, mais usem do jeito que achar melhor, ele não tem licensa, é livre para mudar e fazer oque quizerem, porem cada mudança que fizerem gostaria de receber uma copia. :)

Abraços

[15] Comentário enviado por balani em 03/04/2009 - 16:48h

Junior Arruda,

Olá meu caro, vc deu permissão de execução para ele, qualque coisa dê um chmod 755 nele.

Abraços

[16] Comentário enviado por chaplinux em 27/05/2009 - 02:07h

Tem um cliente WIN pra ler os Logs no Banco no MySQL, que roda normalmente no WINE,

http://www.ranux.com.ar/content/view/66/92/


[17] Comentário enviado por marcosasjr em 26/06/2009 - 11:06h

bom dia a todos,

estou com 1 duvida
instalei o imspector ate entao tudo ok...
tudo coinfigurado, etc...
+ com o comando imspector -d
ele fica parado em uma linha é assim mesmo?
imspector: Protocol Plugin name: HTTPS IMSpector protocol plugin
imspector: Protocol Plugin name: MSN IMSpector protocol plugin
imspector: Non-HTTP port listening on 0.0.0.0:16667
imspector: HTTP port listening on 0.0.0.0:18080
imspector: Logging Plugin name: Debug IMSpector logging plugin
imspector: Logging Plugin name: File IMSpector logging plugin
imspector: Logging Plugin name: MySQL IMSpector logging plugin
no caso essa ultima linha...
é assim?

[18] Comentário enviado por del_fio em 03/07/2009 - 08:30h

Olá balani,

Estou tentando implantar o imspector mas tive a seguinte dúvida:

Fiz:

# tar -zxvf imspector-0.8.tar.gz
# cd imspector-0.8
# make
# make install
# make install-ca-cert

Até aqui tudo certo, mas na hora que eu vou dar o comando:

# make mysqlloggingplugin.so

O arquivo mysqlloggingplugin.so não existe, o único que existe é o mysqlloggingplugin.cpp

Pode ajudar?

[19] Comentário enviado por balani em 03/07/2009 - 10:45h

Olá del_fio, quando dou o comando no meu aparece assim:

[root@fw imspector-0.8]# make mysqlloggingplugin.so
g++ -Wall -O2 -fPIC -I/usr/include -DHAVE_SSL mysqlloggingplugin.cpp -c -I/usr/include
g++ mysqlloggingplugin.o libimspector.so -ldl -fPIC -shared -Wl,-soname,mysqlloggingplugin.so -o mysqlloggingplugin.so -L/usr/lib/mysql -lmysqlclient

se aparecer isso no seu é porque ele compilou, se não aparece, vc precisa ver se os includes do mysql estão instalados.

Qualquer coisa me envia o erro que dá.


Abraços.

[20] Comentário enviado por del_fio em 14/07/2009 - 18:01h

Problema resolvido com:

#apt-get install libmysql++-dev

X)

[21] Comentário enviado por juniorsa em 22/07/2009 - 17:52h

Boa tarde, gostaria de intender melhor qual realmente a funcionalidade do Imspector, oque realmente ele controla, oque ele bloqueia!?

[22] Comentário enviado por balani em 24/07/2009 - 14:17h

Boa tarde, Juniorsa

O imspector é um proxy para mensageiros instantaneos, abrangendo varios desde o Windows Live Messenger até o Gadu-Gadu, com ele você pode guardar o historico das conversar no servidor em um banco de dados e criar listar de controles (ACL's) e tudo mais, tendo controle geral. Tudo dependa da criatividade de quem tá usando.


Abraços


Adriano R. Balani

[23] Comentário enviado por wagner_quedi em 31/10/2009 - 14:17h

otimo tutorial, gostaria de uma informação, coloquei dessa forma

# Block all filetransfers?
block_files=on

# Block webcams?
block_webcams=on

so que continua permitindo a transferencia de arquivos e webcam no msn

e to com o mesmo problema para logar no mysql

[24] Comentário enviado por rickps em 15/01/2010 - 10:43h

Tive um problema ao criar a tabela:

ERROR 1046 (3D000): No database selected

Mas consegui resolver com o comando:

mysql> USE imspector

Antes de começar a criar a tabela. Tudo certo agora !

[25] Comentário enviado por manoserpa em 14/04/2010 - 12:01h

Estou com o mesmo problema do marcosasjr.

root@serpa-desktop:~# imspector -d
imspector: Protocol Plugin name: MSN IMSpector protocol plugin
imspector: Misc: Blocking all file transfers
imspector: Misc: Blocking all webcams
imspector: Filter Plugin name: Misc IMSpector filter plugin
imspector: Logging Plugin name: Debug IMSpector logging plugin
imspector: Logging Plugin name: File IMSpector logging plugin
imspector: Non-HTTP port listening on 0.0.0.0:16667
imspector: HTTP port listening on 0.0.0.0:18080
imspector: Logging Plugin name: MySQL IMSpector logging plugin


Alguma ideia?

Valeu.

[26] Comentário enviado por balani em 14/04/2010 - 23:37h

manoserpa, é o seguinte, verifica as suas regras no iptables se elas estão fazendo os redirecionamentos de portas corretas.

[27] Comentário enviado por wagnerfranca em 17/11/2011 - 15:17h

esta ocorrendo o seguinte erro quando dou o comando make mysqlloggingplugin.so

g++ -Wall -O2 -fPIC -I/usr/include -DHAVE_SSL mysqlloggingplugin.cpp -c -I/usr/include
mysqlloggingplugin.cpp:12:25: error: mysql/mysql.h: No such file or directory
mysqlloggingplugin.cpp:13:26: error: mysql/errmsg.h: No such file or directory
mysqlloggingplugin.cpp:46: error: expected constructor, destructor, or type conversion before â*â token
mysqlloggingplugin.cpp:47: error: expected constructor, destructor, or type conversion before â*â token
mysqlloggingplugin.cpp:48: error: âMYSQL_BINDâ does not name a type
mysqlloggingplugin.cpp: In function âbool initloggingplugin(loggingplugininfo&, Options&, bool)â:
mysqlloggingplugin.cpp:87: error: âconnâ was not declared in this scope
mysqlloggingplugin.cpp:87: error: âmysql_initâ was not declared in this scope
mysqlloggingplugin.cpp: In function âvoid closeloggingplugin()â:
mysqlloggingplugin.cpp:94: error: âconnâ was not declared in this scope
mysqlloggingplugin.cpp:94: error: âmysql_closeâ was not declared in this scope
mysqlloggingplugin.cpp: In function âint logevents(std::vector<imevent, std::allocator<imevent> >&)â:
mysqlloggingplugin.cpp:178: error: âstmtâ was not declared in this scope
mysqlloggingplugin.cpp:178: error: âmysql_stmt_executeâ was not declared in this scope
mysqlloggingplugin.cpp:180: error: âmysql_stmt_errorâ was not declared in this scope
mysqlloggingplugin.cpp:183: error: âmysql_stmt_errnoâ was not declared in this scope
mysqlloggingplugin.cpp:183: error: âCR_SERVER_LOSTâ was not declared in this scope
mysqlloggingplugin.cpp:184: error: âCR_SERVER_GONE_ERRORâ was not declared in this scope
mysqlloggingplugin.cpp:190: error: âmysql_stmt_errnoâ was not declared in this scope
mysqlloggingplugin.cpp: In function âbool connectmysql()â:
mysqlloggingplugin.cpp:203: error: âconnâ was not declared in this scope
mysqlloggingplugin.cpp:204: error: âmysql_real_connectâ was not declared in this scope
mysqlloggingplugin.cpp:206: error: âmysql_errorâ was not declared in this scope
mysqlloggingplugin.cpp:210: error: âconnâ was not declared in this scope
mysqlloggingplugin.cpp:210: error: âmysql_queryâ was not declared in this scope
mysqlloggingplugin.cpp:212: error: âmysql_errorâ was not declared in this scope
mysqlloggingplugin.cpp:216: error: âstmtâ was not declared in this scope
mysqlloggingplugin.cpp:216: error: âconnâ was not declared in this scope
mysqlloggingplugin.cpp:216: error: âmysql_stmt_initâ was not declared in this scope
mysqlloggingplugin.cpp:222: error: âstmtâ was not declared in this scope
mysqlloggingplugin.cpp:222: error: âmysql_stmt_prepareâ was not declared in this scope
mysqlloggingplugin.cpp:224: error: âmysql_stmt_errorâ was not declared in this scope
mysqlloggingplugin.cpp:228: error: âstmtâ was not declared in this scope
mysqlloggingplugin.cpp:228: error: âmysql_stmt_param_countâ was not declared in this scope
mysqlloggingplugin.cpp:234: error: âbindsâ was not declared in this scope
mysqlloggingplugin.cpp:234: error: âMYSQL_BINDâ was not declared in this scope
mysqlloggingplugin.cpp:238: error: âMYSQL_TYPE_LONGâ was not declared in this scope
mysqlloggingplugin.cpp:244: error: âMYSQL_TYPE_STRINGâ was not declared in this scope
mysqlloggingplugin.cpp:297: error: âMYSQL_TYPE_BLOBâ was not declared in this scope
mysqlloggingplugin.cpp:304: error: âstmtâ was not declared in this scope
mysqlloggingplugin.cpp:304: error: âmysql_stmt_bind_paramâ was not declared in this scope
mysqlloggingplugin.cpp:306: error: âmysql_stmt_errorâ was not declared in this scope
make: *** [mysqlloggingplugin.o] Error 1

pode me ajudar ?

[28] Comentário enviado por balani em 20/11/2011 - 12:52h

Amigo, desculpe a demora para responder,
Tá faltando no seu sistema os headers do mysql, se vc usa sistemas debian-like use o seguinte comando
# apt-get install mysql-headers

CentOS / Fedora

# yum install mysql-headers


Qualquer problema, posta aí


Contribuir com comentário




Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts