Como eu aprovo computadores específicos para o ssh em uma máquina com a autenticação de senha desabilitada?

4

As instruções em help.ubupport.com/community/SSH/OpenSSH/Configuring recomendam a desativação da senha autenticação de modo que "só será possível se conectar a partir de computadores que você tenha aprovado especificamente". Mas eles não dizem como aprovar especificamente um computador. Como eu faço isso?

    
por Daryl Spitzer 06.07.2011 / 01:37

2 respostas

8

Em cada usuário que você deseja ter acesso ao servidor, execute em um terminal:

ssh-keygen
ssh-copy-id <username>@<serverIPorDNSname>

Ele irá perguntar onde salvá-lo, o padrão é bom. Ele pedirá que você insira uma frase secreta. Isso é para criptografar a chave apenas no caso do computador ser roubado ou comprometido. Se você não quiser uma frase secreta, deixe os dois prompts de frase secreta em branco.

O primeiro comando cria uma chave ssh para a corrente em que o usuário é executado. O segundo comando ssh está no servidor e adiciona a chave do usuário atual à lista do servidor de quem tem permissão para efetuar o login. Como o ssh-copy-id está usando o ssh, você precisará fazer isso antes de desativar os logins de senha.

As chaves SSH são duas metades correspondentes. Uma metade é contada para todos, a outra é mantida em segredo. Usando um algoritmo matemático, a metade pública pode ser usada para descriptografar dados criptografados com a chave privada. Se os dados forem descriptografados com êxito com a chave pública, você sabe, sem sombra de dúvida, que foi a metade privada da chave que a criptografou. Então, quando você faz o login com uma chave ssh, o cliente envia uma mensagem (criptografada usando a chave privada) que basicamente diz "deixe-me entrar". O servidor verifica usando a chave pública e, se a chave pública estiver na lista de computadores permitidos, o login será bem-sucedido.

ssh-copy-id é (usando ssh) copiando a metade pública para a lista de servidores de quais chaves têm permissão para efetuar login (esta lista é armazenada em /home/<username>/.ssh/authorized_keys2, ou no caso de root em /root/.ssh/authorized_keys2). Se você já desativou a autenticação de senha, ainda poderá adicionar um computador. Você apenas tem que copiar a chave pública (em /home/username/.ssh/id_rsa.pub em um computador cliente) para algo como um pen drive USB e depois adicionar o conteúdo de id_rsa.pub ao final de / home / & lt ; nome de usuário > /. ssh / authorized_keys2 arquivo no servidor. (Você pode fazer isso executando o comando como cat /media/USB/stick/path/to/id_rsa.pub >>/home/<username>/.ssh/authorized_keys2 no servidor.)

    
por Azendale 06.07.2011 / 02:13
0

Iptables

Se os computadores tiverem um determinado intervalo de ip, você poderá usar o iptables para controlar o acesso. Os iptables fazem parte do kernel. Você pode controlá-los no arquivo /etc/iptables

# from /etc/iptables
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
#
# loopback device
#
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
#
# all connections already established (started outgoing from my machine)
#
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
#
# but SSH - restricted
#
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source 138.232.0.0/255.255.0.0 -j ACCEPT
#
# block all others (without answering - thus nobody is able to scan the network)
#
-A INPUT -p icmp --icmp-type echo-request -j DROP
-A RH-Firewall-1-INPUT -j DROP
COMMIT

A linha interessante é esta:

-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 --source 111.111.0.0/255.255.0.0 -j ACCEPT

Prot 22 é a porta ssh padrão. Se é diferente com a sua máquina, mude-a. 111.111.0.0/255.255.0.0 -j ACCEPT significa que aceita todas as conexões vindas de '111.111.foo.bar' com 'foo' e 'bar' sendo quaisquer 3 dígitos.

    
por con-f-use 06.07.2011 / 09:32