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 .