Conceito básico de entrada e saída [RESOLVIDO]

1. Conceito básico de entrada e saída [RESOLVIDO]

Bruno L. Santos
brunnus

(usa Ubuntu)

Enviado em 05/08/2014 - 16:03h

Boa tarde a todos!

Ando lendo muitos materiais sobre firewall, porém, uma dúvida ainda persiste quando se fala em entrada, saída e passagem de pacotes. Por isso gostaria de um esclarecimento dos amigos do fórum, se possível.

Levando em consideração que minha máquina tenha 02 interfaces de rede, uma para rede interna (eth0) e outra que faz a conexão com a internet (ppp0), rodando debian:

1. Quando eu crio a política abaixo o firewall vai tratar todos os pacotes ENTRANDO na eth0 ou ppp0?

iptables -t filter -A INPUT -p tcp --dport -j ACCEPT


Obs.: Utilizando política DROP no firewall:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP




  


2. MELHOR RESPOSTA

Pedro
px

(usa Debian)

Enviado em 08/08/2014 - 09:50h

Então agora que esta tudo certo você pode implementar um Squid (caso queira) ou ir configurando as portas que quer que sejam liberadas e bloqueadas pelo script mesmo, ai na FORWARD por exemplo que se daria esta modificação, por exemplo:

iptables -t filter -A FORWARD -i eth1 -o eth0 -m multiport --dport 21,22,23,25,53,80,110,443 -j ACCEPT

Essa regrinha iria permitir os serviços de FTP,SSH,TELNET,EMAIL,DNS,HTTP,SMPT,HTTPS funcionarem, o resto seria dropado pela sua regra padrão de FORWARD que é drop.

Aconselho a listar somente a faixa de rede local para usar a net, tipo:

iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp -m multiport --dport 21,22,23,25,53,80,110,443 -s 127.0.0.1/24 -j ACCEPT

Caso contrário qualquer PC poderia usar o seu para redirecionar pacotes para todo tipo de lugar, deixando um "buraco" em seu firewall.

Ai você muda o 127.0.0.1/24 pela sua faixa de rede correspondente, e caso queira adicione mais portas na regra acima para liberar conexões entre outros serviços... também não se esqueça de mudar a faixa de rede ali.

3. Re: Conceito básico de entrada e saída [RESOLVIDO]

Bruno L. Santos
brunnus

(usa Ubuntu)

Enviado em 07/08/2014 - 11:28h

E o FORWARD é por interface ou devo considerar o próprio servidor o item pelo qual o pacote será "passado direto"?


