Como permitimos que um determinado conjunto de IPs privados entre através do login SSH (par de chaves RSA) no Linux Server?
/etc/ssh/sshd_config
Como permitimos que um determinado conjunto de IPs privados entre através do login SSH (par de chaves RSA) no Linux Server?
/etc/ssh/sshd_config
Respostas:
Você pode limitar quais hosts podem se conectar configurando wrappers TCP ou filtrando o tráfego de rede (firewall) usando iptables . Se você quiser usar métodos de autenticação diferentes, dependendo do endereço IP do cliente, configure o daemon SSH (opção 3).
As regras de iptables são avaliadas em ordem, até a primeira correspondência.
Por exemplo, para permitir o tráfego da rede 192.168.0.0/24 e, de outra forma, soltar o tráfego (para a porta 22). A DROP
regra não é necessária se a política padrão do iptables estiver configurada DROP
.
iptables -A INPUT -p tcp --dport 22 --source 192.168.0.0/24 -j ACCEPT
iptables -A INPUT -p tcp --dport 22 -j DROP
Você pode adicionar mais regras antes da regra de queda para corresponder a mais redes / hosts. Se você tiver muitas redes ou endereços de host, use o módulo ipset . Há também o módulo iprange , que permite o uso de qualquer faixa arbitrária de endereços IP.
Os iptables não são persistentes nas reinicializações. Você precisa configurar algum mecanismo para restaurar o iptables na inicialização.
iptables
aplicam-se apenas ao tráfego IPv4. Os sistemas que têm ssh ouvindo o endereço IPv6 com o qual a configuração necessária pode ser feita ip6tables
.
Você também pode configurar quais hosts podem se conectar usando wrappers TCP. Com os wrappers TCP, além dos endereços IP, você também pode usar nomes de host nas regras.
Por padrão, negue todos os hosts.
/etc/hosts.deny
:
sshd : ALL
Em seguida, liste os hosts permitidos em hosts.allow. Por exemplo, para permitir rede 192.168.0.0/24 e localhost .
/etc/hosts.allow
:
sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]
Você pode configurar o daemon ssh no sshd_config para usar um método de autenticação diferente, dependendo do endereço do cliente / nome do host. Se você deseja apenas bloquear a conexão de outros hosts, use iptables ou TCP wrappers.
Primeiro remova os métodos de autenticação padrão:
PasswordAuthentication no
PubkeyAuthentication no
Em seguida, adicione os métodos de autenticação desejados após a Match Address
no final do arquivo. A colocação Match
no final do arquivo é importante, uma vez que todas as linhas de configuração depois são colocadas dentro do bloco condicional até a próxima Match
linha. Por exemplo:
Match Address 127.0.0.*
PubkeyAuthentication yes
Outros clientes ainda podem se conectar, mas os logons falharão porque não há métodos de autenticação disponíveis.
Os argumentos de correspondência e as opções de configuração condicional permitidas estão documentados na página do manual sshd_config . Os padrões de correspondência estão documentados na página do manual ssh_config .
#ListenAddress ::
em /etc/ssh/sshd_config
dirá ao servidor SSH para aceitar entrada de qualquer uma dessas redes. Caso contrário, faça ListenAddress <ip address>
onde <ip address>
está a porta NIC que você deseja permitir. Meu eth0
é, 192.168.3.4
portanto, ListenAddress 192.168.3.4
resulta em SSH trabalhando apenas na rede 192.168.3.4 que está no eth0; e eth1 eth2 eth3 é negado.
Aqui estão algumas configurações adicionais para o daemon SSH para estender a resposta anterior:
Adicione filtragem de usuário com a AllowUsers
opção no sshd_config
arquivo:
AllowUsers johndoe@192.168.1.* admin2@192.168.1.* otherid1 otherid2
Isso permite johndoe e admin2 somente de 192.168.1.*
endereços e otherid1 , otherid2 de qualquer lugar.
Restrinja uma chave ssh ou chave baseada em ca a um conjunto de endereços no .ssh/authorized_keys
arquivo do diretório inicial de um determinado usuário:
from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
Neste exemplo, a chave pública para useralias será efetiva apenas a partir de endereços determinados.