Firewall Debian - Depurando LOG

1. Firewall Debian - Depurando LOG

diego bitencourtt
dibitencourtt

(usa Debian)

Enviado em 17/11/2014 - 22:36h

Boa noite galera,

Esse é o meu primeiro tópico que crio então desculpem qualquer coisa.

Pois bem, vamos lá as duvidas que possuo:

Primeiramente eu configurei o DHCP que está distribuindo os IPs perfeitamente. (em base a artigos aqui do vol)

Em seguida configurei o SQUID3 autenticado. (que está funcionando perfeitamente)

Instalei o BIND9 como DNS.

Configurei as interfaces eth0 e eth1 - também estão certas.

Mais ai chegou a parte hard que é o IPTABLES. recorri a um conhecido que me passou um arquivo com o iptables pronto... ativei o roteamento entre as placas "(ipv4=1)" coloquei esse arquivo que foi me passado para executar na inicialização pois bem funcionou também. ai vcs pensam se tudo funciona porque vc ta enchendo o saco aqui?

Esse iptables veio pronto ou seja até entendo o que tem nele mais a minha principal duvida e dificuldade é identificar que portas estão sendo bloqueadas e como liberar caso necessario.

Segue abaixo o arquivo que tenho:

#!/bin/bash

# --- Inicio - Variaveis --- #
#
# iptables
iptables=/sbin/iptables

# Net
EXT_I="eth1"
EXT_IP="172.16.1.2"
EXT_GW="172.16.1.1"

# Lan
INT_I="eth0"
INT_IP="192.168.0.1"
INT_NET="192.168.0.0/24"

# Localhost
LO_I="lo"
#
# --- Fim - Variaveis --- #


# --- Inicio - Regras Padroes --- #
#
# Limpa todas regras
iptables -F
iptables -t nat -F
iptables -t mangle -F

# Regras default
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Localhost
iptables -A INPUT -i $LO_I -j ACCEPT
iptables -A OUTPUT -o $LO_I -j ACCEPT

# Modulos conntrack para FTP
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
#
# --- Final - Regras Padroes --- #




# --- Inicio - Regras INPUT --- #
#
# Deixa passar qualquer conexao ja estabelecida
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Libera conexoes de ICMP (ping)
iptables -A INPUT -m state --state NEW -p icmp -j ACCEPT

# Libera acesso para SSH (conexoes vindas da Internet ou rede local)
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT

# Libera acesso DNS
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp -s $INT_NET --dport 53 -j ACCEPT

# Libera acesso DHCP
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 67:68 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp -s $INT_NET --dport 67:68 -j ACCEPT

# Libera acesso da rede interna para servidor HTTP local (nagios e configuracoes de proxy)
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 80 -j ACCEPT

# Libera acesso ao servidor SAMBA
iptables -A INPUT -m state -m multiport --state NEW -p tcp -s $INT_NET --dport 137,138,139,445 -j ACCEPT
iptables -A INPUT -m state -m multiport --state NEW -p udp -s $INT_NET --dport 137,138,139 -j ACCEPT

# Libera conexao VPN (PPTP)
iptables -A INPUT -m state --state NEW -p tcp -d $EXT_IP --dport 1723 -j ACCEPT
iptables -A INPUT -m state --state NEW -p gre -d $EXT_IP -j ACCEPT

# Libera acesso para servidor proxy, somente rede interna
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 3128 -j ACCEPT

# Libera acesso para servidor Jabber (Openfire), gerenciamento, somente rede interna
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 9090 -j ACCEPT

# Log de qualquer outro tipo de conexao bloqueada
iptables -A INPUT -j LOG --log-prefix "Firewall-BLOCK=Input "
#
# --- Fim - Regras INPUT --- #


# --- Inicio - Regras FORWARD --- #
#
# Forward - Deixa passar qualquer conexao ja estabelecida
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Libera conexoes de ICMP (ping)
iptables -A FORWARD -m state --state NEW -p icmp -j ACCEPT

# Libera acesso para todos ftps
iptables -A FORWARD -m state --state NEW -p tcp --dport 20:21 -j ACCEPT

# Libera acesso a DNS remoto
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 53 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p udp -s $INT_NET --dport 53 -j ACCEPT

# Libera acesso da rede interna para o modem ADSL
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET -d $EXT_GW --dport 80 -j ACCEPT

# Acesso da rede interna para Internet (http, https)
#iptables -A FORWARD -m state -m multiport --state NEW -p tcp -s $INT_NET --dport 80,443 -j ACCEPT

# Libera acesso a portas para SMTP/POP
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 465 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 995 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 587 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 110 -j ACCEPT