4. Re: Conceito básico de entrada e saída [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 07/08/2014 - 11:36h

brunnus escreveu:

Boa tarde a todos!

Ando lendo muitos materiais sobre firewall, porém, uma dúvida ainda persiste quando se fala em entrada, saída e passagem de pacotes. Por isso gostaria de um esclarecimento dos amigos do fórum, se possível.

Levando em consideração que minha máquina tenha 02 interfaces de rede, uma para rede interna (eth0) e outra que faz a conexão com a internet (ppp0), rodando debian:

1. Quando eu crio a política abaixo o firewall vai tratar todos os pacotes ENTRANDO na eth0 ou ppp0?

iptables -t filter -A INPUT -p tcp --dport -j ACCEPT


Obs.: Utilizando política DROP no firewall:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP



Ele irá por padrão aceitar qualquer pacote em qualquer placa de rede se você não selecionar uma com a opção -i (para entrada) e -o (para saída).


"iptables -t filter -A INPUT -p tcp --dport -j ACCEPT"

Aqui ta faltando a porta após o comando --dport, para aceitar pacotes entrando na porta 80 pela eth0, faça:

iptables -t filter -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT

isso é só um exemplo básico do que se pode fazer com esse monstro de firewall que é o iptables.

"E o FORWARD é por interface ou devo considerar o próprio servidor o item pelo qual o pacote será "passado direto"?"

A FORWARD seria como um desvio de todos os pacotes que passam pela máquina indo para outra máquina, mas teria que ser configurada porta por porta que gostaria de fazer este serviço.


5. Re: Conceito básico de entrada e saída [RESOLVIDO]

Bruno L. Santos
brunnus

(usa Ubuntu)

Enviado em 07/08/2014 - 13:33h

px escreveu:

brunnus escreveu:

Boa tarde a todos!

Ando lendo muitos materiais sobre firewall, porém, uma dúvida ainda persiste quando se fala em entrada, saída e passagem de pacotes. Por isso gostaria de um esclarecimento dos amigos do fórum, se possível.

Levando em consideração que minha máquina tenha 02 interfaces de rede, uma para rede interna (eth0) e outra que faz a conexão com a internet (ppp0), rodando debian:

1. Quando eu crio a política abaixo o firewall vai tratar todos os pacotes ENTRANDO na eth0 ou ppp0?

iptables -t filter -A INPUT -p tcp --dport -j ACCEPT


Obs.: Utilizando política DROP no firewall:

iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP



Ele irá por padrão aceitar qualquer pacote em qualquer placa de rede se você não selecionar uma com a opção -i (para entrada) e -o (para saída).


"iptables -t filter -A INPUT -p tcp --dport -j ACCEPT"

Aqui ta faltando a porta após o comando --dport, para aceitar pacotes entrando na porta 80 pela eth0, faça:

iptables -t filter -A INPUT -p tcp --dport 80 -i eth0 -j ACCEPT

isso é só um exemplo básico do que se pode fazer com esse monstro de firewall que é o iptables.

"E o FORWARD é por interface ou devo considerar o próprio servidor o item pelo qual o pacote será "passado direto"?"

A FORWARD seria como um desvio de todos os pacotes que passam pela máquina indo para outra máquina, mas teria que ser configurada porta por porta que gostaria de fazer este serviço.


Obrigado pelos esclarecimentos px...

Estou configurando um firewall com as políticas drop
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

porém, mesmo liberando o acesso input para porta 80 como na regra acima e...
liberando o input do DNS na porta 53 e...
adicionando a regra de manter conexões estabelecidas meu cliente ainda não navega.


Existe mais algum detalhe para liberar a simples navegação?



6. Re: Conceito básico de entrada e saída [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 07/08/2014 - 20:20h

brunnus escreveu:

Existe mais algum detalhe para liberar a simples navegação?


Falta um regra para FORWARD para a rede local, entre outras que precisara, melhor procurar um artigo sobre firewall em servidores e ler mais sobre iptables no http://www.guiafoca.org/

Se quiser poste seu script de iptables que te ajudo a arrumar algum possível erro, por que estou as escuras aq rsrs.


7. Re: Conceito básico de entrada e saída [RESOLVIDO]

Bruno L. Santos
brunnus

(usa Ubuntu)

Enviado em 08/08/2014 - 09:06h

px escreveu:

brunnus escreveu:

Existe mais algum detalhe para liberar a simples navegação?


Falta um regra para FORWARD para a rede local, entre outras que precisara, melhor procurar um artigo sobre firewall em servidores e ler mais sobre iptables no http://www.guiafoca.org/

Se quiser poste seu script de iptables que te ajudo a arrumar algum possível erro, por que estou as escuras aq rsrs.


Antes de mais nada agradeço a atenção despendida no aprendizado alheio px, muito obrigado mesmo!

Quanto a leitura recomendada do guiafoca, já tive a oportunidade de ler esse guia e que recorro sempre, entre outros como este: http://eriberto.pro.br/iptables/3.html onde traz uma abordagem diferente e interessante.

Quanto ao script do meu firewall, fiz as sugestões que vc fez px, no forward, acessou a internet mas também tudo ta liberado, torrent, https etc... deu a impressão que está permitindo qualquer tipo de conexão passar.

eth0 = interface que esta conectada diretamente a internet
eth1 = interface ligada a rede interna



#!/bin/sh
echo "Iniciando Firewall..."

echo "Carregando módulos"

/sbin/modprobe ip_tables
/sbin/modprobe ipt_MASQUERADE

echo "Apagando regras anteriores"
iptables -F -t filter
iptables -F -t mangle
iptables -F -t nat

iptables -X -t filter
iptables -X -t mangle
iptables -X -t nat

iptables -Z -t filter
iptables -Z -t mangle
iptables -Z -t nat

echo "Aplicando políticas"
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#ativa roteamento
echo 1 >/proc/sys/net/ipv4/ip_forward

###################################################################
# FILTER #
###################################################################

################INPUT################

#libera acesso ao servidor pelo proprio servidor
iptables -t filter -A INPUT -i lo -j ACCEPT

#libera porta 80
iptables -t filter -A INPUT -s 10.1.1.0/24 -p tcp --dport 80 -j ACCEPT

#libera dns
iptables -t filter -A INPUT -p udp --dport 53 -j ACCEPT

#libera conexões já estabelecidas
iptables -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

################FORWARD################

#regra para passagem de pacotes que o px comentou
iptables -t filter -A FORWARD -i eth1 -o eth0 -j ACCEPT

#Permite forward de conexões estabelecidas
iptables -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


###################################################################
# NAT #
###################################################################

#Rotear conexão
iptables -t nat -A POSTROUTING -s 10.1.1.0/24 -o eth0 -j MASQUERADE




8. Re: Conceito básico de entrada e saída [RESOLVIDO]

Bruno L. Santos
brunnus

(usa Ubuntu)

Enviado em 08/08/2014 - 10:18h

px escreveu:

Então agora que esta tudo certo você pode implementar um Squid (caso queira) ou ir configurando as portas que quer que sejam liberadas e bloqueadas pelo script mesmo, ai na FORWARD por exemplo que se daria esta modificação, por exemplo:

iptables -t filter -A FORWARD -i eth1 -o eth0 -m multiport 21,22,23,25,53,80,110,443 -j ACCEPT

Essa regrinha iria permitir os serviços de FTP,SSH,TELNET,EMAIL,DNS,HTTP,SMPT,HTTPS funcionarem, o resto seria dropado pela sua regra padrão de FORWARD que é drop.

Aconselho a listar somente a faixa de rede local para usar a net, tipo:

iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp -m multiport 21,22,23,25,53,80,110,443 -s 127.0.0.1/24 -j ACCEPT

Caso contrário qualquer PC poderia usar o seu para redirecionar pacotes para todo tipo de lugar, deixando um "buraco" em seu firewall.

Ai você muda o 127.0.0.1/24 pela sua faixa de rede correspondente, e caso queira adicione mais portas na regra acima para liberar conexões entre outros serviços... também não se esqueça de mudar a faixa de rede ali.


Interessante px, eu estava tentando fazer todas as liberações no INPUT (http,dns etc), já que minha política de OUTPUT é ACCEPT, aí eu entendia que liberando o INPUT para essa porta ela saía pelo OUTPUT acessando a internet.

Mesmo sabendo que o input é para entrada de pacotes e forward é para fazer os pacotes passarem direto, como eu sei qual chain usar para liberar ou bloquear determinados pacotes?



9. Re: Conceito básico de entrada e saída [RESOLVIDO]

Pedro
px

(usa Debian)

Enviado em 08/08/2014 - 10:24h

brunnus escreveu:

px escreveu:

Então agora que esta tudo certo você pode implementar um Squid (caso queira) ou ir configurando as portas que quer que sejam liberadas e bloqueadas pelo script mesmo, ai na FORWARD por exemplo que se daria esta modificação, por exemplo:

iptables -t filter -A FORWARD -i eth1 -o eth0 -m multiport 21,22,23,25,53,80,110,443 -j ACCEPT

Essa regrinha iria permitir os serviços de FTP,SSH,TELNET,EMAIL,DNS,HTTP,SMPT,HTTPS funcionarem, o resto seria dropado pela sua regra padrão de FORWARD que é drop.

Aconselho a listar somente a faixa de rede local para usar a net, tipo:

iptables -t filter -A FORWARD -i eth1 -o eth0 -p tcp -m multiport 21,22,23,25,53,80,110,443 -s 127.0.0.1/24 -j ACCEPT

Caso contrário qualquer PC poderia usar o seu para redirecionar pacotes para todo tipo de lugar, deixando um "buraco" em seu firewall.

Ai você muda o 127.0.0.1/24 pela sua faixa de rede correspondente, e caso queira adicione mais portas na regra acima para liberar conexões entre outros serviços... também não se esqueça de mudar a faixa de rede ali.


Interessante px, eu estava tentando fazer todas as liberações no INPUT (http,dns etc), já que minha política de OUTPUT é ACCEPT, aí eu entendia que liberando o INPUT para essa porta ela saía pelo OUTPUT acessando a internet.

Mesmo sabendo que o input é para entrada de pacotes e forward é para fazer os pacotes passarem direto, como eu sei qual chain usar para liberar ou bloquear determinados pacotes?


Cara tinha um erro ali, eu me esqueci do --dport mais já editei e coloquei lá.

A INPUT E OUTPUT servem para entrada e saída na mesma máquina, agora a FORWARD é uma chain de roteamento de pacotes, ou seja, ela é tipo uma INPUT e OUTPUT juntas que comandam o tráfego entre máquinas, para essas passarem pelo firewall (caso as INPUT e OUTPUT da máquina (firewall) também estejam abertas, claro).


10. Re: Conceito básico de entrada e saída [RESOLVIDO]

Bruno L. Santos
brunnus

(usa Ubuntu)

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

Cara, estou a realizar vários testes aqui e agora está tudo funcionando redondinho bloqueando e liberando o que preciso na mais perfeita harmonia...

Realmente meu erro estava em pensar que deveria liberar os serviços 80, 3128, 53, 443 tudo no INPUT acreditando que acessaria a internet devido a política OUTPUT estar em ACCEPT.

Achava que entrando no servidor o próprio firewall já mandava pra internet pelo OUTPUT...


Obrigado mais uma vez pela atenção e os esclarecimentos px.


11. Re: Conceito básico de entrada e saída [RESOLVIDO]

Pedro
px

(usa Debian)

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

brunnus escreveu:

Cara, estou a realizar vários testes aqui e agora está tudo funcionando redondinho bloqueando e liberando o que preciso na mais perfeita harmonia...

Realmente meu erro estava em pensar que deveria liberar os serviços 80, 3128, 53, 443 tudo no INPUT acreditando que acessaria a internet devido a política OUTPUT estar em ACCEPT.

Achava que entrando no servidor o próprio firewall já mandava pra internet pelo OUTPUT...


Obrigado mais uma vez pela atenção e os esclarecimentos px.


Tranquilo, estamos ai para isto. Se esclareceu as dúvidas feche o tópico e marque uma melhor resposta para ajudar outros que consultem esse tópico também, abraço.






Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts