Limitar o acesso SSH a clientes específicos por endereço IP

14

Como permitimos que determinado conjunto de IPs Particulares seja inserido por meio de login SSH (par de chaves RSA) no Servidor Linux?

    
por Ranjan Kumar 22.11.2017 / 11:08

1 resposta

21

Você pode limitar quais hosts podem se conectar configurando TCP wrappers ou filtrar 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).

Opção 1: Filtrando com IPTABLES

As regras do 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, eliminar o tráfego (para a porta 22). A regra DROP não é necessária se sua política padrão do iptables estiver configurada para 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 descarte para corresponder a mais redes / hosts. Se você tiver muitas redes ou endereços de host, use ipset módulo. Há também o módulo iprange que permite usando qualquer intervalo arbitrário de endereços IP.

Os recursos iptables não são persistentes nas reinicializações. Você precisa configurar algum mecanismo para restaurar o iptables na inicialização.

iptables aplica-se apenas ao tráfego IPv4. Sistemas que possuem ssh escutando endereço IPv6 a configuração necessária pode ser feita com ip6tables .

Opção 2: usando TCP wrappers

Você também pode configurar quais hosts podem se conectar usando TCP wrappers. Com os TCP wrappers, 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]

Opção 3: configuração do daemon SSH

Você pode configurar o daemon ssh em sshd_config para usar um método de autenticação diferente, dependendo do endereço do cliente / hostname. Se você quiser apenas bloquear a conexão de outros hosts, use o iptables ou o 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 um Match Address no final do arquivo. Colocar Match no final do arquivo é importante, já que todas as linhas de configuração depois são colocadas dentro do bloco condicional até a próxima linha Match . Por exemplo:

Match Address 127.0.0.*
    PubkeyAuthentication yes

Outros clientes ainda podem se conectar, mas os logins falharão porque não há métodos de autenticação disponíveis.

Os argumentos correspondentes 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 de manual ssh_config .

    
por 22.11.2017 / 12:22