# Libera acesso a MSN
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 1863 -j ACCEPT

# Libera acesso da rede interna para sistema
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET -d 1.2.3.4. --dport 3350 -j ACCEPT

# Acesso a Internet total para maquinas TI Diego Bitencourtt
iptables -A FORWARD -m state --state NEW -s 192.168.0.8 -j ACCEPT

# Acesso a Internet total para Maquina
iptables -A FORWARD -m state --state NEW -s 192.168.0.6 -j ACCEPT
iptables -A FORWARD -m state --state NEW -s 192.168.0.7 -j ACCEPT

#libera acesso ao servidor
#iptables -A FORWARD -m state --state NEW -s 192.168.0.101 -j ACCEPT
iptables -A FORWARD -m state --state NEW -s 192.168.0.150 -j ACCEPT

# Acesso a Internet total para maquina Sr.
iptables -A FORWARD -m state --state NEW -s 192.168.0.5 -j ACCEPT

# Teste de acesso total
#iptables -A FORWARD -m state --state NEW -s 192.168.0.149 -j ACCEPT

# Forward - Log de qualquer outro tipo de conexao
iptables -A FORWARD -j LOG --log-prefix "Firewall-BLOCK=Forward "
#
# --- Fim - Regras FORWARD --- #




# --- Inicio - Regras NAT --- #
#
# Nat - DVR
#iptables -A PREROUTING -t nat -d $EXT_IP -p tcp --dport 82 -j DNAT --to 10.1.1.252
#iptables -A FORWARD -p tcp -d 10.1.1.252 --dport 82 -j ACCEPT
#iptables -A PREROUTING -t nat -d $EXT_IP -p tcp --dport 37777 -j DNAT --to 10.1.1.252
#iptables -A FORWARD -p tcp -d 10.1.1.252 --dport 37777 -j ACCEPT

# Nat - Squid
#iptables -t nat -A PREROUTING -i $INT_I -p tcp --dport 80 -j REDIRECT --to-port 3128

# Nat - Lan/Dmz -> Net
iptables -A POSTROUTING -t nat -o $EXT_I -j SNAT --to $EXT_IP
#
# --- Fim - Regras NAT --- #




#!/bin/bash



-----------------------------------------------------------------------------------------------


Por exemplo:

# Log de qualquer outro tipo de conexao bloqueada
iptables -A INPUT -j LOG --log-prefix "Firewall-BLOCK=Input


No caso manda salvar todas as informações no syslog...

Ex: Nov 4 08:34:45 fwlinux kernel: [59639.390889] Firewall-BLOCK=Forward IN=eth0 OUT=eth1 MAC=90:e6:ba:b4:0e:aa:00:23:8b:8a:47:28:08:00 SRC=192.168.0.150 DST=37.252.248.78 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=28257 DF PROTO=TCP SPT=63797 DPT=5938 WINDOW=65535 RES=0x00 SYN URGP=0

Gostaria de entender detalhado o que informa nessa linha do syslog.



Minha maior duvida é como liberar algo que está sendo bloqueado, como identificar e qual o caminho certo a seguir.

Agradeço a colaboração de todos..

Abraços!!









  


2. Re: Firewall Debian - Depurando LOG

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 18/11/2014 - 11:50h

dibitencourtt escreveu:

Boa noite galera,

Esse é o meu primeiro tópico que crio então desculpem qualquer coisa.

Pois bem, vamos lá as duvidas que possuo:

Primeiramente eu configurei o DHCP que está distribuindo os IPs perfeitamente. (em base a artigos aqui do vol)

Em seguida configurei o SQUID3 autenticado. (que está funcionando perfeitamente)

Instalei o BIND9 como DNS.

Configurei as interfaces eth0 e eth1 - também estão certas.

Mais ai chegou a parte hard que é o IPTABLES. recorri a um conhecido que me passou um arquivo com o iptables pronto... ativei o roteamento entre as placas "(ipv4=1)" coloquei esse arquivo que foi me passado para executar na inicialização pois bem funcionou também. ai vcs pensam se tudo funciona porque vc ta enchendo o saco aqui?

Esse iptables veio pronto ou seja até entendo o que tem nele mais a minha principal duvida e dificuldade é identificar que portas estão sendo bloqueadas e como liberar caso necessario.

Segue abaixo o arquivo que tenho:

#!/bin/bash

# --- Inicio - Variaveis --- #
#
# iptables
iptables=/sbin/iptables

# Net
EXT_I="eth1"
EXT_IP="172.16.1.2"
EXT_GW="172.16.1.1"

# Lan
INT_I="eth0"
INT_IP="192.168.0.1"
INT_NET="192.168.0.0/24"

# Localhost
LO_I="lo"
#
# --- Fim - Variaveis --- #


# --- Inicio - Regras Padroes --- #
#
# Limpa todas regras
iptables -F
iptables -t nat -F
iptables -t mangle -F

# Regras default
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# Localhost
iptables -A INPUT -i $LO_I -j ACCEPT
iptables -A OUTPUT -o $LO_I -j ACCEPT

# Modulos conntrack para FTP
modprobe ip_nat_ftp
modprobe ip_conntrack_ftp
#
# --- Final - Regras Padroes --- #




# --- Inicio - Regras INPUT --- #
#
# Deixa passar qualquer conexao ja estabelecida
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Libera conexoes de ICMP (ping)
iptables -A INPUT -m state --state NEW -p icmp -j ACCEPT

# Libera acesso para SSH (conexoes vindas da Internet ou rede local)
iptables -A INPUT -m state --state NEW -p tcp --dport 22 -j ACCEPT

# Libera acesso DNS
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 53 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp -s $INT_NET --dport 53 -j ACCEPT

# Libera acesso DHCP
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 67:68 -j ACCEPT
iptables -A INPUT -m state --state NEW -p udp -s $INT_NET --dport 67:68 -j ACCEPT

# Libera acesso da rede interna para servidor HTTP local (nagios e configuracoes de proxy)
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 80 -j ACCEPT

# Libera acesso ao servidor SAMBA
iptables -A INPUT -m state -m multiport --state NEW -p tcp -s $INT_NET --dport 137,138,139,445 -j ACCEPT
iptables -A INPUT -m state -m multiport --state NEW -p udp -s $INT_NET --dport 137,138,139 -j ACCEPT

# Libera conexao VPN (PPTP)
iptables -A INPUT -m state --state NEW -p tcp -d $EXT_IP --dport 1723 -j ACCEPT
iptables -A INPUT -m state --state NEW -p gre -d $EXT_IP -j ACCEPT

# Libera acesso para servidor proxy, somente rede interna
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 3128 -j ACCEPT

# Libera acesso para servidor Jabber (Openfire), gerenciamento, somente rede interna
iptables -A INPUT -m state --state NEW -p tcp -s $INT_NET --dport 9090 -j ACCEPT

# Log de qualquer outro tipo de conexao bloqueada
iptables -A INPUT -j LOG --log-prefix "Firewall-BLOCK=Input "
#
# --- Fim - Regras INPUT --- #


# --- Inicio - Regras FORWARD --- #
#
# Forward - Deixa passar qualquer conexao ja estabelecida
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Libera conexoes de ICMP (ping)
iptables -A FORWARD -m state --state NEW -p icmp -j ACCEPT

# Libera acesso para todos ftps
iptables -A FORWARD -m state --state NEW -p tcp --dport 20:21 -j ACCEPT

# Libera acesso a DNS remoto
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 53 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p udp -s $INT_NET --dport 53 -j ACCEPT

# Libera acesso da rede interna para o modem ADSL
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET -d $EXT_GW --dport 80 -j ACCEPT

# Acesso da rede interna para Internet (http, https)
#iptables -A FORWARD -m state -m multiport --state NEW -p tcp -s $INT_NET --dport 80,443 -j ACCEPT

# Libera acesso a portas para SMTP/POP
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 465 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 995 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 587 -j ACCEPT
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 110 -j ACCEPT

# Libera acesso a MSN
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET --dport 1863 -j ACCEPT

# Libera acesso da rede interna para sistema
iptables -A FORWARD -m state --state NEW -p tcp -s $INT_NET -d 1.2.3.4. --dport 3350 -j ACCEPT

# Acesso a Internet total para maquinas TI Diego Bitencourtt
iptables -A FORWARD -m state --state NEW -s 192.168.0.8 -j ACCEPT

# Acesso a Internet total para Maquina
iptables -A FORWARD -m state --state NEW -s 192.168.0.6 -j ACCEPT
iptables -A FORWARD -m state --state NEW -s 192.168.0.7 -j ACCEPT

#libera acesso ao servidor
#iptables -A FORWARD -m state --state NEW -s 192.168.0.101 -j ACCEPT
iptables -A FORWARD -m state --state NEW -s 192.168.0.150 -j ACCEPT

# Acesso a Internet total para maquina Sr.
iptables -A FORWARD -m state --state NEW -s 192.168.0.5 -j ACCEPT

# Teste de acesso total
#iptables -A FORWARD -m state --state NEW -s 192.168.0.149 -j ACCEPT

# Forward - Log de qualquer outro tipo de conexao
iptables -A FORWARD -j LOG --log-prefix "Firewall-BLOCK=Forward "
#
# --- Fim - Regras FORWARD --- #




