CIS FreeIPA Benchmark

Security configuration recommendations for FreeIPA identity management

v1.0.0 01-2025

Overview

▶

This benchmark provides prescriptive guidance for establishing a secure configuration posture for FreeIPA identity management deployments. It covers password and Kerberos policies, two-factor authentication, host-based access control (HBAC), sudo rules, role-based delegation, certificate authority management, replication topology, DNS security, health monitoring, audit logging, backup procedures, and version maintenance.

16Recommendations
7Sections
2Profile Levels
SectionAreaFocus
1Authentication PoliciesPassword complexity, lockout, and Kerberos restrictions
2Access ControlOTP two-factor and host-based access control rules
3AuthorizationGranular sudo rules and delegated administration roles
4Certificate ManagementCertificate profiles, auto-renewal, and CRL/OCSP
5Topology & DNSReplication redundancy and DNSSEC-enabled DNS zones
6Monitoring & AuditAutomated healthcheck and 389-ds audit logging
7OperationsFull/data-only backups and version update procedures

Profile Definitions

▶
ProfileDescriptionIntended Use
L1Level 1 — StandardEssential security for all FreeIPA deployments; minimal performance impact.
L2Level 2 — HardenedAdvanced hardening for PCI-DSS, HIPAA, or high-security environments.

1 — Authentication Policies

▶

1.1 Password & Kerberos

▶
1.1.1 Ensure password policies enforce complexity and lockout (Automated)
L1 Auto
Description

This recommendation verifies that password policies enforce complexity and lockout on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check password policy:
ipa pwpolicy-show

# Check global policy:
ipa config-show | grep -iE 'password|lockout|lifetime'
Remediation
# Configure strong password policy:
ipa pwpolicy-mod --maxlife=90 --minlife=1 \
  --history=12 --minlength=14 \
  --minclasses=4 --maxfail=5 \
  --failinterval=600 --lockouttime=1800

# Create group-specific password policy:
ipa pwpolicy-add admins --priority=10 \
  --maxlife=60 --minlife=1 \
  --history=24 --minlength=16 \
  --minclasses=4 --maxfail=3 \
  --failinterval=300 --lockouttime=3600
1.1.2 Ensure Kerberos ticket lifetimes and encryption are restricted (Automated)
L1 Auto
Description

This setting ensures that Kerberos ticket lifetimes and encryption are restricted on the FreeIPA identity management server. Restricting this capability limits potential abuse and enforces the principle of least privilege across the environment.

Rationale

Unrestricted access to this capability could allow unauthorized users or processes to perform actions beyond their intended scope. Applying least-privilege principles to the FreeIPA identity management server is essential for defense in depth.

Audit
# Check Kerberos ticket policy:
ipa krbtpolicy-show

# Check specific user policy:
ipa krbtpolicy-show admin

# List authentication indicators:
ipa config-show | grep -i 'auth indicators'
Remediation
# Configure Kerberos ticket lifetime restrictions:
ipa krbtpolicy-mod --maxlife=36000 --maxrenew=604800

# Set stricter policy for admins:
ipa krbtpolicy-mod admin --maxlife=14400 --maxrenew=86400

# Require authentication indicators for sensitive services:
ipa service-mod HTTP/web.example.com \
  --auth-ind=otp --auth-ind=pkinit

# Force strong Kerberos encryption:
ipa config-mod --ipaconfigstring='KDC:Disable Last Success' \
  --ipaconfigstring='KDC:Disable Lockout'

2 — Access Control

▶

2.1 MFA & HBAC

▶
2.1.1 Ensure OTP two-factor authentication is enabled (Automated)
L1 Auto
Description

This recommendation verifies that OTP two-factor authentication is enabled on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check two-factor authentication:
ipa config-show | grep -i 'auth type'

# List OTP tokens:
ipa otptoken-find

# Check user auth type:
ipa user-show admin --all | grep -i 'auth type'
Remediation
# Enable OTP two-factor authentication:
ipa config-mod --user-auth-type=otp

# Add TOTP token for user:
ipa otptoken-add --type=totp --owner=admin \
  --algo=sha256 --digits=6 --interval=30

