Equivalente baseado em firewall para tunelamento SSH

2

Eu tenho um servidor da Web que se conecta a um servidor de banco de dados de terceiros e recebe permissão para fazê-lo por meio de uma regra de firewall no servidor de banco de dados.

Quando estou desenvolvendo localmente em meu laptop, eu uso um túnel SSH para conectar ao servidor de banco de dados através do servidor web.

ssh web.server.com -L 5678:database.server.com:1234

O que eu gostaria de fazer, se é mesmo possível, é configurar uma regra de firewall no servidor da Web que essencialmente realiza a mesma coisa persistentemente.

Portanto, conectar-se a web.server.com:5678 encaminha minha conexão para database.server.com:1234 e o servidor de banco de dados permite a conexão como ela vem do servidor da Web.

O problema é que não tenho certeza de onde devo começar a procurar maneiras de fazer isso.

Estou executando o Shorewall 3.2.6 no servidor da web para configurar meu firewall.

Eu preciso começar com uma VPN ou isso pode ser feito sem uma?

    
por scottatron 29.04.2011 / 07:40

3 respostas

1

Usando o Shorewall, você está procurando uma regra DNAT (a documentação on-line é excelente, vá lá). Você vai acabar com algo parecido com

DNAT net loc:192.168.1.3:1234 tcp 5678

no seu arquivo de regras, onde 192.168.1.3 é o endereço IP do seu servidor de banco de dados. Talvez seja necessário ativar a opção routeback se a conexão de entrada e a conexão do seu servidor da Web com o servidor de banco de dados estiverem no mesmo NIC.

No entanto, eu recomendo vivamente que não faça isso! Isso abre seu servidor de banco de dados para literalmente qualquer pessoa, explicitamente concedendo acesso a se mascarar como seu servidor web e negando qualquer habilidade para o servidor de banco de dados para o próprio firewall. Além disso, tudo o que você fizer nessa conexão não será criptografado, incluindo o seu nome de usuário e senha do servidor de banco de dados! Então, não faça isso! Seu túnel SSH fornece autenticação e criptografia, que este encaminhamento de porta não faria.

Além disso, por que você está usando uma versão antiga do Shorewall? Eu tenho usado o Shorewall por anos , e quando eu iniciei a versão 3 estava obsoleta! Você deveria pelo menos estar no 4.0 agora, ou melhor ainda 4.2 ou 4.4. Manter o seu software de segurança atualizado é absolutamente essencial!

    
por 29.04.2011 / 19:26
0

Eu acho que você pode conseguir o que você quer com algo assim (não testado, apenas a partir da memória e provavelmente não vai funcionar, mas pode dar-lhe algumas dicas para começar). No servidor da Web, tente:

iptables -t nat -I PREROUTING -p tcp --dport 5678 -j REDIRECT --to-port 1234
iptables -t nat -A PREROUTING -p tcp --dport 1234 -j DNAT --to-destination database.server.com 

A menos que você tenha seu servidor de banco de dados diretamente inacessível do seu roteador, você pode fazer o mesmo mapeando as portas correspondentes diretamente no seu roteador.

No entanto na minha opinião você ainda deve usar o seu túnel ssh porque suas vantagens:

1) a conexão requer autenticação que é boa 2) o tráfego é criptografado 3) você pode ajustar sua conexão sempre que desejar com o ssh (adicionando compressão, adicionando mais portas ao tunel, adicionando socks5 bindings, etc ...

    
por 29.04.2011 / 08:34
0

Se você não quiser manter o túnel ssh, você pode configurar uma VPN criptografada automática como o openvpn para fazer o mesmo. Isso manteria seu servidor mais protegido.

    
por 29.04.2011 / 20:24