iptables regras para bloquear portas remetidas remotas ssh

2

Estou tentando configurar uma regra iptables que bloqueará o acesso a conexões remetidas remotas ssh via conexões remotas locais remotas ssh. Então, IOW:

Client A connects to server:
ssh -R 10000:localhost:23 someserver

Client B connects to server:
ssh -L 23:localhost:10000 someserver

Não consigo fazer com que o iptables bloqueie isso. Eu preciso do redirecionamento em alguns casos que as configurações do sshd_config não podem cobrir (eu terei um programa distribuindo especificamente a porta que um cliente pode encaminhar, e esperamos que o programa então adicione uma regra iptables para permitir isso).

Eu tentei:

iptables --flush

iptables -A INPUT -i lo -p tcp --dport 0:1024 -j ACCEPT
iptables -A OUTPUT -o lo -p tcp --dport 0:1024 -j ACCEPT
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP

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

iptables -A INPUT -p tcp --dport 22 -m state --state NEW -j ACCEPT

Mas ainda permite que conexões redirecionadas locais ssh acessem a porta encaminhada remota. Alguma idéia de como fazer para o iptables lidar com isso?

EDIT: Tentei mudar para:

 
iptables --flush
iptables --policy INPUT DROP 
iptables --policy OUTPUT DROP 

iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT 
iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT 
iptables -A OUTPUT -o eth1 -p tcp --sport 22 -j ACCEPT 
iptables -A INPUT -j REJECT 

Ainda posso fazer as conexões encaminhadas. Então, aparentemente, não foi bem assim. Thanx pela resposta embora. Você tem outras idéias para mim?

    
por Oliver Nelson 31.08.2009 / 02:17

4 respostas

2

Descobri isso. Meu conjunto de regras original bloqueou tudo muito bem. O problema era que neste servidor, localhost resolve (via / etc / hosts) para :: 1 (o loopback IPv6) primeiro. Essas regras não funcionaram por causa disso. Depois que eu removi essa entrada do meu arquivo / etc / hosts, consegui que tudo funcionasse bem. Meu script de teste é assim:

#!/bin/bash
iptables --flush

iptables -A INPUT -i lo -p tcp --dport 0:1024 -j ACCEPT
iptables -A OUTPUT -o lo -p tcp --dport 0:1024 -j ACCEPT
iptables --policy INPUT DROP
iptables --policy OUTPUT DROP
iptables --policy FORWARD DROP

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

iptables -A INPUT -i eth1 -p tcp --dport 22 -j ACCEPT
iptables -A INPUT -j REJECT

#iptables -I INPUT 1 -i lo -p tcp --dport 10001 -m state --state NEW,ESTABLISHED -j ACCEPT
#iptables -I OUTPUT 1 -o lo -p tcp --dport 10001 -m state --state NEW,ESTABLISHED -j ACCEPT

Com as duas últimas linhas ativadas, posso abrir uma conexão de encaminhamento local ssh na porta 10001. Com elas desativadas, não consigo. Perfeito!

    
por 31.08.2009 / 05:21
4

Não seria mais fácil desativar o encaminhamento ssh no servidor ssh? Apenas mude AllowTcpForwarding de yes para no em seu / etc / ssh / sshd_config. Se isso não combina, você pode tentar algo nos moldes de

iptables -A OUTPUT -o eth1 -p tcp --cmd-owner "sshd" -j DROP
    
por 31.08.2009 / 04:23
0

As conexões encaminhadas serão originadas do sistema local. Você precisaria remover a regra abaixo que permite conexões de saída e, se necessário, substituí-la por algumas regras que permitem apenas conexões de saída que você permite explicitamente.

iptables -A OUTPUT -m state --state NEW,ESTABLISHED,RELATED -j ACCEPT
    
por 31.08.2009 / 03:19
0

Por favor, leve em consideração que no lugar de "localhost" pode ser usado:

  • qualquer endereço de loopback 127.x.x.x
  • endereço de qualquer interface de rede no servidor

e você também não escreveu nada sobre o cliente B tentando se conectar diretamente ao clientA:

ssh -L 23:clientA:80 someserver (I chose port 80 b/c maybe your firewall allows it outbound)

Sinto muito, com todas essas opções (e mais) disponíveis, junto com seu conhecimento básico do iptables, é muito provável que você deixe brechas na sua configuração. Se algo realmente valioso está em jogo, sugiro perguntar a alguém que sabe fazer tudo.

    
por 21.12.2009 / 00:01