Autor Tópico: Servidor - dhcp + firewall + proxy  (Lida 34557 vezes)

Offline cpaynes

  • Usuário Ubuntu
  • *
  • Mensagens: 66
    • Ver perfil
Re: Servidor - dhcp + firewall + proxy
« Resposta #30 Online: 04 de Maio de 2012, 21:24 »
Vamos la:

Citar
REDEMASQ=192.168.0.0/24

Aqui não e uma regra, você esta alocando uma variável com o valor da faixa de rede 192.168.0.0 na mascara de rede 255.255.255.0, isso poderá ser utilizado futuramente nas regras do seu firewall, um exemplo seria, iptables -A FORWARD - i PLACAINTERNA -o PLACA EXTERNA -s $REDEMASQ -j ACCEPT, assim você libera o acesso  que passa pelo teu server que entra da rede interna com saída para a externa e que tiver origem da rede que você setou na variável REDEMASQ


Citar
iptables -P FORWARD DROP

Aqui você especifica a politica padrão da cadeia FORWARD como DROP, não sai nada! a partir disso você necessita liberar o que deve sair pelo teu firewall


Citar
iptables -A FORWARD -o eth1 -m state --state NEW,INVALID -j DROP

Aqui você esta dropando os pacotes inválidos que passam pelo teu servidor, remove o NEW, dependendo como esta a politica do teu firewall nada vai sair e adiciona a placa de rede que entra estes pacotes EX:
iptables -A FORWARD -i eth0 -o eth1 -m state --state INVALID -j DROP


Citar
iptables -A FORWARD -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

Aqui você esta garantindo que as conexões que saírem pelo teu firewall tenham o seu retorno garantido, sem precisar criar as regras de retorno para esses pacotes, inclusive os pacotes que tenham alguma relação com estas conexões, também adicione a placa de rede que entra estes pacotes EX:
 
iptables -A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

Citar
iptables -A FORWARD -i eth1 -s $REDEMASQ -j ACCEPT

Aqui segue o primeiro exemplo que te disse  você esta aceitando, todos pacotes que passam pelo teu servidor que possuem origem da rede 192.168...., adiciona a placa de rede que sai estes pacotes EX:

 iptables -A FORWARD -i eth1 -o eth0 -s $REDEMASQ -j ACCEPT



Citar
iptables -A FORWARD -j DROP

Aqui esta dizendo esta dropando todos pacotes que passam pelo teu server, cuidado, pois tudo que estiver liberado na cadeia FORWARD apos esta regra, vai acabar sendo barrada pelo teu firewall, pois lembre-se que ele lê as regras de cima para baixo!

Citar
iptables -A INPUT -j DROP

Aqui esta dropando todos os pacotes que entram no teu firewall


Citar
iptables -A FORWARD -o eth1 -p tcp -m multiport --dports 80,8080 -j ACCEPT

Aqui você libera a porta 80 e 8080 no protocolo tcp, que passam pelo teu server, adiciona a placa de rede que entra estes pacotes EX:
iptables -A FORWARD -i eth1 -o eth1 -p tcp -m multiport --dports 80,8080 -j ACCEPT


Citar
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 445,139 -j ACCEPT

E aqui você esta aceitando conexões provenientes das portas 445,139  no protocolo tcp pela tua interface eth0

Aconselho que você de uma olhada neste link http://www.guiafoca.org/cgs/guia/avancado/ch-fw-iptables.html, tem uma documentação muito boa
« Última modificação: 04 de Maio de 2012, 22:25 por cpaynes »

Offline lucascatani

  • Usuário Ubuntu
  • *
  • Mensagens: 277
    • Ver perfil
    • L9WEB
Re: Servidor - dhcp + firewall + proxy
« Resposta #31 Online: 05 de Maio de 2012, 09:09 »
Muito obrigado cpaynes, excelente explicação, assim como as do zekkerj. Estou usando um script de firewall que achei aqui http://www.vivaolinux.com.br/artigo/Firewall-Proxy-%28solucao-completa%29?pagina=5

mas não consegui entender a função dessas variáveis

Variáveis\
GW="200.x.x.1"
IP_EXT="200.x.x.7"
REDE="10.0.0.0/32"

e da erro nessa regra também (BAD ARGUMENT 0.0.0.0/0)

iptables -t nat -A POSTROUTING -d 0.0.0.0/0 -s $REDE -j SNAT --to $IP_EXT


