Redirecionando para portas alternativas

1

Estou tentando um pouco de segurança pela obscuridade aqui e quero fazer o seguinte para vários serviços (ou seja, MySQL):

  • Permitir que os serviços sejam executados definitivamente no host local em sua porta padrão
  • Bloqueie o acesso remoto à porta padrão nas interfaces públicas
  • Permitir acesso remoto aos serviços por meio de uma porta alternativa (por exemplo, 53306 para MySQL) por causa de alguns clientes

Eu tentei usar iptables e REDIRECT ou DNAT através de várias combinações sem sucesso, e usar túneis SSH é muito técnico para os clientes.

Qualquer ajuda seria apreciada!

    
por priestjim 24.01.2011 / 10:09

3 respostas

1

Eu finalmente percebi isso. Para qualquer um que possa se importar, eis o que fiz (observe que essa não é uma configuração de firewall completa, mas apenas as linhas necessárias para alcançar o que está descrito no OP):

  • Marque todos os pacotes que passarem pelo alvo do mangle destinado à porta 33306 (substitua sua porta alternativa aqui e seu número de marca, se desejar)

    iptables -t mangle -A PREROUTING! -i lo -p tcp -m tcp --dportar 33306 -j MARK --set-mark 96

  • Redirecionar os pacotes para sua porta legítima no destino nat

    iptables -t nat -A PREROUTING! -i-lo tpp -m tcp --dport 33306 -j REDIRECIONAR - para porta 3306

  • Permitir em 3306 somente os pacotes que trazem a marca com eles

    iptables -t filter -A ENTRADA -m estado - estado RELACIONADO, ESTABELECIDO -j ACEITAR
    iptables -t filter -A ENTRADA -i lo -j ACCEPT
    iptables -t filter -A INPUT! -i-tcp -p tcp --dport 3306 -m mark --mark 96 -j ACCEPT
    iptables -t filter -A INPUT! -i-lo -m tcp -p tcp --dportar 3306 -j DROP

por 25.01.2011 / 15:23
2

Você pode tentar as seguintes regras.

iptables -A INPUT -i eth0 -p tcp --dport 3306 -j DROP
iptables -A INPUT -i lo -j ACCEPT
iptables -A INPUT -i eth0 -p tcp --dport 53306 -j ACCEPT
iptables -t nat -A PREROUTING -p tcp -m tcp --dport 53306 -j DNAT --to-destination :3306

Assumindo que eth0 é a interface pública. Você poderá acessar a porta mysql localmente usando 127.0.0.1.

EDITAR:

Não se esqueça de permitir o tráfego de saída e os relacionados (após estabelecer a conexão).

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

Por favor, note que você pode precisar personalizar essas regras para suas necessidades. Eu estou apenas tentando ajudar. Se a sua máquina é acessível publicamente sem um firewall de rede, você deve estudar cuidadosamente as regras de firewall.

    
por 24.01.2011 / 10:15
0

Você precisa usar o alvo REDIRECT para isso, já que está enviando o tráfego para outra porta no mesmo servidor. Supondo que o endereço IP do seu servidor seja 192.0.2.100, a sintaxe do comando seria:

iptables -t nat -A PREROUTING -p tcp -m tcp -d 192.0.2.100 --dport 53306 -j REDIRECT --to-ports 3306

Ou você pode fazer isso para todo o tráfego de entrada em uma interface usando o argumento -i em vez do -d com endereço IP.

Você também precisará permitir o tráfego para a porta 3306 na cadeia INPUT:

iptables -A INPUT -p tcp -m tcp --dport 3306 -m state --state NEW -j ACCEPT
    
por 25.01.2011 / 06:20