[1] Comentário enviado por
roberto_espreto em 24/07/2009 - 02:12h:
Boaaa!
Cara, já são 2 da madruga e estou mais pescando que nunca, acredito que nessa regra para bloqueio do msn:
iptables -t filter -A FORWARD -m layer7 --l7proto msnmessenger -j DROP
Nem precisa do "-t filter". Poderia ser:
iptables -A FORWARD -m layer7 --l7-proto msnmessenger -j DROP
Lendo as referências que você deixou, segue uma dica. Pode-se deixar o acesso a um endereço IP ou mais. Vai saber o patrão que se tem. :)
iptables -A FORWARD -s <ENDEREÇO IP> -m layer7 --l7-proto msnmessenger -j ACCEPT
iptables -A FORWARD -s <ENDEREÇO IP> -m layer7 --l7-proto msn-filetransfer -j ACCEPT
1º regra liberando o acesso do msn no IP especificado.
2º regra para habilitar o protocolo msnslp e msnftp usado para transferência de arquivos pelo MSN.
Abraços.
[2] Comentário enviado por
fernandobona em 24/07/2009 - 10:49h:
roberto_espreto,
Não é que não precisa de ter o '-t filter' na regra para funcionar. A tabela padrão do iptables é a filter, ou seja, se você não especificar a tabela a qual vai destinar sua regra, ela por padrão vai jogar na tabela filter, por isso nesse caso ai seria opcional usar -t filter, pois a cadeia FORWARD faz parte da tabela filter.
:)
Sobre o artigo, show de bola. Vou ate testar pois anos atras eu também lancei um artigo sobre ipp2p aqui e está desatualizado, e ambas as ferramentas são boas para quem precisa desse tipo de filtro. Artigo show de bola.
[3] Comentário enviado por
roberto_espreto em 24/07/2009 - 11:21h:
@timidboy.
Certo, acredito que usei as palavras erradas, como sou "meio" que minimalista, você acabou dizendo o que eu pretendia expor: "...Por isso, nesse caso ai seria opcional...",
Mais valeu. Bom artigo mesmo, esqueci de elogiar :P
R0b3®70
[4] Comentário enviado por
magnolinux em 24/07/2009 - 12:21h:
e ae roberto espreto, como o nosso amigo timiboy disse, por padrao no iptables, quando omitimos a tabela é referenciado a tabela filter, em minhas regras sempre gosto de especificar as tabelas, por motivos de costume mesmo..
um abraço.. e duvidas estou a disposição.
[5] Comentário enviado por
predator em 24/07/2009 - 21:48h:
Pessoal só uma dica..
essa opção aqui "(x) "Layer7" Debugging Output" se marcada vai ficar jogando tudo o que o layer7 pegar,vai mostrar no seu terminal (na tela é muito chato isso), então é bom deixar desmarcada mesmo.
abs
eduardo
[6] Comentário enviado por
marciomarkes em 25/07/2009 - 01:51h:
Parabéns Magno, muito bom.. estava quebrando a cabeça para compilar o ipp2p.. dessa vez foi..
Só estou com uma duvida, você conseguiu bloquear a (REDE Kad) do emule pois ela sempre conecta.. teria alguma ideia..
Abs.
[7] Comentário enviado por
andrefreire em 25/07/2009 - 10:05h:
Bim dia ! Excelente artigo ! Já tenho essa Iptanles + Layer 7 já funcionando mas ainda não tinha conseguido com o IPP2P só que utilizo o próprio Kernel de Lenny o 2.6.26, e o Iptables 1.4.2 que é o padrão do Debian Lenny. Seria possível implementar o IPP2P dessa forma ?
[8] Comentário enviado por
paulinhorm em 25/07/2009 - 11:16h:
Muito bom o seu artigo colega...ja gravei nos meus favoritos...parabéns e continue contribuindo
com artigos de qualidade como este.
Abraços
Paulo
[9] Comentário enviado por
magnolinux em 25/07/2009 - 13:31h:
obrigado marciomarkes pelo elogio, Em relação a rede Kad, na minha fase de testes nao tive nenhum problema, fez o bloqueio normal. Mais como eu disse no inicio do artigo, essa não é a forma ideal de bloquear todo trafego p2p e sim um paleativo que até o presente momento tem sido de grande valia. Vou citar um exemplo, o layer7 por exemplo nao consegue ler o payload do pacote, se o mesmo estiver encriptado, entao muitos p2p já começaram a criptografar o trafego para burlar o layer7, mesmo que a rede p2p tenha um desempenho muito inferior, mais pelo menos é uma forma que eles arrumaram para burla o layer7.
Mais duvidas posta aí..
Abraço
[10] Comentário enviado por
magnolinux em 25/07/2009 - 13:35h:
boa tarde andrefreire, é possivel sim, so que voçe tera que buscar um pacth do ipp2p para o iptables-1.4.2. Os patch que eu postei no artigo foram tirados do site do arch. Tive acessando o site e vi um patch para o iptables 1.4.3. ta aí o link abaixo.
http://aur.archlinux.org/packages/ipp2p/ipp2p/
Abraço.
[11] Comentário enviado por
sequisso em 04/08/2009 - 08:32h:
Olá, ah algum tempo atrás achei que essa fosse uma boa solução para tentativa de bloqueio do tráfego p2p, mas após algumas lidas vi que eles estavam conseguindo burlar o layer 7 p2p através do "protocol obfuscation", ai desisti da ideia.
[12] Comentário enviado por
andrefreire em 04/08/2009 - 17:01h:
Testei com kernel 2.6.26 padrão do Debian e Iptables 1.4.1 e não deu certo ! Todos os P2P que testei continuaram conectando na boa ! Só bloqueou mesmo o MSN !
[13] Comentário enviado por
magnolinux em 04/08/2009 - 18:01h:
boa noite andrefreire, a alguns meses atras quando fiz minha seção de testes nao tive nenhum problema o unico software p2p que burlava o layer7 era o limewire. Sugiro que de uma olhada nas regras do seu firewall. Irei fazer alguns testes e e postar os resultados abraço.
[14] Comentário enviado por
doomk em 10/09/2009 - 13:28h:
muito bom o artigo. Funcionou de prima! vc é o cara!!! :)))
[15] Comentário enviado por
magnolinux em 10/09/2009 - 17:03h:
Obrigado doomk.!
[16] Comentário enviado por
arisimoes em 06/10/2009 - 10:15h:
quebrei um pouco a cabeça com o ipp2p mas conssegui compilar vlw otimo post
[17] Comentário enviado por
arisimoes em 09/10/2009 - 13:41h:
não cnssigo colocar o ipp pra rodar no rc.local diz q n pode ser encontrado ou coisa do tipo
"insmod ipt_ipp2p.ko" esse comando só funciona quando eu to dentro da pasta do ipp2p la em rc.local alguma dica? pra fazer-lo funcionar automaticamente pois quando eu rodo ele manual funciona direito.
olha o q aparece:
root@server:/# insmod ipt_ipp2p.ko
insmod: can't read 'ipt_ipp2p.ko': No such file or directory
conssegui resolver com essa dica do arquivo README q vem com o ipp2p:
-insmod ipt_ipp2p.o / ipt_ipp2p.ko or copy to your kernel modules dir and do a "depmod -a"
copiei o ipt_ipp2p.ko para /lib/modules/<pasta_do_kernel>/ e depois executei o comando depmod -a dai ele passou a executar automaticamente no boot.
espero ter ajudado!!!!!
[18] Comentário enviado por
magnolinux em 09/10/2009 - 17:54h:
mais ao colocar o comando dentro do rc.local, vc deve indicar o caminho completo onde esta
o modulo do ipp2p
exemplo:
#vim rc.local
insmod /ipp2p/ipt_ipp2p.ko
ok.
[19] Comentário enviado por
jardineti em 11/10/2009 - 11:17h:
Magno, quando dou o comando make apos mudar as linhas do Makefile
IPTABLES_SRC = /usr/src/iptables
libipt_ipp2p.so: libipt_ipp2p.c ipt_ipp2p.h
$(CC) $(CFLAGS) $(IPTABLES_OPTION) $(IPTABLES_INCLUDE) -fPIC -c libipt_ipp2p.c
$ (CC) -shared -o libipt_ipp2p.so libipt_ipp2p.o
Aparece a mensagem Makefile:44 faltando separador
Já verifiquei a linha 44 é é exatamente essa $(CC) $(CFLAGS) $(IPTABLES_OPTION) $(IPTABLES_INCLUDE) -fPIC -c libipt_ipp2p.c
que está igual a sua.
O que pode ser?
[20] Comentário enviado por
magnolinux em 13/10/2009 - 09:34h:
jardineti , verifica espaços na linha...
[21] Comentário enviado por
jardineti em 27/10/2009 - 09:29h:
Ok agora gerou os arquivos, mas na hora de instalar o módulo olha o que aparece: insmod: error inserting 'ipt_ipp2p.ko': -1 Unknown symbol in module.
O que pode ser?
[22] Comentário enviado por
jardineti em 27/10/2009 - 10:15h:
Cara faltava ativar o modulo x_tables. modprobe x_tables. Agora funcionou.
Parabéns pelo tuto.
Valeu.
[23] Comentário enviado por
magnolinux em 24/11/2009 - 12:47h:
Obrigado...
quando testei no debian lenny e do ubuntu 9.04, o modulo já estava carregado automatico..
Mais de toda maneira,,
obrigado
[24] Comentário enviado por
fbsalvi em 07/12/2009 - 20:45h:
Fiz todos os passos necessarios mas esta dando o erro abaixo... na hora de compilar o kernel...
Makefile:510: /usr/src/linux-2.6.24/arch/xen/Makefile: No such file or directory
make[1]: *** No rule to make target `/usr/src/linux-2.6.24/arch/xen/Makefile'. Stop.
make: *** [conf.vars] Error 2
Se alguem puder me ajudar, eu agadeço
Fabiano.
[25] Comentário enviado por
magnolinux em 08/12/2009 - 07:36h:
Boma dia fbsalvi..
Pela mensagem de erro, ele não ta encontrando esse arquivo Makefile no diretorio....
tente descompactar o kernel novamente, aplique os pacth e faça o teste novamente..
De uma olhada na versão do kernel com a versão dos pacth aplicados...
configura todos os passos...
Flwww
[26] Comentário enviado por
monteirog12 em 25/02/2010 - 11:47h:
Estou com o mesmo problema do fbsalvi!
Já baixei novamente o kernel, tentei com outra versão e nada... aparece a mesma mensagem!!
Fiz todos os passos necessarios mas esta dando o erro abaixo... na hora de compilar o kernel...
Makefile:510: /usr/src/linux-2.6.24/arch/xen/Makefile: No such file or directory
make[1]: *** No rule to make target `/usr/src/linux-2.6.24/arch/xen/Makefile'. Stop.
make: *** [conf.vars] Error 2
Se alguem puder me ajudar, eu agadeço
Fabiano.
[27] Comentário enviado por
diego_luisCF em 28/03/2010 - 13:29h:
monteirog12 dá uma olhada nesse link:
http://ubuntuforums.org/showthread.php?t=954838
resumindo, vc deve desmarcar a opção de suporte a paravirtualização no menuconfig
agora a minha dúvida:
estou usando o kernel 2.6.28, iptables 1.4.1 e o layer7 já tá rodando beleza.
o problema é que ao compilar o ipp2p não está gerando o arquivo ipt_ipp2p.o / ipt_ipp2p.ko. Qual seria o problema?
o make gera somente esses arquivos:
COPYING ipt_ipp2p.h libipt_ipp2p.o Makefile
ipt_ipp2p.c libipt_ipp2p.c libipt_ipp2p.so README
a saída da compilação é esta aqui:
make[1]: Leaving directory `/usr/src/linux-2.6.28'
gcc -O3 -Wall -DIPTABLES_VERSION=\"1.4.1.1\" -I/usr/src/iptables/include -fPIC -c libipt_ipp2p.c
gcc -shared -o libipt_ipp2p.so libipt_ipp2p.o
PS. já estou muito satisfeito com o layer7, o problema é que fiquei intrigado com isto.
[28] Comentário enviado por
rndrama em 07/05/2010 - 17:42h:
Parabéns Magno, ótimo artigo. Rodei com o Debian Lenny e deu tudo certo, só que o emule continua regaçando e não conseguir colocar o comando insmod ipt_ipp2p.ko para iniciar no boot. Não sei se meu firewall, o qual está muito simples, está com alguma brecha para o emule funcionar, vou postar ele aqui para ver se vc ou outro brother pode verificar melhor, segue.
#!/bin/sh
#
#chkconfig: 345 99 80
#Description: Firewall
#
modprobe ipt_layer7
modprobe xt_layer7
iptables="/usr/local/sbin/iptables"
IPLIBERADOSMSN="/etc/firewall/ip_liberados_msn"
BLOQMSNREDE="/etc/firewall/redes_bloqueadas_msn"
BLOQIMO=imo.im
PROTOCOLOS="/etc/firewall/protocolos"
PROTOCOLOS_P2P="/etc/firewall/protocolos_p2p"
iptables -F
iptables -F INPUT
iptables -F OUTPUT
iptables -F POSTROUTING -t nat
iptables -F PREROUTING -t nat
echo 1 > /proc/sys/net/ipv4/ip_forward
iptables -I FORWARD -m ipp2p --ipp2p -j DROP
iptables -I OUTPUT -m ipp2p --ipp2p -j DROP
iptables -I INPUT -m ipp2p --ipp2p -j DROP
iptables -A FORWARD -p udp -m ipp2p --kazaa --bit -j DROP
iptables -A FORWARD -p udp -m ipp2p --ipp2p --bit -j DROP
iptables -A FORWARD -p tcp -m ipp2p --edk --soul -j DROP
iptables -A FORWARD -p tcp -m ipp2p --ipp2p --soul -j DROP
#iptables -A FORWARD -p udp -m ipp2p --kazaa --bit -j DROP
################################################
#IPP2P
################################################
#for BARRAP2P in `cat $PROTOCOLOS_P2P`; do
# iptables -t filter -A FORWARD -m ipp2p $BARRAP2P -j DROP
#done
################################################
#Ultrasurf
################################################
iptables -t filter -N fdenyall
iptables -t filter -I FORWARD 1 -j fdenyall
iptables -P FORWARD ACCEPT
iptables -A POSTROUTING -t nat -s 172.18.15.0/24 -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -s 172.18.16.0/24 -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -s 172.18.17.0/24 -o eth0 -j MASQUERADE
iptables -A POSTROUTING -t nat -s 172.18.18.0/24 -o eth0 -j MASQUERADE
iptables -A PREROUTING -t nat -i eth1 -p tcp --dport 80 -j REDIRECT --to-port 3128
iptables -A PREROUTING -t nat -s 172.18.15.0/24 -p tcp --dport 80 -j DNAT --to-destination 172.18.15.1:3128
iptables -A PREROUTING -t nat -s 172.18.16.0/24 -p tcp --dport 80 -j DNAT --to-destination 172.18.15.1:3128
iptables -A PREROUTING -t nat -s 172.18.17.0/24 -p tcp --dport 80 -j DNAT --to-destination 172.18.15.1:3128
iptables -A PREROUTING -t nat -s 172.18.18.0/24 -p tcp --dport 80 -j DNAT --to-destination 172.18.15.1:3128
################################################
#Layer7
################################################
for BARRAPROTO in `cat $PROTOCOLOS`; do
iptables -I FORWARD -m layer7 --l7proto $BARRAPROTO -d any/0 -j DROP
iptables -I FORWARD -m layer7 --l7proto $BARRAPROTO -d any/0 -j DROP
iptables -I INPUT -s 0/0 -m layer7 --l7proto $BARRAPROTO -j DROP
iptables -t mangle -A POSTROUTING -m layer7 --l7proto $BARRAPROTO -j DROP
done
################################################
#MSN
################################################
for LIBERARIP in `cat $IPLIBERADOSMSN`; do
iptables -I FORWARD -s $LIBERARIP -p tcp --dport 1863 -j ACCEPT
iptables -I FORWARD -s $LIBERARIP -d loginnet.passport.com -j ACCEPT
done
for BLOQUEARREDE in `cat $BLOQMSNREDE`; do
iptables -A FORWARD -s $BLOQUEARREDE -p tcp --dport 1863 -j REJECT
iptables -A FORWARD -s $BLOQUEARREDE -d loginnet.passport.com -j REJECT
done
################################################
#IMO
################################################
iptables -A FORWARD -d $BLOQIMO -p all -j DROP
iptables -A INPUT -d $BLOQIMO -p all -j DROP
iptables -A OUTPUT -d $BLOQIMO -p all -j DROP
[29] Comentário enviado por
andre_ramos em 11/05/2010 - 11:30h:
kara ao dar o comando make ele começa compilar mas da o seguinte erro:
oque pode ser?
# make
gcc -O3 -Wall -DIPTABLES_VERSION=\"1.4.3\" -I/usr/src/iptables/include -fPIC -c libipt_ipp2p.c
libipt_ipp2p.c: In function ‘parse’:
libipt_ipp2p.c:91: warning: implicit declaration of function ‘exit_error’
libipt_ipp2p.c: At top level:
libipt_ipp2p.c:379: error: variable ‘ipp2p’ has initializer but incomplete type
libipt_ipp2p.c:381: error: unknown field ‘next’ specified in initializer
libipt_ipp2p.c:381: warning: excess elements in struct initializer
libipt_ipp2p.c:381: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:382: error: unknown field ‘name’ specified in initializer
libipt_ipp2p.c:382: warning: excess elements in struct initializer
libipt_ipp2p.c:382: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:383: error: unknown field ‘version’ specified in initializer
libipt_ipp2p.c:383: warning: excess elements in struct initializer
libipt_ipp2p.c:383: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:384: error: unknown field ‘size’ specified in initializer
libipt_ipp2p.c:384: warning: excess elements in struct initializer
libipt_ipp2p.c:384: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:385: error: unknown field ‘userspacesize’ specified in initializer
libipt_ipp2p.c:385: warning: excess elements in struct initializer
libipt_ipp2p.c:385: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:386: error: unknown field ‘help’ specified in initializer
libipt_ipp2p.c:386: warning: excess elements in struct initializer
libipt_ipp2p.c:386: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:387: error: unknown field ‘init’ specified in initializer
libipt_ipp2p.c:387: warning: excess elements in struct initializer
libipt_ipp2p.c:387: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:388: error: unknown field ‘parse’ specified in initializer
libipt_ipp2p.c:388: warning: excess elements in struct initializer
libipt_ipp2p.c:388: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:389: error: unknown field ‘final_check’ specified in initializer
libipt_ipp2p.c:389: warning: excess elements in struct initializer
libipt_ipp2p.c:389: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:390: error: unknown field ‘print’ specified in initializer
libipt_ipp2p.c:390: warning: excess elements in struct initializer
libipt_ipp2p.c:390: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:391: error: unknown field ‘save’ specified in initializer
libipt_ipp2p.c:391: warning: excess elements in struct initializer
libipt_ipp2p.c:391: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c:392: error: unknown field ‘extra_opts’ specified in initializer
libipt_ipp2p.c:393: warning: excess elements in struct initializer
libipt_ipp2p.c:393: warning: (near initialization for ‘ipp2p’)
libipt_ipp2p.c: In function ‘_INIT’:
libipt_ipp2p.c:399: warning: implicit declaration of function ‘register_match’
make: ** [libipt_ipp2p.so] Erro 1
[30] Comentário enviado por
toyso em 24/05/2010 - 20:39h:
Salve!
Amigo, infelizmente o novo Ares parece estar "furando" nosso ipp2p... tô quebrando a cabeça aqui com esse programa safado.
Mestre, busquei informações na internet e parece que o novo Ares é como se fosse outro programa. Mudaram muita coisa.
Se possível, dê uma luz para nós!
Abração e baita artigo!
[31] Comentário enviado por
magnolinux em 06/07/2010 - 11:51h:
amigos, estive ausente durante um tempo devido a muito trabalho. Se alguem ainda estive com problemas, poste que estarei respondendo sempre que possível..
e obrigado toiyso, estarei escrevendo outros em breve.
abraço.
[32] Comentário enviado por
elciojr em 06/07/2010 - 15:12h:
Magno, estou com os eguinte problema na compilação do ipp2p. O que pode ser?
ipt_ipp2p.c: At top level:
ipt_ipp2p.c:877: error: unknown field `family' specified in initializer
ipt_ipp2p.c:877: warning: initialization makes pointer from integer without a cast
ipt_ipp2p.c:878: error: unknown field `matchsize' specified in initializer
ipt_ipp2p.c:878: warning: implicit declaration of function `XT_ALIGN'
ipt_ipp2p.c:878: error: initializer element is not constant
ipt_ipp2p.c:878: error: (near initialization for `ipp2p_match.destroy')
ipt_ipp2p.c:879: warning: initialization from incompatible pointer type
make: ** [ipt_ipp2p.o] Erro 1
Obrigado!