Para navegação quando levanto o firewall [RESOLVIDO]

13. Pesquisas e Testes realizados

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 16/09/2014 - 16:24h

souzacarlos escreveu:

iptables -A OUTPUT -m state --state RELATED,ESTABLISHED -j ACCEPT # Essa linha nãp precisa

iptables -A OUTPUT -p icmp --icmp-type 8 -o $IFACE_WEB -j ACCEPT # Essa linha nãp precisa


iptables -A OUTPUT -p tcp -m multiport --dports $PORTAS_TCP -j ACCEPT # Essa linha nãp precisa

iptables -A OUTPUT -p icmp --icmp-type 8 -j ACCEPT # Se sua ideia era habilitar o ping tá errado, lembre que vc precisa permitir que outros tentam um request no teu servidor!

Vc defiviu OUTPUT -j ACCEPT então não precisa definir nada em ACCEPT (para OUTPUT)

iptables -A INPUT -p tcp --dport 22 -j ACCEPT # Você vai precisar de acesso SSH da internet? Recomendo vc fazer um nat para alguma máquina interna e só então acessar o SSH de dentro da sua rede

iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Você está dando tiro no pé, dá uma olhada depois no que essa regra pode fazer!!!

iptables -A FORWARD -p tcp -m multiport --dports $PORTAS_REDE_INTERNA -j ACCEPT # Olha a brexa de segurança pra sua rede interna, vai que um usuário resolve subir um serviço dentro da tua rede!!!


Grande souzacarlos, ainda te alugando, olha só consegui colocar o script abaixo para funcionar fiz as mudanças e pesquisei sobre a linha:
# Protecao contra ping da morte
# -------------------------------------------------------
#iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

E realmente vi que não tinha sentido mesmo por que esta regra libera somente 1 pacote syn p/s, independente da origem, já que o atacante prcisa apenas de 1 pacote / seg. já é o suficiente (tiro no pé, e aprendizagem crescendo). Agora vamos lá para o script

- Não consegui liberar o ping da rede interna para a externa, apesar de como vc vai ver fiz vários testes, apenas deu certo conforme suas dicas:

1 - Liberar o acesso ssh apenas para a rede interna
2 - Liberar o ping da rede interna para o proxy
3 - navegação ficou blz 100% testado e retestado estes dias..
4 - Fazer o nat apenas para a rede interna definida.

Só + uma dúvida quando libero a prota 3128 na regra abaixo, eu não estou disponbilizando para rede interna + também para acessos externos (poderão utilizar meu proxy? externamente)?

########################## inicio do script com as alterações##########

#!/bin/bash

# A linha acima e conhecida como shebang e server para chamar o interpretador do script
# poderia-se trocar o bash pelo sh ou outro shell de sua preferencia

########################################################
# EXEMPLO DE SCRIPT DE FIREWALL PARA ARTIGO NO SITE www.vivaolinux.com.br
# CRIADO POR phrich
# Data da ultima alteracao: 09/09/2014
# ######################################################

###########################
# DECLARANDO AS VARIAVEIS #
###########################
# Interface de rede ligada a internet
IFACE_WEB="eth2"

########## Interface de rede ligada a rede interna
IFACE_REDE="eth1"
########## Rede interna
REDE_INTERNA="10.10.20.0/24"
########## Portas liberadas TCP
PORTAS_TCP="53,443"
########## Portas liberadas UDP
PORTAS_UDP="53"
########## Portas liberadas para a rede interna
PORTAS_REDE_INTERNA="807"

#++++++++++++++++++++++++++++#
# LIMPA AS REGRAS EXISTENTES #
#++++++++++++++++++++++++++++#
# Limpa as regras da tabela filter
iptables -F

# Limpa as regras da tabela nat
iptables -t nat -F

# DEFINE AS POLTICAS PADRAOS DO IPTABLES COMO DROP #
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD DROP

# HABILITA O ROTEAMENTO NO KERNEL #
echo 1 > /proc/sys/net/ipv4/ip_forward

# CRIA A IDA E VOLTA DO ACESSO NAS CHAINS INPUT, OUTPUT E FORWARD, ASSIM NAO PRECISAMOS CRIAR A IDA E VOLTA NAS REGRAS
# NAO vamos nos aprofundar neste assunto, mas vale a pena dar uma estudada no modulo state ;-)
iptables -A INPUT -m state --state RELATED,ESTABLISHED -j ACCEPT
iptables -A FORWARD -m state --state RELATED,ESTABLISHED -j ACCEPT

# Protecao contra ping da morte - VAI SER RETIRADO SEM UTILIDADE
# -------------------------------------------------------
#iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT

############## TENTATIVAS PARA LIBERAR O PING da rede interna para a externa############################
iptables -A INPUT -i $IFACE_WEB -p icmp -j ACCEPT

# ICMP
iptables -A FORWARD -i $IFACE_REDE -p icmp -s 10.10.20.0/24 -d 0/0 -j ACCEPT

# DNS
iptables -A FORWARD -i $IFACE_REDE -p udp -s 10.10.20.0/24 -d 0/0 --dport 53 -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT

iptables -A FORWARD -i $IFACE_REDE -p tcp --dport 53 -j ACCEPT
iptables -A FORWARD -i $IFACE_REDE -p udp --dport 53 -j ACCEPT

#################
# REGRAS DE NAT #
#################
# COMPARTILHA A INTERNET #
iptables -t nat -A POSTROUTING -o $REDE_INTERNA -o $IFACE_WEB -j MASQUERADE

###################
# REGRAS DE INPUT #
###################
# Libera o acesso SSH de qualquer origem -- DESATIVADO
#iptables -A INPUT -p tcp --dport 22 -j ACCEPT
# Libera o acesso SSH apenas da rede interna - FUNCIONANDO
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 807 -j ACCEPT

# Libera o squid
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT

iptables -A INPUT -p tcp --dport 8081 -j ACCEPT

#Liberando o Ping para dos clientes internos para o Srv Proxy - Funcionando
iptables -A INPUT -s 10.10.20.0/24 -p icmp --icmp-type 8 -j ACCEPT

### tentado ainda liberar ping para a rede externa
iptables -A INPUT -p icmp --icmp-type echo-request -j ACCEPT

####################
# REGRAS DE OUTPUT #
####################

#Aceita ping apenas da rede interna NAO FUNCIONOU NAO
iptables -A OUTPUT -p icmp --icmp-type 8 -d $IFACE_WEB -j ACCEPT

# Libera as portas constantes na variavel $PORTAS_TCP (para liberar mais portas, basta inserir as mesmas na variavel citada)
iptables -A OUTPUT -p tcp -m multiport --dports -i $PORTAS_TCP -j ACCEPT

################# Libera ping para qualquer lugar NAO FUNCIONOU
#iptables -A OUTPUT -p icmp -p icmp --icmp-type 8 -j ACCEPT
iptables -A OUTPUT -p icmp --icmp-type echo-request -j ACCEPT
#####################
# REGRAS DE FORWARD #
#####################
#TENTATIVA DE LIBERAR O PING
iptables -A FORWARD -s 10.10.20.0/24 -p icmp --icmp-type 8 -j ACCEPT



# Libera RDP citado na regra de NAT
#iptables -A FORWARD -p tcp --dport 3389 -d 10.0.0.2 -j ACCEPT
#################Final do script - Firewall############

Desculpa o aluguel ai... agradeço a ajuda que está sendo graande..





  


14. Liberar 443 (hhtps)

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 18/09/2014 - 10:58h

souzacarlos escreveu:

Boa tarde.

# Protecao contra ping da morte - VAI SER RETIRADO SEM UTILIDADE
# -------------------------------------------------------
#iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Não que seja sem utilidade, está mal implementado dá uma olhada nisso e analisa principalmente o --limit-burst: ( Isso é só um caso para uma necessidade ).

iptables -A INPUT -p icmp --icmp-type echo-request -j PING-MORTE # Lembrar que tem que ser criada a Chain PING-MORTE
iptables -A PING-MORTE -m limit --limit 20/s --limit-burst 4 -j RETURN
iptables -A PING-MORTE -j DROP