Se tiver um tempinho de olhar fico grato! Um abraço e bom final de semana!
« Última modificação: 05 de Maio de 2012, 10:25 por lucascatani »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Servidor - dhcp + firewall + proxy
« Resposta #32 Online: 05 de Maio de 2012, 10:34 »
A função das variáveis é pra vc poder ajustar o script pra tua configuração, sem ter que ficar fuçando em cada uma das regras.

Quanto ao erro, é um erro menor, comum: o endereço "0.0.0.0/0" significa "qualquer endereço". Quando vc filtra por "qualquer endereço", é a mesma coisa que "não filtrar". Então toda essa parte "-d 0.0.0.0/0" é desnecessária, basta retirar da linha.

Aliás, se isso aparecer no resto do script ("-d 0.0.0.0/0", "-d 0/0", "-s 0.0.0.0/0" ou "-s 0/0"), pode tirar também.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline lucascatani

  • Usuário Ubuntu
  • *
  • Mensagens: 277
    • Ver perfil
    • L9WEB
Re: Servidor - dhcp + firewall + proxy
« Resposta #33 Online: 05 de Maio de 2012, 12:47 »
A função das variáveis é pra vc poder ajustar o script pra tua configuração, sem ter que ficar fuçando em cada uma das regras.

Quanto ao erro, é um erro menor, comum: o endereço "0.0.0.0/0" significa "qualquer endereço". Quando vc filtra por "qualquer endereço", é a mesma coisa que "não filtrar". Então toda essa parte "-d 0.0.0.0/0" é desnecessária, basta retirar da linha.

Aliás, se isso aparecer no resto do script ("-d 0.0.0.0/0", "-d 0/0", "-s 0.0.0.0/0" ou "-s 0/0"), pode tirar também.

Sim, as variáveis eu uso também, na verdade não entendi o que colocar na variavel IP_EXT ... O que a linha faz? Posso colocar qualquer ip? substituo os x?


Aproveitando...

#Setadas as políticas
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

#liberar samba
iptables -A INPUT -i eth0 -p tcp -m multiport --dports 445,139 -j ACCEPT
iptables -A INPUT -i eth0 -p udp -m multiport --dports 137,138 -j ACCEPT
#liberar ssh
iptables -A INPUT -i eth0 -p tcp --dport 22 -j ACCEPT

#liberar internet para as estacoes
iptables -t nat - A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

A internet fica liberada para as estações, mas não para o próprio servidor. Como eu libero também para o servidor? Abraço!
« Última modificação: 05 de Maio de 2012, 12:53 por lucascatani »

Offline zekkerj

  • Usuário Ubuntu
  • *
  • Mensagens: 19.735
  • Gratidão gera gratidão, lamúria atrai lamúria...
    • Ver perfil
    • Blog do Zekke
Re: Servidor - dhcp + firewall + proxy
« Resposta #34 Online: 05 de Maio de 2012, 13:31 »
IP_EXT parece ser o ip externo da conexão. Seria utilizado no caso de conexão com IP fixo. Mas não dá pra dizer qual seria o impacto de usar esse script numa conexão de IP dinâmico, sem ver o script completo.
Pesquise antes de perguntar, sua dúvida pode já ter sido respondida.
Não respondo dúvidas por MP, coloque sua dúvida no fórum onde ela pode ser pesquisada pelos seus colegas!
Não venha ao fórum apenas para perguntar. Se você sabe a resposta de um problema, porque não ajudar seu colega? ;D

Offline cpaynes

  • Usuário Ubuntu
  • *
  • Mensagens: 66
    • Ver perfil
Re: Servidor - dhcp + firewall + proxy
« Resposta #35 Online: 05 de Maio de 2012, 13:34 »
Vou postar mesmo assim, pois o Zekkerj, postou antes de mim ..

Citar
Sim, as variáveis eu uso também, na verdade não entendi o que colocar na variavel IP_EXT
voce precisa atribuir o endereco da tua interface de saida, deve ser um ip do teu modem ou que lhe foi fornecido pela operadora em caso de planos corporativos.


Citar
A internet fica liberada para as estações, mas não para o próprio servidor. Como eu libero também para o servidor

voce especificou os DNS da tua operadora no teu resolv.conf ?
vi /etc/resolv.conf

EX: DNS: nameserver 8.8.8.8

Citar
# Contra Syn-flood
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT

esta linha esta no teu firewall, isso não protege contra synflood, com isso teu firewall poderá levar você a uma negação de serviço.
da uma olhada neste artigo sobre isto. Um excelente artigo do Elgio!
http://www.vivaolinux.com.br/artigo/Iptables-protege-contra-SYN-FLOOD/
« Última modificação: 05 de Maio de 2012, 13:36 por cpaynes »

Offline lucascatani

  • Usuário Ubuntu
  • *
  • Mensagens: 277
    • Ver perfil
    • L9WEB
Re: Servidor - dhcp + firewall + proxy
« Resposta #36 Online: 05 de Maio de 2012, 13:38 »
IP_EXT parece ser o ip externo da conexão. Seria utilizado no caso de conexão com IP fixo. Mas não dá pra dizer qual seria o impacto de usar esse script numa conexão de IP dinâmico, sem ver o script completo.

Beleza. Vou abandonar aquele script pronto e trabalhar em um do zero.

Offline lucascatani

  • Usuário Ubuntu
  • *
  • Mensagens: 277
    • Ver perfil
    • L9WEB
Re: Servidor - dhcp + firewall + proxy
« Resposta #37 Online: 05 de Maio de 2012, 13:39 »
Vou postar mesmo assim, pois o Zekkerj, postou antes de mim ..

Citar
Sim, as variáveis eu uso também, na verdade não entendi o que colocar na variavel IP_EXT
voce precisa atribuir o endereco da tua interface de saida, deve ser um ip do teu modem ou que lhe foi fornecido pela operadora em caso de planos corporativos.


Citar
A internet fica liberada para as estações, mas não para o próprio servidor. Como eu libero também para o servidor

voce especificou os DNS da tua operadora no teu resolv.conf ?
vi /etc/resolv.conf

EX: DNS: nameserver 8.8.8.8

Citar
# Contra Syn-flood
iptables -A FORWARD -p tcp -m limit --limit 1/s -j ACCEPT

esta linha esta no teu firewall, isso não protege contra synflood, com isso teu firewall poderá levar você a uma negação de serviço.
da uma olhada neste artigo sobre isto. Um excelente artigo do Elgio!
http://www.vivaolinux.com.br/artigo/Iptables-protege-contra-SYN-FLOOD/


está ficando bloqueado por causa do INPUT DROP, gostaria de saber a regra para liberar, se eu colocar iptables -A INPUT ACCEPT funciona... mas quero que pro padrão seja drop...


Segue meu script de firewall do zero, sem os bloqueios contra DOS, etc,

Código: [Selecionar]
#!/bin/bash

INTERNET="eth1"
REDELOCAL="eth0"


modprobe ip_tables
modprobe iptable_nat

# Politica padrao
iptables -P INPUT DROP
iptables -P OUTPUT ACCEPT
iptables -P FORWARD ACCEPT

# Liberando Samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138 -j ACCEPT
# Liberando ssh
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT


# Compartilhando a internet com a REDELOCAL
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward
« Última modificação: 05 de Maio de 2012, 13:44 por lucascatani »

Offline cpaynes

  • Usuário Ubuntu
  • *
  • Mensagens: 66
    • Ver perfil
Re: Servidor - dhcp + firewall + proxy
« Resposta #38 Online: 05 de Maio de 2012, 13:42 »
Citar
está ficando bloqueado por causa do INPUT DROP, gostaria de saber a regra para liberar, se eu colocar iptables -A INPUT ACCEPT funciona... mas quero que pro padrão seja drop...
Inclui isto no teu firewall abaixo da politica padrão
Melhor especificar todas politicas DROP
e ir liberando o que precisa

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


Citar
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138 -j ACCEPT
Transforma isso em uma regra apenas,
#samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138,139,445 -j ACCEPT

« Última modificação: 05 de Maio de 2012, 13:52 por cpaynes »

Offline lucascatani

  • Usuário Ubuntu
  • *
  • Mensagens: 277
    • Ver perfil
    • L9WEB
Re: Servidor - dhcp + firewall + proxy
« Resposta #39 Online: 05 de Maio de 2012, 13:59 »
Citar
está ficando bloqueado por causa do INPUT DROP, gostaria de saber a regra para liberar, se eu colocar iptables -A INPUT ACCEPT funciona... mas quero que pro padrão seja drop...
Inclui isto no teu firewall abaixo da politica padrão
Melhor especificar todas politicas DROP
e ir liberando o que precisa

iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT


Citar
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138 -j ACCEPT
Transforma isso em uma regra apenas,
#samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 137,138,139,445 -j ACCEPT



A do Samba é udp a linha de baixo, erro de digitação..

Com as regras acima a internet não funciona, qual a regra para liberar a navegação, tanto nas estações quanto no servidor?

Te agradeço muito cara, estou aprendendo muito com a ajuda de vocês.

Offline cpaynes

  • Usuário Ubuntu
  • *
  • Mensagens: 66
    • Ver perfil
Re: Servidor - dhcp + firewall + proxy
« Resposta #40 Online: 05 de Maio de 2012, 14:02 »
Nao estao saindo porque voce nao especificou as regras de FORWARD das portas que necessita sair
EX porta 80 HTTP:
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 80 -j ACCEPT

EX porta SSH 22
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT

e assim por diante

Offline lucascatani

  • Usuário Ubuntu
  • *
  • Mensagens: 277
    • Ver perfil
    • L9WEB
Re: Servidor - dhcp + firewall + proxy
« Resposta #41 Online: 05 de Maio de 2012, 14:06 »
Nao estao saindo porque voce nao especificou as regras de FORWARD das portas que necessita sair
EX porta 80 HTTP:
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 80 -j ACCEPT

EX porta SSH 22
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT

e assim por diante

Entendido. Agora eu quero integrar com o squid. Já tenho o squid configurado (meia-boca). Vou optar por colocar nos navegadores o proxy manualmente. Gostaria que não funcionasse nada se o cara não tiver o proxy no navegador.

Alguma luz do que fazer?

Offline cpaynes

  • Usuário Ubuntu
  • *
  • Mensagens: 66
    • Ver perfil
Re: Servidor - dhcp + firewall + proxy
« Resposta #42 Online: 05 de Maio de 2012, 14:11 »
Citar
Agora eu quero integrar com o squid. Já tenho o squid configurado (meia-boca). Vou optar por colocar nos navegadores o proxy manualmente. Gostaria que não funcionasse nada se o cara não tiver o proxy no navegador.
insere esta regra antes dos FORWARD's

iptables -t nat -A PREROUTING -i $REDELOCAL -p tcp --dport 80 -j REDIRECT --to-port 3128

Offline lucascatani

  • Usuário Ubuntu
  • *
  • Mensagens: 277
    • Ver perfil
    • L9WEB
Re: Servidor - dhcp + firewall + proxy
« Resposta #43 Online: 05 de Maio de 2012, 14:16 »
Citar
Agora eu quero integrar com o squid. Já tenho o squid configurado (meia-boca). Vou optar por colocar nos navegadores o proxy manualmente. Gostaria que não funcionasse nada se o cara não tiver o proxy no navegador.
insere esta regra antes dos FORWARD's

iptables -t nat -A PREROUTING -i $REDELOCAL -p tcp --dport 80 -j REDIRECT --to-port 3128


Assim ele vai ficar transparente, eu quero que quem não colocar no navegador o proxy não consiga acessar a internet.


Outra coisa, meu firewall até agora (ainda não libera a internet)
Código: [Selecionar]
#!/bin/bash

INTERNET="eth1"
REDELOCAL="eth0"


modprobe ip_tables
modprobe iptable_nat

# Politica padrao
iptables -P INPUT DROP
iptables -P OUTPUT DROP
iptables -P FORWARD DROP

# Politicas da rede ou pessoais
iptables -A OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# Liberando http e https
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 80 -j ACCEPT
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 8080 -j ACCEPT

# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT

# Liberando Samba
iptables -A INPUT -i $REDELOCAL -p tcp -m multiport --dports 139,445 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p udp -m multiport --dports 137,138 -j ACCEPT
# Liberando ssh
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT


# Compartilhando a internet com a REDELOCAL
iptables -t nat -A POSTROUTING -o eth1 -j MASQUERADE
echo 1 > /proc/sys/net/ipv4/ip_forward

# Liberando a internet no servidor

Uma pergunta besta. Qual a diferenca dessas 2 regras
Código: [Selecionar]
# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
Código: [Selecionar]
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT
 ???

Offline cpaynes

  • Usuário Ubuntu
  • *
  • Mensagens: 66
    • Ver perfil
Re: Servidor - dhcp + firewall + proxy
« Resposta #44 Online: 05 de Maio de 2012, 14:38 »
Citar
Assim ele vai ficar transparente, eu quero que quem não colocar no navegador o proxy não consiga acessar a internet.

Isso você limita no teu proxy com parâmetros de Auth

Citar
# Liberando o ssh
iptables -A FORWARD -i $REDELOCAL -o $INTERNET -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -i $REDELOCAL -p tcp --dport 22 -j ACCEPT

Simples:
Na cadeia FORWARD você especifica as conexoes que passam pelo teu firewall para fora ou para dentro
Na cadeia INPUT você aceita conexões diretamente ao teu host