|
![]() |
||
Gerar log com iptables quando se usa Nat estático, OK !!
|
||
. Nós temos 759.265 usuários, convidamos você fazer parte de nossa comunidade também! Se ainda não encontrou o que procura use nossa pesquisa. Esperamos que aprecie nosso trabalho.
![]() |
|
|
Opções do Tópico |
|
|
#1 (permalink) |
|
Membro Senior
|
Boa tarde a todos.
Gostaria de saber se é possível gerar log de acesso usando iptables, quando se tem um Nat estático de uma porta para uma máquina interna rodando windows. No meu caso é só de um ip acessando VNC, e a regra que estou usando é: $IPT -I INPUT -p tcp -s 200.x.x.x -d 200.z.z.z --destination-port 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" $IPT -I INPUT -p tcp -s 200.x.x.x -d 200.z.z.z --destination-port 5900 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" Mas não está gerando log. (Acredito eu, que é porque não é no servidor que abre a porta do VNC, mas não faço idéia de como fazer a regra). Obs: Estou usando "-s" para pegar os acesso só de 1 ip, e o "--log-level 1" é porque dentro do "/etc/syslog.conf" eu usei a entrada... *.alert (apontando para um arquivo separado) /var/log/vnc_log Se alguém souber se é possível gerar esse log que eu quero, e se suber alguma dica fico extremamente agradecido. Obrigado.
__________________
Abraços Dån |
|
|
|
|
|
#2 (permalink) |
|
Super Participante
|
Deixa ver se eu entendi....
Voçê está querendo é que toda requisição que chega pela internet com destino às portas 5800 e 5900 sejam redirecionadas para uma máquina da sua rede interna? Seria isso? Então a regra correta seria: iptables -t nat -A PREROUTING -i "placa de rede/internet" -p tcp -s "ip de onde está vindo a conexão" --dport 5800 -j DNAT --to-destination "ip da sua maquina interna" iptables -t nat -A PREROUTING -i "placa de rede/internet" -p tcp -s "ip de onde está vindo a conexão" --dport 5900 -j DNAT --to-destination "ip da sua maquina interna" Para gerar o log pode colocar a seguinte regra iptables -A FORWARD -i "placa de rede/internet" -p tcp --dport 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC" Se tiver falado bobeira, por favor me corrija, :lol: |
|
|
|
|
|
#3 (permalink) |
|
Membro Senior
|
Oi Babau, primeiramente muito obrigado pela ajuda. Era exatamente isso q eu estava precisando ( na verdade a regra do PREROUTING já estava feita, era só a de LOG mesmo q eu estava precisando), e valeu demais a sua ajuda.
Agra só queria tirar mais uma q apareceu, q seria de gerar LOG apenas de um determinado ip q se conectar po vnc, então só queria saber se eu montando a regra dessa maneira abaixo não haverá problemas: ( seria colocar um source "-s" apenas). iptables -A FORWARD -i "placa de rede/internet" -p tcp -s 200.x.x.x --dport 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC" Obs: na verdade não é necessário fazer da porta 5900 tb né? OBRIGADO !!!
__________________
Abraços Dån |
|
|
|
|
|
#4 (permalink) |
|
Membro Senior
|
Uma pergunta:
Se eu usar "-d" no lugar de "-i" , dessa forma... em vez de --> "iptables -A FORWARD -i eth1 ......" por exemploeu usar --> "iptables -A FORWARD -d 200.x.x.x ....." funcionaria? Pq no meu caso tem Bind na placa de rede, e nat esttico em todos ips válidos, e quando a regra for pra conectar no Ip que por exemplo é a eth1:1, não dá pra colocar na regra, teria que colocar o ip, ou então usar outra opção que ainda não tenho conhecimento. Agora, tive uma luz. Será que eu deixando "-i eth1" por exemplo, qualquer conexão vindo na porta do VNC e entrando em qualquer um dos ip´s válidos da máquina (já que em todos ips validos tem nat estatico do VNC para máquinas diferentes da rede interna) ele vai logar da mesma forma? Pra mim seria bem melhor, pq seria uma regra só, e depois dentro do log ele tem o campo DST que é o destino, e na teoria estaria me falando em qual ip que conectou. Muito obrigado !!!
__________________
Abraços Dån |
|
|
|
|
|
#5 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Oi danilo...
Se ele não está gerando o log, pode ser que vc tenha colocado a regra num lugar onde ela não é alcançada. Por exemplo, logo depois da regra que aceita o pacote. Detalhe: a regra de DNAT é processada no "PREROUTING", antes do pacote passar pela cadeia FORWARD. Então, quando ele passa por lá, já passa com o endereço alterado pelo DNAT. Nesse caso, então, vc tem que testar o endereço de origem original, e o de destino já traduzido pelo NAT. Outra coisa: se sua conexão for ADSL BRIDGE, os pacotes vão entrar pela interface ppp0, não pela eth1.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#6 (permalink) |
|
Membro Senior
|
Opa, então, não funcionou, tentei colocar a regra do LOG antes (usando -I FORWARD) e depois da regra do PREROUTING com ( -A FORWARD ) e não funcionou de nenhum dos dois jeitos.
Na verdade eu testei dessa forma, na eth1, só para ver se funcionava do jeito que o Babau falou... iptables -A FORWARD -i eth1 -p tcp --dport 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC" Só q o que eu vou rpecisar é colocar a regra pra quando for entrar pela eth1:1 e isso eu não posso colocar na regra, daí funcionando do primeiro jeito eu passaria a procurar com fazer do jeito que preciso, mas mesmo assim não funcionou. Fiz a regra do Prerouting no IP da eth1 para fazer a regra do log usando eth1 e não rolou, como disse coloquei com -I e -A logo depois da regra e não deu certo. O q vc disse de testar o endereço de origem original, e o de destino já traduzido, não entendi? Seria uma regra de log com FORWARD com "-s 200.y.y.y" e -d 200.x.x.x (meu ip valido) ao invés de "-i eth1" por ex. ? Muito obrigado.
__________________
Abraços Dån |
|
|
|
|
|
#7 (permalink) |
|
Membro Senior
|
Obs: Essa linha dentro do syslog.conf está certa, eu usando o "--log-level 1" na linha do LOG no "firewall" né?
# Faz log dos acessos VNC; *.alert /var/log/vnc_log Valeu.
__________________
Abraços Dån |
|
|
|
|
|
#8 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
danilo, antes de tentar coisas mais complicadas, vamos fazer funcionar o trivial. Senão a gente fica com muitas variáveis pra acertar.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#9 (permalink) |
|
Membro Senior
|
É então, é justamente isso que eu quis dizer, que tentei da forma mais simples e mesmo assim não funcionou. Sò quis citar que a minha necessidade será diferente ainda (um pouco mais complicada talvez), pq nem do jeito mais simples estou conseguindo, e talvez a regra que cumpra a minha necessidade fosse mais fácil (mas acabei de descobrir que não é)... só isso. Desculpa ae, to meio perdido nessas regras de LOG, tentei de várias formas já e o arquivo fica só no 0kb ... =[
Mesmo assim obrigado pelas ajudas, vou voltar ao zero pela décima vez pra ver se funciona. =] Souber de mais alguma dica eu agradeço. Ou até mesmo algum site "escondido", pq pelo google tá difícil de achar. Obrigado.
__________________
Abraços Dån |
|
|
|
|
|
#10 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
primeiro vamos ver se o syslog está configurado pra receber as mensagens.
O target LOG do iptables usa, por default, a "facilidade" "KERNEL.DEBUG". Existe um comando chamado "logger", que vc usa pra enviar mensagens ao syslog a partir do shell, veja se vc consegue mandar mensagens com essa "facilidade" tb.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#11 (permalink) |
|
Membro Senior
|
Então, o logger funcionou, enviei uma mensagem de teste e ela caiu no /var/log/messages.
__________________
Abraços Dån |
|
|
|
|
|
#12 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
então vamos agora testar só o log do iptables.
vc tem os seus comandos de iptables salvos em um script, não? Então: iptables -F iptables -t nat -F iptables -A FORWARD -m limit --limit 10/s -j LOG --log-prefix "Teste " tail -f /var/log/messages
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#13 (permalink) |
|
Membro Senior
|
Ele está funcionando, estão entrando mensagens no /var/log/iptables.log que foi selecionado dentro do /etc/syslog.conf para...
kern.=debug -/var/log/iptables.log Qual seria o próximo passo?
__________________
Abraços Dån |
|
|
|
|
|
#14 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
rever o script do iptables, colocando suas regras em ordem, de forma que o LOG seja feito SEMPRE ANTES do ACCEPT, REJECT, DROP, ou qq outro target "conclusivo".
E não esqueça do que eu falei: qdo vc faz um "DNAT" num pacote, ele já passa pela cadeia FORWARD com o endereço modificado. Então, se vc for fazer o LOG em FORWARD, tem que selecionar pelo endereço de destino já modificado, não pelo endereço original.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#15 (permalink) |
|
Membro Senior
|
Oi jqueiroz, felizmente consegui gerar o log já da forma mais simples, pegando todo mundo. Muito obrigado pela força.
Para ajudar futuras pessoas com o mesmo problema, no meu caso as regras ficaram assim: $IPT -I FORWARD -i eth1 -p tcp --destination-port 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" $IPT -I FORWARD -i eth1 -p tcp --destination-port 5900 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" E as entradas no arquivo de log ficaram assim: May 24 17:07:15 fw-sbc kernel: Acesso via VNC -->IN=eth1 OUT=eth0 SRC=200.207.x.x DST=10.1.10.101 LEN=40 TOS=0x00 PREC=0x00 TTL=115 ID=35509 DF PROTO=TCP SPT=3124 DPT=5900 WINDOW=8760 RES=0x00 ACK URGP=0 May 24 17:19:43 fw-sbc kernel: Acesso via VNC -->IN=eth1 OUT=eth0 SRC=200.162.x.x DST=10.1.10.157 LEN=46 TOS=0x00 PREC=0x00 TTL=119 ID=51976 DF PROTO=TCP SPT=13371 DPT=5900 WINDOW=65535 RES=0x00 ACK PSH URGP=0 Ou seja, está logando entrada por VNC vindo de qualquer ip e entrando em qualquer ip válido, só com a regra pegando "-i eth1", ótimo, isso diminui o número de regras no script. Achei realmente muito bom que eu colocando "-i eth1" ele pegue tanto conexões entrantes na eth1, quanto nas eth1:1, eth1:2, eth1:3 , e assim por diante. O que me falta agora é pegar apenas as conexões entrantes de dois determinados IP´s de origem (source "-s"), e não de todo mundo. Um pergunta para finalizar essa parte, a regra seria essa abaixo: $IPT -I FORWARD -i eth1 -p tcp -s 200.207.x.x --destination-port 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" $IPT -I FORWARD -i eth1 -p tcp -s 200.207.x.x --destination-port 5900 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" $IPT -I FORWARD -i eth1 -p tcp -s 200.162.x.x --destination-port 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" $IPT -I FORWARD -i eth1 -p tcp -s 200.162.x.x --destination-port 5900 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" Um última pergunta, os logs estão snedo gerados mais que 1 por segundo, as vzs 7 por segundo, ou 5 por segundo, etc, estou conectado direto lá e está oscilando para caramba. O arquivo de log está crescendo muito e acho que com o [[[ -m limit --limit "número/tempo" ]]] dá pra rotacionar melhor, só que nunca acerto direito e até hj não entendi o conceito desse "limit". Vc teria alguma sugestão para mim colocar de forma que cada entrada no log fosse tipo da seguinte maneira: Uma entrada(uma linha), 5 segundos depois mais uma entrada (linha), 5 segundo outra, e assim por diante, é possível? Obrigado mesmo .
__________________
Abraços Dån |
|
|
|
|
|
#16 (permalink) |
|
Super Participante
|
Com relação a sua primeira dúvida a regra é essa mesma.
Com relação a segunda dúvida o que eu sei é que a opção "limit" serve para limitar o número de pacotes que podem atravessar o seu firewall, de acordo com as regras/tempo que voce definiu. Agora não sei se ela pode ser usada para geração de logs e nem se tem como fazer isso. Acho que não. Vou ficar te devendo essa ops:
__________________
"AHHH NUM SEI.... SÓ SEI QUE FOI ASSIM" |
|
|
|
|
|
#17 (permalink) |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
tenta
-m limit --limit 12/minute Assim ele só vai logar pacotes a cada 5 segundos, +/-. Detalhe: pacotes que chegarem nesse meio tempo serão processados normalmente, mas não logados. Eu não recomendo usar nada abaixo de 1 pacote por segundo, fica um controle muito grosso.
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
|
#18 (permalink) |
|
Membro Senior
|
Opa, então agradecendo antes de mais nada toda força, e continuando o assunto, na verdade a regra com o -limit não rolou... (pra variar sempre apanho dela)
Coloquei desse jeito, mas se passaram vários minutos e não logou nada. $IPT -I FORWARD -i eth1 -p tcp -m limit --limit 12/m --destination-port 5800 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" $IPT -I FORWARD -i eth1 -p tcp -m limit --limit 12/m --destination-port 5900 -j LOG --log-level 1 --log-prefix "Acesso via VNC -->" Acho que coloquei no lugar certo da linha da regra, não? Valeu.
__________________
Abraços Dån |
|
|
|
|
|
#19 (permalink) |
|
Membro Senior
|
Gente, desconsiderem o que eu falei, desculpem, funciona direitinho sim o "-m limit" . Acho que finalmente estou entendendo esse cara.
Não sei se vc´s já sabiam, mas olha o que eu acabei de descobrir ... a regra funciona direitinho, só que no caso do VNC, olha que engraçado, ele só loga no arquivo, se vc estiver mexendo na máquina !! Eu estava por VNC na máquina de teste, conectado normal, só que com a janela minimizada, daí achei que não estava funcionando, pois não acontecia nada com o arquivo de log que eu aconpanhava com "tail -f", daí maximizei só de teimoso (já estava desconfiado) e comecei a mexer em qualquer coisa, dái o log mudou !! Resumindo, se vc está por vnc conectado mas com a janela minimizada (sem atividade), ele não loga nada no arquivo ! Aposto que não fui o primeiro e nem serei o último a achar que não está funcionando por causa disso ! =D Espero que esse tópico sirva como aprendizado pra bastante gente. E Babau , jqueiroz, obrigado mesmo por toda ajuda e contem comigo pra qualquer coisa sempre. Valeu muito !
__________________
Abraços Dån |
|
|
|
|
|
#20 (permalink) | |
|
Highlander
Registrado em: May 2002
Localização: Tijuca/RJ
Idade: 9
Mensagens: 87.782
Reputação: 1756
![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() ![]() |
Citação:
__________________
Visite Quepolis (link de indicação) | "chmod 777 nunca ajudou ninguém" (c) 2002-2010 JQueiroz/FGdH
CCNP: √ ² CCSI: □ | Conheça o Novo Bebuns ![]() |
|
|
|
|
![]() |
| Opções do Tópico | |
|
|