Com relação ao PING para redes externas tenta isso:

iptables -A FORWARD -p icmp --icmp-type 8 -s $REDE_LOCAL -j ACCEPT # Lembrar que a variável $REDE_LOCAL faz referencia a faixa de rede local sua, agora vc pode ser mais específico quando tratar de requisições internas ex: máquinas locais precisam apenas saber acessar o proxy ele que tem q conversar com outras máquinas na internet, caso seja preciso vc pode fazer liberações mais específicas.


# Libera o acesso SSH apenas da rede interna - FUNCIONANDO
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 807 -j ACCEPT # Recomendo usar uma --dport acima de 1023


# Libera o squid
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT # Relativo a sua pergunta sobre acesso ao proxy via internet

Neste momento sim está liberado para todos, tenta definir a origem das requisições assim como você na regra do SSH acima entendeu?



Faltou alguma?


Grande Souzacarlos, blz meu amigo a coisa tá dando certo vamos lá:
#####Ping da Morte OK.......OK
iptables -A INPUT -p icmp --icmp-type echo-request -j PING-MORTE # Lembrar que tem que ser criada a Chain PING-MORTE
iptables -A PING-MORTE -m limit --limit 20/s --limit-burst 4 -j RETURN
iptables -A PING-MORTE -j DROP

Blz, criei a chain, PING-MORTE, e até dei uma entendida melhor pois as vezes criava sem saber exatamente a definição e funçaõ da chain, pesquisei e blz.
------------------------------------
# Libera o acesso SSH apenas da rede interna - FUNCIONANDO
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 807 -j ACCEPT # Recomendo usar uma --dport acima de 1023
--------- Ok, já subi a porta e teste funcionando blz.

# Libera o squid
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT # Relativo a sua pergunta sobre acesso ao proxy via internet
Vamos lá fiz o seguinte:
# Libera o squid
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i eth2 -m multiport -p tcp --sport 80,443,8081 -j ACCEPT
iptables -A INPUT -i eth2 -m multiport -p tcp --dport 80,443,8081 -j ACCEPT
funcionou blz.

Os problemas pendentes ainda são:

1 - Não consigo navegar em https - 443
tentei isso:
iptables -A FORWARD -s 10.10.20.0/24 -m multiport -p tcp --dport 80,443 -j ACCEPT
iptables -A FORWARD -d 10.10.20.0/24 -m multiport -p tcp --sport 80,443 -j ACCEPT
e isso:
# Libera as portas 80 e 443 apenas para localhost
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

Mas não navega https, apenas http tá legal.. alguma dica?

Olha em relação a dica:
Com relação ao PING para redes externas tenta isso:

iptables -A FORWARD -p icmp --icmp-type 8 -s $REDE_LOCAL -j ACCEPT # Lembrar que a variável $REDE_LOCAL faz referencia a faixa de rede local sua, agora vc pode ser mais específico quando tratar de requisições internas ex: máquinas locais precisam apenas saber acessar o proxy ele que tem q conversar com outras máquinas na internet, caso seja preciso vc pode fazer liberações mais específicas.

