GNU/Linux >> Tutoriels Linux >  >> Linux

Limiter l'accès SSH à des clients spécifiques par adresse IP

Vous pouvez limiter les hôtes pouvant se connecter en configurant des wrappers TCP ou en filtrant le trafic réseau (pare-feu) à l'aide d'iptables. Si vous souhaitez utiliser différentes méthodes d'authentification en fonction de l'adresse IP du client, configurez plutôt le démon SSH (option 3).

Option 1 :Filtrage avec IPTABLES

Les règles Iptables sont évaluées dans l'ordre, jusqu'à la première correspondance.

Par exemple, pour autoriser le trafic depuis le réseau 192.168.0.0/24 et autrement supprimer le trafic (vers le port 22). Le DROP la règle n'est pas requise si votre stratégie par défaut iptables est configurée sur 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

Vous pouvez ajouter plus de règles avant la règle de suppression pour correspondre à plus de réseaux/hôtes. Si vous avez beaucoup de réseaux ou d'adresses hôtes, vous devez utiliser ipset module. Il y a aussi iprange module qui permet d'utiliser n'importe quelle plage arbitraire d'adresses IP.

Iptables ne sont pas persistants lors des redémarrages. Vous devez configurer un mécanisme pour restaurer iptables au démarrage.

iptables s'appliquent uniquement au trafic IPv4. Les systèmes qui ont ssh écoutant l'adresse IPv6, la configuration nécessaire peut être effectuée avec ip6tables .

Option 2 :Utiliser des wrappers TCP

Remarque :cela peut ne pas être une option sur les distributions modernes, car la prise en charge des tcpwrappers a été supprimée d'OpenSSH 6.7

Vous pouvez également configurer les hôtes pouvant se connecter à l'aide d'encapsuleurs TCP. Avec les wrappers TCP, en plus des adresses IP, vous pouvez également utiliser des noms d'hôte dans les règles.

Par défaut, refusez tous les hôtes.

/etc/hosts.deny :

sshd : ALL

Ensuite, répertoriez les hôtes autorisés dans hosts.allow. Par exemple pour autoriser le réseau 192.168.0.0/24 et localhost .

/etc/hosts.allow :

sshd : 192.168.0.0/24
sshd : 127.0.0.1
sshd : [::1]

Option 3 :Configuration du démon SSH

Vous pouvez configurer le démon ssh dans sshd_config pour utiliser une méthode d'authentification différente en fonction de l'adresse/du nom d'hôte du client. Si vous souhaitez uniquement empêcher les autres hôtes de se connecter, vous devez utiliser iptables ou des wrappers TCP à la place.

Supprimez d'abord les méthodes d'authentification par défaut :

PasswordAuthentication no
PubkeyAuthentication no

Ajoutez ensuite les méthodes d'authentification souhaitées après un Match Address à la fin du fichier. Placer Match à la fin du fichier est important, car toutes les lignes de configuration qui le suivent sont placées à l'intérieur du bloc conditionnel jusqu'au prochain Match ligne. Par exemple :

Match Address 127.0.0.*
    PubkeyAuthentication yes

Les autres clients peuvent toujours se connecter, mais les connexions échoueront car aucune méthode d'authentification n'est disponible.

Les arguments de correspondance et les options de configuration conditionnelle autorisées sont documentés dans la page de manuel sshd_config. Les modèles de correspondance sont documentés dans la page de manuel ssh_config.


Voici une configuration supplémentaire pour le démon SSH afin d'étendre la réponse précédente :

  • Ajouter un filtrage des utilisateurs avec AllowUsers option en sshd_config fichier :

    AllowUsers [email protected]* [email protected]* otherid1 otherid2
    

    Cela permet à johndoe et admin2 uniquement à partir de 192.168.1.* adresses et otherid1 , autreid2 de n'importe où.

  • Restreindre une clé ssh ou une clé basée sur ca à un ensemble d'adresses en .ssh/authorized_keys fichier du répertoire personnel d'un utilisateur donné :

    from="192.168.1.*,192.168.2.*" ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABA...etc...mnMo7n1DD useralias
    

    Dans cet exemple, la clé publique des pseudonymes ne sera effective qu'à partir d'adresses données.


Linux
  1. Limiter Posix Find à une profondeur spécifique ?

  2. Autoriser l'accès Ssh à distance ?

  3. Tuez tous les processus d'un utilisateur spécifique via SSH

  4. Limiter l'accès SSH par adresse IP

  5. Restreindre la connexion SSH à une adresse IP ou à un hôte spécifique

Comment pouvons-nous limiter l'accès SSH avec UFW sur Linux Mint 20

Comment désactiver la connexion SSH à un utilisateur spécifique sous Linux

Dois-je limiter le débit des paquets avec iptables ?

Comment utiliser iptables ou tc pour limiter les paquets par client.

accès au tunneling ssh uniquement

Restreindre l'accès SSH basé sur un mot de passe par utilisateur, mais autoriser l'authentification par clé