Como desativar o encaminhamento de porta local do SSH?

19

Eu tenho um servidor rodando Ubuntu e o daemon OpenSSH. Vamos chamar de S1.

Eu uso este servidor de máquinas cliente (vamos chamar um deles C1) para fazer um túnel reverso SSH usando o encaminhamento de porta remota, por exemplo:

ssh -R 1234:localhost:23 login@S1

No S1, eu uso o arquivo sshd_config padrão. Pelo que vejo, qualquer pessoa que tenha as credenciais corretas {login, pwd} no S1 pode efetuar login no S1 e fazer o encaminhamento remoto de portas e encaminhamento de porta local. Tais credenciais podem ser um certificado no futuro, então, no meu entendimento, qualquer pessoa que pegar o certificado pode entrar no S1 de qualquer outro lugar (não necessariamente C1) e, portanto, criar encaminhamentos de porta locais.

Para mim, permitir o encaminhamento de porta local é muito perigoso, pois permite criar algum tipo de proxy público. Eu estou procurando uma maneira de desabilitar somente -L forwardings.

Eu tentei o seguinte, mas isso desativa o encaminhamento local e remoto:

AllowTcpForwarding No

Eu também tentei o seguinte, isso só permitirá que -L para SX: 1. É melhor que nada, mas ainda não é o que eu preciso, o que é uma opção "nenhuma".

PermitOpen SX:1

Então, eu estou querendo saber se existe uma maneira, para que eu possa proibir todos os portais locais para escrever algo como:

PermitOpen none:none

O seguinte é uma boa idéia?

PermitOpen localhost:1
    
por SCO 06.01.2011 / 10:38

5 respostas

12

qualquer pessoa com credenciais de login pode exibir sua própria instância do sshd, sendo executada em uma porta aleatória e permitir o que quiser, incluindo -L encaminhamentos locais:

% /usr/sbin/sshd -d -f mysshd.config -p 12345

Se você não confia que os usuários façam algo com sua máquina, então você não deve permitir que eles façam login.

(btw, o sinalizador -D é também "proxy-problemático")

    
por 06.01.2011 / 10:51
16

Outra solução seria permitir apenas o encaminhamento de porta para usuários específicos:

Do SSH: o guia definitivo

O encaminhamento de porta pode ser ativado ou desativado globalmente no sshd. Isso é feito com a palavra-chave de configuração serverwide AllowTcpForwarding em / etc / sshd_config. A palavra-chave pode ter o valor yes (o padrão, habilitando o encaminhamento) ou no (desabilitando o encaminhamento):

# SSH1, SSH2, OpenSSH
AllowTcpForwarding no

Além disso, o SSH2 tem as seguintes opções:

# SSH2 only
AllowTcpForwardingForUsers
AllowTcpForwardingForGroups

A sintaxe é a mesma das opções AllowUsers e AllowGroups. [Seção 5.5.2.1, "Controle de acesso à conta"] Eles especificam uma lista de usuários ou grupos que podem usar o encaminhamento de porta; o servidor se recusa a honrar as solicitações de encaminhamento de porta para qualquer outra pessoa. Observe que elas se referem à conta de destino da sessão SSH, não ao nome de usuário do cliente (que geralmente não é conhecido).

...

É importante perceber que as diretivas nesta seção não impedem o encaminhamento de portas, a menos que você também desabilite logins interativos e restrinja quais programas podem ser executados no lado remoto. Caso contrário, usuários experientes podem simplesmente executar seu próprio aplicativo de encaminhamento de porta pela sessão SSH. Essas configurações, por si só, podem ser um meio de dissuasão suficiente em uma comunidade não técnica, mas não impedem que alguém saiba o que está fazendo.

    
por 06.01.2011 / 10:59
2

Existe agora uma opção para permitir somente encaminhamento local / remoto.

AllowTcpForwarding Especifica se o encaminhamento de TCP é permitido. As opções disponíveis são "yes" ou "all" para permitir o encaminhamento TCP, "Não" para evitar todo o encaminhamento TCP, “Local” para permitir o encaminhamento local (do ponto de vista do ssh (1)) "remoto" para permitir somente o encaminhamento remoto . O padrão é "sim". Observe que desabilitar o encaminhamento de TCP não melhora a segurança, a menos que os usuários também tenham acesso ao shell negado, já que podem sempre instalar seus próprios encaminhadores.

Então, como já foi dito, você deve definir o shell como nologin também.

    
por 21.10.2014 / 09:40
0

Minha solução para esse problema foi adicionar: PermitOpen fo.local: 80 na seção principal do sshd_config.

Isso simplesmente nega qualquer solicitação de encaminhamento local além de fo.local: 80.

    
por 07.09.2015 / 11:49
0

I'm looking for a way tto disable only -L forwardings

Se eu entendi corretamente, seus usuários têm acesso total ao shell, mas você não quer que eles consigam abrir conexões para o resto da rede.

O "encaminhamento de porta local" permitido pelo SSH é apenas uma das maneiras possíveis de fazer isso. Outros incluem o lançamento de uma instância de socat , netcat ou qualquer outro número de ferramentas.

A melhor maneira de controlar conexões de entrada e saída no Linux é o Netfilter, também conhecido como IPTables.

Ele possui um módulo especial chamado owner ( ipt_owner ) que permite combinar várias características do criador de pacotes, para pacotes gerados localmente. É válido nas cadeias OUTPUT e POSTROUTING .

Você pode usá-lo para negar pacotes de saída gerados por determinados grupos de usuários, impedindo assim qualquer tipo de encaminhamento de porta, não apenas a opção -L do SSH.

    
por 26.09.2017 / 13:06