-----Tentei mas não deu certo até consegui liberar o ping da interna para o proxy, e da web para a interface externa, na verdade souzacarlos a minha necessidade em relação ao ping nao é tao crucial, como tenho alguns laboratórios aqui seria apenas para confirmar se o trafego tá blz... se a rede tá ok, se ta alto etc. então se tiver outra dica.
Deixar claro que eu demoro a responder pois as q não vao dando certo eu vou pesquisando antes de vir aqui postar. e também tem uns erros quando carrego o script:
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.14: host/network `eth2' not found


Eu noto que ando faço referencia a interface externa ele naõ reconhece, acontecia também com a interna eth1, só que como agora estou colocando a rede 10.10.20.0/24 então não dá... novamente agradeço a ajuda que está sendo de grande valia.



15. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 18/09/2014 - 16:01h

Depois me manda teu script na íntegra por favor, ou aqui ou no e-mail souzacarlos@outlook.com

Quero dar uma olhada no que está acontecendo.

Abraço.


16. Envio script

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 18/09/2014 - 16:22h

souzacarlos escreveu:

Depois me manda teu script na íntegra por favor, ou aqui ou no e-mail souzacarlos@outlook.com

Quero dar uma olhada no que está acontecendo.

Abraço.


Envie pro email souzacarlos, se não chegou avisa ai. valeu cara. abçs.


17. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 22/09/2014 - 12:59h

arasouza escreveu:

souzacarlos escreveu:

Depois me manda teu script na íntegra por favor, ou aqui ou no e-mail souzacarlos@outlook.com

Quero dar uma olhada no que está acontecendo.

Abraço.


Envie pro email souzacarlos, se não chegou avisa ai. valeu cara. abçs.


#####################

Boa tarde, chegou sim, só não avalie ainda, te respondo ainda essa semana.

Abraço.


18. Erro era as aspas do roteamento

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 22/09/2014 - 15:59h

arasouza escreveu:

souzacarlos escreveu:

Boa tarde.

# Protecao contra ping da morte - VAI SER RETIRADO SEM UTILIDADE
# -------------------------------------------------------
#iptables -A FORWARD -p icmp --icmp-type echo-request -m limit --limit 1/s -j ACCEPT # Não que seja sem utilidade, está mal implementado dá uma olhada nisso e analisa principalmente o --limit-burst: ( Isso é só um caso para uma necessidade ).

iptables -A INPUT -p icmp --icmp-type echo-request -j PING-MORTE # Lembrar que tem que ser criada a Chain PING-MORTE
iptables -A PING-MORTE -m limit --limit 20/s --limit-burst 4 -j RETURN
iptables -A PING-MORTE -j DROP


Com relação ao PING para redes externas tenta isso:

iptables -A FORWARD -p icmp --icmp-type 8 -s $REDE_LOCAL -j ACCEPT # Lembrar que a variável $REDE_LOCAL faz referencia a faixa de rede local sua, agora vc pode ser mais específico quando tratar de requisições internas ex: máquinas locais precisam apenas saber acessar o proxy ele que tem q conversar com outras máquinas na internet, caso seja preciso vc pode fazer liberações mais específicas.


# Libera o acesso SSH apenas da rede interna - FUNCIONANDO
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 807 -j ACCEPT # Recomendo usar uma --dport acima de 1023


# Libera o squid
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT # Relativo a sua pergunta sobre acesso ao proxy via internet

Neste momento sim está liberado para todos, tenta definir a origem das requisições assim como você na regra do SSH acima entendeu?



Faltou alguma?


Grande Souzacarlos, blz meu amigo a coisa tá dando certo vamos lá:
#####Ping da Morte OK.......OK
iptables -A INPUT -p icmp --icmp-type echo-request -j PING-MORTE # Lembrar que tem que ser criada a Chain PING-MORTE
iptables -A PING-MORTE -m limit --limit 20/s --limit-burst 4 -j RETURN
iptables -A PING-MORTE -j DROP

Blz, criei a chain, PING-MORTE, e até dei uma entendida melhor pois as vezes criava sem saber exatamente a definição e funçaõ da chain, pesquisei e blz.
------------------------------------
# Libera o acesso SSH apenas da rede interna - FUNCIONANDO
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 807 -j ACCEPT # Recomendo usar uma --dport acima de 1023
--------- Ok, já subi a porta e teste funcionando blz.

# Libera o squid
iptables -A INPUT -p tcp --dport 3128 -j ACCEPT # Relativo a sua pergunta sobre acesso ao proxy via internet
Vamos lá fiz o seguinte:
# Libera o squid
iptables -A INPUT -s 10.10.20.0/24 -p tcp --dport 3128 -j ACCEPT
iptables -A INPUT -i eth2 -m multiport -p tcp --sport 80,443,8081 -j ACCEPT
iptables -A INPUT -i eth2 -m multiport -p tcp --dport 80,443,8081 -j ACCEPT
funcionou blz.

Os problemas pendentes ainda são:

1 - Não consigo navegar em https - 443
tentei isso:
iptables -A FORWARD -s 10.10.20.0/24 -m multiport -p tcp --dport 80,443 -j ACCEPT
iptables -A FORWARD -d 10.10.20.0/24 -m multiport -p tcp --sport 80,443 -j ACCEPT
e isso:
# Libera as portas 80 e 443 apenas para localhost
iptables -A OUTPUT -p tcp -m multiport --dports 80,443 -j ACCEPT

Mas não navega https, apenas http tá legal.. alguma dica?

Olha em relação a dica:
Com relação ao PING para redes externas tenta isso:

iptables -A FORWARD -p icmp --icmp-type 8 -s $REDE_LOCAL -j ACCEPT # Lembrar que a variável $REDE_LOCAL faz referencia a faixa de rede local sua, agora vc pode ser mais específico quando tratar de requisições internas ex: máquinas locais precisam apenas saber acessar o proxy ele que tem q conversar com outras máquinas na internet, caso seja preciso vc pode fazer liberações mais específicas.

-----Tentei mas não deu certo até consegui liberar o ping da interna para o proxy, e da web para a interface externa, na verdade souzacarlos a minha necessidade em relação ao ping nao é tao crucial, como tenho alguns laboratórios aqui seria apenas para confirmar se o trafego tá blz... se a rede tá ok, se ta alto etc. então se tiver outra dica.
Deixar claro que eu demoro a responder pois as q não vao dando certo eu vou pesquisando antes de vir aqui postar. e também tem uns erros quando carrego o script:
Try `iptables -h' or 'iptables --help' for more information.
iptables v1.4.14: host/network `eth2' not found


Eu noto que ando faço referencia a interface externa ele naõ reconhece, acontecia também com a interna eth1, só que como agora estou colocando a rede 10.10.20.0/24 então não dá... novamente agradeço a ajuda que está sendo de grande valia.


Grande souzacarlos... cara esse fim de semana, verifique linha por linha, caracter por caracter e ai descobri o problema q esta faltando olha só:
###########################
Errado:
# HABILITA O ROTEAMENTO NO KERNEL #
echo 1 > /proc/sys/net/ipv4/ip_forward

Certo:
# HABILITA O ROTEAMENTO NO KERNEL #
echo "1" > /proc/sys/net/ipv4/ip_forward
Era a m.... das " " aspas, foi só colocar e blz.... mas tranquilo serviu para que eu finalmente estudasse um pouco mais afundo iptables, entender o basico para montar um firewall, sem saber o q estava fazendo. claro q sem a sua ajuda isso não teria rolado cara. muito obrigado mesmo, vc contribuiu bastante pois ñ deu o leite me fazendo pesquisar, mas direcionando para os pontos com problema, até o ping eu resolvi... rs rs... só vou refinar ele ainda mais um pouco mais vou marcar aqui como resolvido pois o foco principal está ok, a solução para a navegação, 443 ñ estava ocorrendo pois sem o roteamento ativada, ele forçava ir pelo proxy já que estava configurado no navegador, então ñ rolava. foi só colocar as aspas "1", q deu tudo certo.. valeu souzacarlos e também a dica do kyetoy, q foi útil para a resolução já q eu dei uma olhada também.







19. Re: Para navegação quando levanto o firewall [RESOLVIDO]

Carlos Alberto de Souza Barbosa
souzacarlos

(usa Outra)

Enviado em 22/09/2014 - 16:34h

Opa, valeu então, não esqueci de marcar como melhor resposta pq ai ganho uns pontinhos!!!

Abraço.


20. Finalizar

André Romero Alves de Souza
arasouza

(usa Debian)

Enviado em 22/09/2014 - 19:30h

souzacarlos escreveu:

Opa, valeu então, não esqueci de marcar como melhor resposta pq ai ganho uns pontinhos!!!

Abraço.


Claro, Claro, tô voltando só para marcar na hora tv dando erro... valeu msm.



01 02



Patrocínio

Site hospedado pelo provedor RedeHost.
Linux banner

Destaques

Artigos

Dicas

Tópicos

Top 10 do mês

Scripts