# Enforce OTP for specific users:
ipa user-mod admin --user-auth-type=otp

# Enable RADIUS proxy for external MFA:
ipa radiusproxy-add mfa-server \
  --server=radius.example.com \
  --secret=RADIUS_SHARED_SECRET
2.1.2 Ensure HBAC rules restrict service access per host group (Automated)
L1 Auto
Description

This recommendation verifies that HBAC rules restrict service access per host group on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# List HBAC rules:
ipa hbacrule-find

# Check specific HBAC rule:
ipa hbacrule-show allow_all

# Test HBAC:
ipa hbactest --user=testuser --host=server1.example.com --service=sshd
Remediation
# Disable default allow_all HBAC rule:
ipa hbacrule-disable allow_all

# Create targeted HBAC rules:
ipa hbacrule-add sshd_admins \
  --desc='Allow admins SSH access to all hosts'
ipa hbacrule-add-user sshd_admins --groups=admins
ipa hbacrule-add-service sshd_admins --hbacsvcs=sshd
ipa hbacrule-add-host sshd_admins --hostgroups=linux-servers

ipa hbacrule-add web_developers \
  --desc='Allow devs access to web servers'
ipa hbacrule-add-user web_developers --groups=developers
ipa hbacrule-add-service web_developers --hbacsvcs=sshd
ipa hbacrule-add-host web_developers --hostgroups=web-servers

# Test the rule:
ipa hbactest --user=dev1 --host=web1.example.com --service=sshd

3 — Authorization

▶

3.1 Sudo & Delegation

▶
3.1.1 Ensure sudo rules use command groups with minimal privileges (Automated)
L1 Auto
Description

This recommendation verifies that sudo rules use command groups with minimal privileges on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# List sudo rules:
ipa sudorule-find

# Check specific sudo rule:
ipa sudorule-show admin_sudo

# List sudo commands:
ipa sudocmd-find
Remediation
# Create granular sudo rules:
# Define allowed commands:
ipa sudocmd-add '/usr/bin/systemctl restart httpd'
ipa sudocmd-add '/usr/bin/systemctl restart nginx'
ipa sudocmdgroup-add web-admin-cmds
ipa sudocmdgroup-add-member web-admin-cmds \
  --sudocmds='/usr/bin/systemctl restart httpd' \
  --sudocmds='/usr/bin/systemctl restart nginx'

# Create sudo rule:
ipa sudorule-add web_admin_sudo \
  --desc='Web admin restart services'
ipa sudorule-add-user web_admin_sudo --groups=web-admins
ipa sudorule-add-host web_admin_sudo --hostgroups=web-servers
ipa sudorule-add-allow-command web_admin_sudo \
  --sudocmdgroups=web-admin-cmds
ipa sudorule-add-option web_admin_sudo --sudooption='!authenticate'

# Remove broad sudo rules:
ipa sudorule-del allow_all_sudo 2>/dev/null
3.1.2 Ensure delegated administration uses custom roles and permissions (Automated)
L1 Auto
Description

This recommendation verifies that delegated administration uses custom roles and permissions on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check delegation rules:
ipa delegation-find

# Check self-service permissions:
ipa selfservice-find

# Check permission:
ipa permission-find --type=user
Remediation
# Configure delegation with minimal permissions:
ipa delegation-add 'helpdesk password reset' \
  --group=helpdesk --membergroup=users \
  --attrs=userpassword

# Create custom permission:
ipa permission-add 'Read User Email' \
  --right=read --type=user \
  --attrs=mail

# Create privilege from permissions:
ipa privilege-add 'Helpdesk' \
  --desc='Helpdesk staff privileges'
ipa privilege-add-permission 'Helpdesk' \
  --permissions='Read User Email'

# Create role and assign:
ipa role-add 'Helpdesk Staff' \
  --desc='First-line support'
ipa role-add-privilege 'Helpdesk Staff' \
  --privileges='Helpdesk'
ipa role-add-member 'Helpdesk Staff' \
  --groups=helpdesk

4 — Certificate Management

▶

4.1 CA & Revocation

▶
4.1.1 Ensure certificate profiles and auto-renewal are configured (Automated)
L1 Auto
Description

This recommendation verifies that certificate profiles and auto-renewal are configured on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check CA configuration:
ipa ca-find
ipa cert-show 1 --out=/dev/null 2>&1

# Check certificate profiles:
ipa certprofile-find

# List issued certificates:
ipa cert-find --sizelimit=10
Remediation
# Configure certificate authority security:
# Create custom certificate profile:
ipa certprofile-import server-tls \
  --file=/tmp/server-tls.cfg \
  --desc='Server TLS certificate' \
  --store=TRUE

# Issue certificate with proper SAN:
ipa cert-request /tmp/server.csr \
  --principal=HTTP/web.example.com \
  --profile-id=server-tls

# Set certificate auto-renewal:
ipa-getcert request -K HTTP/web.example.com \
  -k /etc/pki/tls/private/web.key \
  -f /etc/pki/tls/certs/web.crt \
  -D web.example.com \
  -N CN=web.example.com

# Monitor certificate status:
ipa-getcert list
4.1.2 Ensure CRL distribution and certificate revocation are working (Automated)
L1 Auto
Description

This recommendation verifies that CRL distribution and certificate revocation are working on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check CRL and OCSP:
curl -s http://ipa.example.com/ipa/crl/MasterCRL.bin | \
  openssl crl -inform DER -noout -text | head -20

# Check OCSP responder:
openssl ocsp -issuer /etc/ipa/ca.crt -cert /tmp/test.crt \
  -url http://ipa.example.com/ca/ocsp
Remediation
# Ensure CRL distribution and OCSP are working:
# Check CRL update interval:
grep -i crl /var/lib/pki/pki-tomcat/ca/conf/CS.cfg

# Configure CRL update interval:
pkcicfg ca-crl-set --crl-update-interval 240

# Revoke compromised certificate:
ipa cert-revoke SERIAL_NUMBER --revocation-reason=1

# Verify revocation:
ipa cert-show SERIAL_NUMBER | grep -i status

5 — Topology & DNS

▶

5.1 Replication & Resolution

▶
5.1.1 Ensure replication topology is redundant and monitored (Automated)
L1 Auto
Description

This recommendation verifies that replication topology is redundant and monitored on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check replication topology:
ipa topologysegment-find domain
ipa topologysegment-find ca

# Check replication agreements:
ipa-replica-manage list

# Check replication status:
ipa-replica-manage list -v
Remediation
# Configure secure replication topology:
# Add replica:
ipa-replica-install --server=ipa-master.example.com \
  --domain=example.com --realm=EXAMPLE.COM \
  --principal=admin --setup-ca --setup-dns \
  --forwarder=8.8.8.8 --no-ntp

# Create topology segment:
ipa topologysegment-add domain \
  --leftnode=ipa1.example.com \
  --rightnode=ipa2.example.com \
  'ipa1-to-ipa2'

# Monitor replication:
ipa-healthcheck --check=ipahealthcheck.ds.replication
5.1.2 Ensure DNS zones use DNSSEC and restrict zone transfers (Automated)
L1 Auto
Description

This recommendation verifies that DNS zones use DNSSEC and restrict zone transfers on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check DNS configuration:
ipa dnsconfig-show
ipa dnszone-find

# Check DNSSEC:
ipa dnszone-show example.com | grep -i dnssec
Remediation
# Secure DNS configuration:
# Enable DNSSEC:
ipa dnszone-mod example.com --dnssec=true

# Configure DNS forwarding securely:
ipa dnsconfig-mod --forwarder=1.1.1.1 --forward-policy=first

# Restrict zone transfers:
ipa dnszone-mod example.com \
  --allow-transfer='10.0.0.0/24;127.0.0.1'

# Add reverse zone:
ipa dnszone-add 0.10.in-addr.arpa \
  --name-server=ipa.example.com \
  --admin-email=admin@example.com

6 — Monitoring & Audit

▶

6.1 Health & Logging

▶
6.1.1 Ensure ipa-healthcheck runs on an automated schedule (Automated)
L1 Auto
Description

This recommendation verifies that ipa-healthcheck runs on an automated schedule on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Run FreeIPA healthcheck:
ipa-healthcheck --failures-only 2>/dev/null | head -30

# Check service status:
ipactl status
Remediation
# Set up automated healthcheck:
cat > /etc/cron.d/ipa-healthcheck << 'EOF'
0 */6 * * * root /usr/bin/ipa-healthcheck --failures-only \
  --output-type json > /var/log/ipa/healthcheck-$(date +\%Y\%m\%d-\%H).json 2>&1
find /var/log/ipa/healthcheck-*.json -mtime +30 -delete
EOF

# Configure Nagios/Prometheus monitoring:
# Monitor critical services:
# - dirsrv (LDAP)
# - krb5kdc (Kerberos KDC)
# - httpd (Web UI)
# - pki-tomcatd (Dogtag CA)
# - named (DNS)
6.1.2 Ensure 389-ds audit logging is enabled and forwarded (Automated)
L1 Auto
Description

This recommendation verifies that 389-ds audit logging is enabled and forwarded on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check audit logging:
grep -i audit /etc/dirsrv/slapd-*/dse.ldif | head -10

# Check access logs:
ls -la /var/log/dirsrv/slapd-*/access*
ls -la /var/log/httpd/error_log
Remediation
# Configure comprehensive audit logging:
# Enable 389-ds audit logging:
dsconf slapd-EXAMPLE-COM config replace \
  nsslapd-auditlog-logging-enabled=on \
  nsslapd-auditlog=/var/log/dirsrv/slapd-EXAMPLE-COM/audit \
  nsslapd-auditlog-logrotationtime=1 \
  nsslapd-auditlog-logrotationtimeunit=day \
  nsslapd-auditlog-maxlogsperdir=30

# Forward logs to SIEM:
cat > /etc/rsyslog.d/ipa.conf << 'EOF'
module(load="imfile")
input(type="imfile"
      File="/var/log/dirsrv/slapd-*/audit"
      Tag="ipa-audit"
      Severity="info")
*.* @@siem.example.com:514
EOF
systemctl restart rsyslog

7 — Operations

▶

7.1 Backup & Updates

▶
7.1.1 Ensure automated full and data-only backups are configured (Automated)
L1 Auto
Description

This recommendation verifies that automated full and data-only backups are configured on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check backup status:
ls -la /var/lib/ipa/backup/

# List available backups:
ipa-backup --list 2>/dev/null
Remediation
# Configure automated FreeIPA backups:
cat > /etc/cron.d/ipa-backup << 'EOF'
0 1 * * * root /usr/sbin/ipa-backup --data --online \
  --log-file=/var/log/ipa/backup.log 2>&1
0 1 * * 0 root /usr/sbin/ipa-backup --log-file=/var/log/ipa/backup-full.log 2>&1
find /var/lib/ipa/backup/ -mtime +30 -exec rm -rf {} +
EOF

# Verify backup integrity:
ipa-restore --data --online --dry-run /var/lib/ipa/backup/latest/
7.1.2 Ensure FreeIPA is kept up to date with latest releases (Manual)
L1 Manual
Description

This recommendation verifies that FreeIPA is kept up to date with latest releases on the FreeIPA identity management server. Implementing this control strengthens the overall security configuration and reduces exposure to potential threats.

Rationale

Failure to implement this control may leave the FreeIPA identity management server vulnerable to attack or non-compliant with organizational security policies. This control helps establish a consistent, hardened configuration baseline.

Audit
# Check FreeIPA server version:
ipa --version
rpm -q ipa-server

# Check for available updates:
yum check-update ipa-server 2>/dev/null || dnf check-update ipa-server 2>/dev/null
Remediation
# Update FreeIPA safely:
# Backup first:
ipa-backup

# Update packages:
dnf update ipa-server ipa-client ipa-server-dns -y

# Run server upgrade:
ipa-server-upgrade

# Verify after upgrade:
ipactl restart
ipactl status
ipa-healthcheck --failures-only

# Update replicas one at a time:
# On each replica:
dnf update ipa-server ipa-client -y
ipa-server-upgrade
ipactl restart