Ce contenu n'est pas disponible dans la langue sélectionnée.
Chapter 8. Authenticating to sudo remotely using smart cards
You can authenticate to sudo remotely using smart cards. After the ssh-agent service is running locally and can forward the ssh-agent socket to a remote machine, you can use the SSH authentication protocol in the sudo PAM module to authenticate users remotely.
After logging in locally using a smart card, you can log in through SSH to the remote machine and run the sudo command without being prompted for a password by using SSH forwarding of the smart card authentication.
For the purposes of this example, a client is connecting to the IPA server through SSH and running the sudo command on the IPA server with credentials stored on a smart card.
8.1. Creating sudo rules in IdM Copier lienLien copié sur presse-papiers!
Follow this procedure to create sudo rules in IdM to give <idm_user> permission to run sudo on the remote host.
For the purposes of this example, the less and whoami commands are added as sudo commands to test the procedure.
Prerequisites
-
The IdM user has been created. For the purpose of this example, the user is
<idm_user>. -
You have the hostname of the system where you are running
sudoremotely. For the purpose of this example, the host isserver.ipa.test.
Procedure
Create a
sudorule named <sudorule_name> to allow a user to run commands. Replace <sudorule_name> with the actual name of the sudo rule you want to create.ipa sudorule-add <sudorule_name>
# ipa sudorule-add <sudorule_name>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add
lessandwhoamiassudocommands:ipa sudocmd-add /usr/bin/less ipa sudocmd-add /usr/bin/whoami
# ipa sudocmd-add /usr/bin/less # ipa sudocmd-add /usr/bin/whoamiCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add the
lessandwhoamicommands to the <sudorule_name>:ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/less ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/whoami
# ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/less # ipa sudorule-add-allow-command <sudorule_name> --sudocmds /usr/bin/whoamiCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add the
<idm_user>user to the <sudorule_name>:ipa sudorule-add-user <sudorule_name> --users <idm_user>
# ipa sudorule-add-user <sudorule_name> --users <idm_user>Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add the host on which you are running
sudoto the <sudorule_name>:ipa sudorule-add-host <sudorule_name> --hosts server.ipa.test
# ipa sudorule-add-host <sudorule_name> --hosts server.ipa.testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.2. Setting up the PAM module for sudo Copier lienLien copié sur presse-papiers!
Follow this procedure to install and set up the pam_ssh_agent_auth.so PAM module for sudo authentication with a smart card on any host where you are running sudo.
Procedure
Install the PAM SSH agent:
dnf -y install pam_ssh_agent_auth
# dnf -y install pam_ssh_agent_authCopy to Clipboard Copied! Toggle word wrap Toggle overflow Add the
authorized_keys_commandforpam_ssh_agent_auth.soto the/etc/pam.d/sudofile before any otherauthentry:Copy to Clipboard Copied! Toggle word wrap Toggle overflow To enable the SSH agent forwarding to work when you run
sudocommands, add the following to the/etc/sudoersfile:Defaults env_keep += "SSH_AUTH_SOCK"
Defaults env_keep += "SSH_AUTH_SOCK"Copy to Clipboard Copied! Toggle word wrap Toggle overflow This allows users who have their public keys from smart cards stored in IPA/SSSD to authenticate to
sudowithout entering a password.Restart the
sssdservice:systemctl restart sssd
# systemctl restart sssdCopy to Clipboard Copied! Toggle word wrap Toggle overflow
8.3. Connecting to sudo remotely using a smart card Copier lienLien copié sur presse-papiers!
Follow this procedure to configure the SSH agent and client to connect to sudo remotely using a smart card.
Prerequisites
-
You have created
sudorules in IdM. -
You have installed and set up the
pam_ssh_agent_authPAM module forsudoauthentication on the remote system where you are going to runsudo.
Procedure
Start the SSH agent (if not already running).
eval `ssh-agent`
# eval `ssh-agent`Copy to Clipboard Copied! Toggle word wrap Toggle overflow Add your smart card to the SSH agent. Enter your PIN when prompted:
ssh-add -s /usr/lib64/opensc-pkcs11.so
# ssh-add -s /usr/lib64/opensc-pkcs11.soCopy to Clipboard Copied! Toggle word wrap Toggle overflow Connect to the system where you need to run
sudoremotely by using SSH with ssh-agent forwarding enabled. Use the-Aoption:ssh -A ipauser1@server.ipa.test
# ssh -A ipauser1@server.ipa.testCopy to Clipboard Copied! Toggle word wrap Toggle overflow
Verification
Run the
whoamicommand withsudo:sudo /usr/bin/whoami
# sudo /usr/bin/whoamiCopy to Clipboard Copied! Toggle word wrap Toggle overflow
You are not prompted for a PIN or password when the smart card is inserted.
If the SSH agent is configured to use other sources, such as the GNOME Keyring, and you run the sudo command after removing the smart card, you might not be prompted for a PIN or password, as one of the other sources might provide access to a valid private key. To check the public keys of all identities known by the SSH agent, run the ssh-add -L command.