Comment permettre des accès SSH au compte root à partir d’une seule adresse IP ?

By | June 12, 2017

En utilisant l’option Match dans votre fichier de configuration sshd_config (/etc/ssh/sshd_config), il vous sera possible de limiter ou de donner des accès SSH à des utilisateurs spécifiques.
Cette option fonctionne comme un bloc conditionnel. Si la condition est respectée, OpenSSH validera la commande précisée dans le bloc et écrasera la configuration globale préétablie.
Dans ce billet, nous verrons quelques exemples d’utilisation de l’option Match dans la configuration d’un serveur SSH.

La syntaxe pour l’option Match est la suivante:

Match condition
configuration option 1
configuration option 2

Voici toutes les conditions possibles avec l’option Match:

User – Spécifie un compte d’utilisateur.
Group – Spécifie un groupe d’utilisateurs.
Host – Spécifie un hôte.
LocalAddress et LocalPort – Spécifient une adresse et un port à partir desquels les connexions entrantes seront reçues.
Address – Spécifie une adresse IP ou un sous-réseau.

Permettre des accès root à partir d’une seule adresse IP

Authentification par mot de passe

Tout d’abord modifiez votre fichier de configuration ssh:

PermitRootLogin no
PermitEmptyPasswords no

Puis, ajoutez cette option:

Match Address 192.168.1.6
PermitRootLogin yes

Authentification via clé publique

Si vous souhaitez des connexions root uniquement avec une clé publique,
modifiez ces options:

PermitRootLogin no
PermitEmptyPasswords no
PasswordAuthentication no
Use PAM no

puis, ajoutez l’option Match ci-dessous:

Match Address 192.168.1.6
PermitRootLogin without-password

Enfin, ajoutez la clé publique dans le fichier /root/.ssh/authorized_keys.

Après la modification du fichier de configuration, redémarrez le service ssh.

Avec la condition Address, il également possible d’ajouter plusieurs adresses ou un bloc d’adresses(192.168.1.0/24, 10.10.0.0/16, etc.).

Permettre des accès SSH via une clé publique d’un utilisateur qui se connecte à partir d’une adresse spécifique

Pour ce faire, ajoutez l’option suivante dans votre fichier de configuration de votre serveur ssh:

Match User marty Address 192.168.1.6
AuthenticationMethods publickey

Voici la liste complète de toutes les options possibles avec Match:

AddKeysToAgent
AddressFamily
BatchMode
BindAddress
CanonicalDomains
CanonicalizeFallbackLocal
CanonicalizeHostname
CanonicalizeMaxDots
CanonicalizePermittedCNAMEs
CertificateFile
ChallengeResponseAuthentication
CheckHostIP
Cipher
Ciphers
ClearAllForwardings
Compression
CompressionLevel
ConnectionAttempts
ConnectTimeout
ControlMaster
ControlPath
ControlPersist
DynamicForward
EscapeChar
ExitOnForwardFailure
FingerprintHash
ForwardAgent
ForwardX11
ForwardX11Timeout
ForwardX11Trusted
GatewayPorts
GlobalKnownHostsFile
GSSAPIAuthentication
GSSAPIDelegateCredentials
HashKnownHosts
Host
HostbasedAuthentication
HostbasedKeyTypes
HostKeyAlgorithms
HostKeyAlias
HostName
IdentityFile
IdentitiesOnly
IPQoS
KbdInteractiveAuthentication
KbdInteractiveDevices
KexAlgorithms
LocalCommand
LocalForward
LogLevel
MACs
Match
NoHostAuthenticationForLocalhost
NumberOfPasswordPrompts
PasswordAuthentication
PermitLocalCommand
PKCS11Provider
Port
PreferredAuthentications
Protocol
ProxyCommand
ProxyUseFdpass
PubkeyAcceptedKeyTypes
PubkeyAuthentication
RekeyLimit
RemoteForward
RequestTTY
RhostsRSAAuthentication
RSAAuthentication
SendEnv
ServerAliveInterval
ServerAliveCountMax
StreamLocalBindMask
StreamLocalBindUnlink
StrictHostKeyChecking
TCPKeepAlive
Tunnel
TunnelDevice
UpdateHostKeys
UsePrivilegedPort
User
UserKnownHostsFile
VerifyHostKeyDNS
VersionAddendum
VisualHostKey
XauthLocation

L’utilisation de symboles est également possible avec l’option Match:
* – Ce symbole correspond à zéro ou plusieurs caractères.
– Ce symbole correspond à un seul caractère.
! – Ce symbole sert à inverser des expressions.

Voyons quelques exemples avec ces symboles:

## Inclut les adresses 192.168.1.1 à 192.168.1.9 ##
Match Address 192.168.1.?
PermitRootLogin yes
## Les adresses 192.168.1.{2,3….} ##
Match Address 192.168.2.*
X11Forwarding no
## Donne des accès à tous les utilisateurs dans le domaine “.home.local”##
Match Host *.home.local
X11Forwarding yes
## Donne des accès à tous les utilisateurs sauf l’utilisateur paul ##
Match User *,!paul
X11Forwarding yes
PermitTunnel yes
PermitTTY no

mdestroy

Leave a Reply

Your email address will not be published.