# --- Inicio - Regras NAT --- #
#
# Nat - DVR
#iptables -A PREROUTING -t nat -d $EXT_IP -p tcp --dport 82 -j DNAT --to 10.1.1.252
#iptables -A FORWARD -p tcp -d 10.1.1.252 --dport 82 -j ACCEPT
#iptables -A PREROUTING -t nat -d $EXT_IP -p tcp --dport 37777 -j DNAT --to 10.1.1.252
#iptables -A FORWARD -p tcp -d 10.1.1.252 --dport 37777 -j ACCEPT

# Nat - Squid
#iptables -t nat -A PREROUTING -i $INT_I -p tcp --dport 80 -j REDIRECT --to-port 3128

# Nat - Lan/Dmz -> Net
iptables -A POSTROUTING -t nat -o $EXT_I -j SNAT --to $EXT_IP
#
# --- Fim - Regras NAT --- #




#!/bin/bash



-----------------------------------------------------------------------------------------------


Por exemplo:

# Log de qualquer outro tipo de conexao bloqueada
iptables -A INPUT -j LOG --log-prefix "Firewall-BLOCK=Input


No caso manda salvar todas as informações no syslog...

Ex: Nov 4 08:34:45 fwlinux kernel: [59639.390889] Firewall-BLOCK=Forward IN=eth0 OUT=eth1 MAC=90:e6:ba:b4:0e:aa:00:23:8b:8a:47:28:08:00 SRC=192.168.0.150 DST=37.252.248.78 LEN=48 TOS=0x00 PREC=0x00 TTL=127 ID=28257 DF PROTO=TCP SPT=63797 DPT=5938 WINDOW=65535 RES=0x00 SYN URGP=0

Gostaria de entender detalhado o que informa nessa linha do syslog.



Minha maior duvida é como liberar algo que está sendo bloqueado, como identificar e qual o caminho certo a seguir.

Agradeço a colaboração de todos..

Abraços!!










Bom, tem Samba instalado e configurado no seu firewall ? Se tiver, não é recomendado.

Essa regra do Samba

# Libera acesso ao servidor SAMBA
iptables -A INPUT -m state -m multiport --state NEW -p tcp -s $INT_NET --dport 137,138,139,445 -j ACCEPT
iptables -A INPUT -m state -m multiport --state NEW -p udp -s $INT_NET --dport 137,138,139 -j ACCEPT


Se sua rede tiver Samba configurado, troque a chain INPUT por FORWARD, pois do jeito que está diz que seu firewall tem Samba que não é recomendado.

Para liberar portas nas regras é ACCEPT
Para bloquear de forma bruta é DROP
Para bloquear de forma silenciosa é REJECT

Outra regra que é desnecessária já que no início aplicou como ACCEPT para chain OUTPUT.
iptables -A OUTPUT -o $LO_I -j ACCEPT 


No mais, precisa sempre analisar os serviços de rede que tem ativos na rede e aplicar as regras respectivas para cada um.

http://mundodacomputacaointegral.blogspot.com.br/


3. Obrigado.. :D

diego bitencourtt
dibitencourtt

(usa Debian)

Enviado em 18/11/2014 - 21:24h

Opa,

Obrigado por suas dicas e recomendações. Sobre o SAMBA estou em ambiente teste.

Agora a minha duvida realmente é sobre os log. Imagina o seguinte que eu estou em um ambiente produção e seja instalado algum software seja ele um "ERP" ou algo do genero. Nem sempre as empresas tem documentação e eu gostaria de poder identificar o que está sendo liberado ou bloqueado/rejeitado.

Saber compreender por exemplo aquela linha do log que postei acima.

Valeu e agradeço sua ajuda.

Abraço


4. Re: Firewall Debian - Depurando LOG

Reginaldo de Matias
saitam

(usa Slackware)

Enviado em 19/11/2014 - 08:19h

dibitencourtt escreveu:

Opa,

Obrigado por suas dicas e recomendações. Sobre o SAMBA estou em ambiente teste.

Agora a minha duvida realmente é sobre os log. Imagina o seguinte que eu estou em um ambiente produção e seja instalado algum software seja ele um "ERP" ou algo do genero. Nem sempre as empresas tem documentação e eu gostaria de poder identificar o que está sendo liberado ou bloqueado/rejeitado.

Saber compreender por exemplo aquela linha do log que postei acima.

Valeu e agradeço sua ajuda.

Abraço


O arquivo de log fica em /var/log/messages que pode ser consulta no comando #tail -f /var/log/messages

Consulta com filtro de IP - #tail -f /var/log/messages | grep <IP>






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts