How to Set Up Multi-Factor Authentication (MFA) on Debian 12 Bookworm

This article provides a step-by-step guide on how to set up Multi-Factor Authentication (MFA) on Debian 12 Bookworm.

Introduction

In today’s digital landscape, security is more important than ever. One of the most effective ways to enhance system security is by implementing Multi-Factor Authentication (MFA). MFA adds an extra layer of protection beyond just a username and password, ensuring that unauthorized users cannot gain access to your system.

Debian 12 Bookworm, a stable and secure Linux distribution, allows users to set up MFA using tools like Google Authenticator and PAM (Pluggable Authentication Module). This guide will walk you through the process of configuring MFA on your Debian system to secure SSH access and local logins.

Prerequisites

Before proceeding, ensure you have the following:

  • A Debian 12 Bookworm system
  • Root or sudo access
  • An SSH client (if configuring remote access)
  • A smartphone with Google Authenticator or another TOTP-compatible app (e.g., Authy, FreeOTP)

Step 1: Install Google Authenticator

The first step is to install the Google Authenticator package, which provides a time-based one-time password (TOTP) system.

sudo apt update
sudo apt install libpam-google-authenticator -y

Step 2: Configure Google Authenticator for a User

After installing the package, configure Google Authenticator for your user account.

google-authenticator

You will be prompted with a series of questions:

  1. Time-based authentication: Type y and press Enter.
  2. Secret key, QR code, and emergency scratch codes: The system will generate a QR code and a secret key. Use a TOTP-compatible app to scan the QR code.
  3. Disallow multiple uses of the same token: Type y.
  4. Increase time skew tolerance: Type y.
  5. Enable rate-limiting: Type y.

Make sure to save the emergency backup codes in a secure location.

Step 3: Configure PAM to Use Google Authenticator

Now, you need to configure PAM to use Google Authenticator for authentication.

Edit the PAM configuration file for SSH and login:

sudo nano /etc/pam.d/sshd

Add the following line at the end:

auth required pam_google_authenticator.so

Save and exit (CTRL + X, then Y and Enter).

Step 4: Configure SSH for MFA

To enforce MFA for SSH logins, edit the SSH configuration file:

sudo nano /etc/ssh/sshd_config

Find and modify the following settings:

ChallengeResponseAuthentication yes
AuthenticationMethods publickey,password publickey,keyboard-interactive
UsePAM yes

Restart the SSH service to apply changes:

sudo systemctl restart sshd

Step 5: Test Your MFA Setup

Now, try logging into your system via SSH:

ssh user@your-server-ip

After entering your password, the system should prompt you for the verification code from Google Authenticator.

Step 6: Enforce MFA for Local Logins (Optional)

If you want to secure local logins with MFA, edit the common-auth file:

sudo nano /etc/pam.d/common-auth

Add this line at the end:

auth required pam_google_authenticator.so

Save and exit. Now, local logins will require a verification code as well.

Conclusion

By setting up Multi-Factor Authentication (MFA) on Debian 12 Bookworm, you significantly enhance the security of your system. Whether for SSH access or local logins, MFA acts as an essential barrier against unauthorized access. Always keep your emergency codes secure, and consider using backup authentication methods to avoid lockouts.

This additional security step, though minor in effort, makes a huge difference in protecting your system from cyber threats.