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: 36.344 ]

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


Dependências, download e instalação



Dependências:
  • Versão usada nesse artigo: 0.7
  • Distribuição Slackware Linux 12.1
  • MySQL 4 ou superior (não vou abranger a instalação do mesmo)
  • OpenSSL versão 0.6 ou superior (não vou abranger a instalação do mesmo)

Download:

Baixe o source no diretório de seu gosto (eu particularmente baixo sempre no /usr/src/, por questão de organização):

# wget http://www.imspector.org/downloads/imspector-0.7.tar.gz

Descompacte-o:

# tar -zxvf imspector-0.7.tar.gz

Instalação:

Entre na pasta:

# cd imspector-0.7

Compile e instale:

# make
# make install


Instale o certificado SSL:

# make install-ca-cert

Instalação da biblioteca de conexão do MySQL:

# make mysqlloggingplugin.so
# cp mysqlloggingplugin.so /usr/lib/imspector


Pronto, o Imspector e seu certificado estão instalados, os mesmos ficaram nas seguintes pastas:
  • /usr/sbin/imspector - binários;
  • /usr/lib/libimspector.so - biblioteca compartilhada;
  • /usr/lib/imspector/ - plugins;
  • /usr/lib/imspector/*loggingplugin.so - plugins de log;
  • /usr/etc/imspector/ - arquivos de configuração e certificados.

Mais informações no site oficial do Imspector.

    Próxima página

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

Criando um roteador Linux com sua máquina antiga

Tomcat com URL limpa

Como montar um proxy reverse no servidor Apache

Instalando e configurando um servidor DNS (Bind)

Criando uma rede virtual com servidor de internet e estações utilizando VirtualBox

  
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
Linux banner
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts