Configuração do firewall / gateway do Rackspace

5

Eu tenho uma conta rackspace e desejo ter esse tipo de configuração:

Firewall / gateway

eth0 - IP público (56.X.X.X)

eth1 - IP privado (10.X.X.X)

Ubuntu 10.10. Aceita conexões da Internet e encaminha a porta 80 para o node1 (10.x.x.x)

node1

eth0 - desativado IP público (56.X.X.X)

eth1 - IP privado (10.X.X.X)

Ubuntu 10.10. Este servidor é o servidor da web.

Pergunta:

Eu pesquisei várias vezes sobre como conseguir isso e não tenho certeza dos passos que preciso dar. A Rackspace fornece esses IPs para mim, eu não controlo (neste ponto) quais são os IPs para esses nós, mas cada um deles tem um IP Público em eth0 e IP Privado em eth1.

Como posso encaminhar com sucesso as solicitações da porta 80 do Firewall / Gateway para node1 ?

Aqui estão minhas configurações do iptables

# Generated by iptables-save v1.4.4 on Fri Jun 17 18:09:39 2011
*nat
:PREROUTING ACCEPT [0:0]
:OUTPUT ACCEPT [1:452]
:POSTROUTING ACCEPT [1:452]
-A PREROUTING -i eth0 -p tcp -m tcp --dport 80 -j DNAT --to-destination 10.182.33.191:80 
COMMIT
# Completed on Fri Jun 17 18:09:39 2011
# Generated by iptables-save v1.4.4 on Fri Jun 17 18:09:39 2011
*filter
:INPUT ACCEPT [154:11452]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [81:9672]
-A INPUT -i eth0 -p tcp -m state --state NEW -m tcp --dport 80 -j ACCEPT 
COMMIT
# Completed on Fri Jun 17 18:09:39 2011
    
por ehftwelve 17.06.2011 / 20:19

1 resposta

2

Parece que você está perdendo um disfarce na tabela POSTROUTING dos roteadores!

Esta é uma versão muito simplificada das minhas próprias regras de encaminhamento no meu ASEE EEEPC atuando como roteador para minhas redes com e sem fio. Não garantirei que isso funcionará, porque o editei on-line aqui, mas espero que ajude. Um conjunto perfeito de regras é uma coisa muito complicada e individual! Meu iptables contém cerca de 25.000 regras variáveis, principalmente para parar o spam na porta 25 de países indesejados durante períodos de pico.

Existem muito mais regras que você deve adicionar para manter o tráfego reduzido ao necessário. Bloqueie o tráfego de saída também, como broadcasts, dhcp, mDNS, etc. O mDNS na porta 5353 é um grande transgressor. A execução do tcpdump na rede interna de um provedor faz você se perguntar como na Terra qualquer tráfego real tem espaço para se mover!

Eu adicionei uma regra para parar de irritar ataques de ssh brute também ...: -)

Adicione uma regra para o endereço IP inicial para substituir todas as outras caso você tenha visto o ramo em que está sentado, mas ao fazer alterações, é melhor tentar um teste cronometrado e retornar a uma configuração funcional após 5 segundos, por exemplo :

# ./testfirewall.sh; sleep 10;./firewall.sh

Oh, o roteador:

#!/bin/sh
IPT=/usr/sbin/iptables;
EXTIF=eth0;
INTIF=eth1;
EXTADDR=56.X.X.X;
NODEADDR=10.182.33.191;
HI_PORTS=1024:65535

$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT  DROP
$IPT -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD DROP

# useful limit ssh attempts
$IPT -N SSH_Brute_Force
$IPT -A SSH_Brute_Force -m recent ! --rcheck --seconds 60 --hitcount 2 --rttl --name SSH -j RETURN
$IPT -A SSH_Brute_Force -j LOG --log-prefix "SSH Scan Reject: "
$IPT -A SSH_Brute_Force -j DROP


# dnat
$IPT -t nat    -A PREROUTING -i $EXTIF -p tcp -d $EXTADDR --sport $HI_PORTS --dport 80 -j DNAT --to-destination $NODEADDR:80

# forward only established connections
$IPT -t filter -A FORWARD -m state --state ESTABLISHED,RELATED -j ACCEPT

# antispoof
$IPT -t filter -A FORWARD -i $EXTIF -s $EXTADDR -j DROP
$IPT -t filter -A FORWARD -i $EXTIF -s 127.0.0.1 -j DROP
# forward new connections to node1 on port 80
$IPT -t filter -A FORWARD -i $EXTIF -o $INTIF -p tcp -d $NODEADDR -m state --state NEW --sport $HI_PORTS --dport 80 -j ACCEPT

# forward all outgoing connections from node1 (need more rules to prevent broadcasts/leakage/bogons/igmp/some icmps etc in and out)
$IPT -t filter -A FORWARD -i $INTIF -o $EXTIF -j ACCEPT

# this appeared to be missing
$IPT -t nat    -A POSTROUTING -o $EXTIF -s $NODEADDR -d 0/0 -j MASQUERADE

$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT  -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --dport 22 -m recent --set --name SSH -j SSH_Brute_Force
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 22 -j ACCEPT
#need to add this if you are sending mail
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m tcp --dport 113 -j REJECT --reject-with tcp-reset

No nó, as entradas já devem estar limpas:

#!/bin/sh
IPT=/usr/sbin/iptables;
EXTIF=eth0;
INTIF=eth1;
EXTADDR=56.X.X.X;
NODEADDR=10.182.33.191;
HI_PORTS=1024:65535

$IPT -F
$IPT -X
$IPT -t nat -F
$IPT -t nat -X
$IPT -t nat -P PREROUTING ACCEPT
$IPT -t nat -P POSTROUTING ACCEPT
$IPT -t nat -P OUTPUT ACCEPT
$IPT -t mangle -F
$IPT -t mangle -X
$IPT -P INPUT  DROP
$IPT -P OUTPUT ACCEPT
$IPT -t filter -P FORWARD DROP

# useful limit ssh attempts
$IPT -N SSH_Brute_Force
$IPT -A SSH_Brute_Force -m recent ! --rcheck --seconds 60 --hitcount 2 --rttl --name SSH -j RETURN
$IPT -A SSH_Brute_Force -j LOG --log-prefix "SSH Scan Reject: "
$IPT -A SSH_Brute_Force -j DROP

$IPT -t filter -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
$IPT -t filter -A INPUT -i lo -j ACCEPT
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 80 -j ACCEPT
$IPT -t filter -A INPUT  -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --dport 22 -m recent --set --name SSH -j SSH_Brute_Force
$IPT -t filter -A INPUT -i $EXTIF -p tcp -m state --state NEW -m tcp -d $NODEADDR --sport $HI_PORTS --dport 22 -j ACCEPT

final

    
por 24.07.2011 / 20:48