159 lines
5.4 KiB
Django/Jinja
159 lines
5.4 KiB
Django/Jinja
# OpenSSH Server Configuration
|
|
# Managed by Ansible
|
|
# DO NOT EDIT MANUALLY
|
|
|
|
# Network
|
|
Port {{ openssh_port }}
|
|
{% for address in openssh_listen_addresses | sort %}
|
|
ListenAddress {{ address }}
|
|
{% endfor %}
|
|
|
|
# Protocol (deprecated directive in newer OpenSSH, kept for compatibility)
|
|
{% if openssh_version is defined and openssh_version is version('7.4', '<') %}
|
|
Protocol {{ openssh_protocol }}
|
|
{% endif %}
|
|
|
|
# Host Keys
|
|
{% for key in openssh_host_keys %}
|
|
HostKey {{ key }}
|
|
{% endfor %}
|
|
|
|
# Cryptography (Mozilla Modern Profile + Version-Specific Enhancements)
|
|
Ciphers {{ openssh_ciphers | join(',') }}
|
|
{% if openssh_has_mlkem | default(false) and openssh_enable_mlkem %}
|
|
# ML-KEM Post-Quantum KEX (OpenSSH 9.9+)
|
|
KexAlgorithms mlkem768x25519-sha256,{{ openssh_kex_algorithms | join(',') }}
|
|
{% else %}
|
|
KexAlgorithms {{ openssh_kex_algorithms | join(',') }}
|
|
{% endif %}
|
|
MACs {{ openssh_macs | join(',') }}
|
|
|
|
# Key Types and Algorithms
|
|
{% if openssh_enable_security_keys %}
|
|
PubkeyAcceptedKeyTypes {{ openssh_pubkey_accepted_key_types | join(',') }}
|
|
{% endif %}
|
|
{% if openssh_host_key_algorithms | length > 0 %}
|
|
HostKeyAlgorithms {{ openssh_host_key_algorithms | join(',') }}
|
|
{% endif %}
|
|
{% if openssh_enable_ca and openssh_ca_signature_algorithms | length > 0 and openssh_has_ca_signature_algorithms | default(false) %}
|
|
CASignatureAlgorithms {{ openssh_ca_signature_algorithms | join(',') }}
|
|
{% endif %}
|
|
|
|
# RSA Key Size Requirements (OpenSSH 9.3+, NSA/CISA Compliance)
|
|
{% if openssh_has_required_rsa_size | default(false) %}
|
|
RequiredRSASize {{ openssh_required_rsa_size }}
|
|
{% endif %}
|
|
|
|
# Authentication
|
|
PermitRootLogin {{ openssh_permit_root_login }}
|
|
PubkeyAuthentication {{ 'yes' if openssh_pubkey_authentication else 'no' }}
|
|
PasswordAuthentication {{ 'yes' if openssh_password_authentication else 'no' }}
|
|
PermitEmptyPasswords {{ 'yes' if openssh_permit_empty_passwords else 'no' }}
|
|
ChallengeResponseAuthentication {{ 'yes' if openssh_challenge_response_auth else 'no' }}
|
|
|
|
# Login Settings
|
|
LoginGraceTime {{ openssh_login_grace_time }}
|
|
MaxAuthTries {{ openssh_max_auth_tries }}
|
|
MaxSessions {{ openssh_max_sessions }}
|
|
MaxStartups {{ openssh_max_startups }}
|
|
|
|
# Logging
|
|
SyslogFacility {{ openssh_syslog_facility }}
|
|
LogLevel {{ openssh_log_level }}
|
|
{% if openssh_has_log_verbose | default(false) and openssh_enable_verbose_logging %}
|
|
# Enhanced Forensic Logging (OpenSSH 8.5+)
|
|
LogVerbose {{ openssh_log_verbose_subsystems | join(',') }}
|
|
{% endif %}
|
|
|
|
# PAM and system integration
|
|
UsePAM {{ 'yes' if openssh_use_pam else 'no' }}
|
|
UseDNS {{ 'yes' if openssh_use_dns else 'no' }}
|
|
|
|
# Session Re-keying (CCCS ITSP.40.062 Requirement)
|
|
RekeyLimit {{ openssh_rekey_limit }}
|
|
|
|
# Forwarding and features
|
|
X11Forwarding {{ 'yes' if openssh_x11_forwarding else 'no' }}
|
|
PrintMotd {{ 'yes' if openssh_print_motd else 'no' }}
|
|
PrintLastLog {{ 'yes' if openssh_print_last_log else 'no' }}
|
|
TCPKeepAlive {{ 'yes' if openssh_tcp_keep_alive else 'no' }}
|
|
|
|
# Client alive (keepalive)
|
|
ClientAliveInterval {{ openssh_client_alive_interval }}
|
|
ClientAliveCountMax {{ openssh_client_alive_count_max }}
|
|
|
|
# Access control
|
|
{% if openssh_allow_users | length > 0 %}
|
|
AllowUsers {{ openssh_allow_users | sort | join(' ') }}
|
|
{% endif %}
|
|
{% if openssh_deny_users | length > 0 %}
|
|
DenyUsers {{ openssh_deny_users | sort | join(' ') }}
|
|
{% endif %}
|
|
{% if openssh_allow_groups | length > 0 %}
|
|
AllowGroups {{ openssh_allow_groups | sort | join(' ') }}
|
|
{% endif %}
|
|
{% if openssh_deny_groups | length > 0 %}
|
|
DenyGroups {{ openssh_deny_groups | sort | join(' ') }}
|
|
{% endif %}
|
|
|
|
# Banner
|
|
{% if openssh_banner != 'none' %}
|
|
Banner {{ openssh_banner }}
|
|
{% endif %}
|
|
|
|
# Subsystems
|
|
{% for subsystem in openssh_subsystems %}
|
|
Subsystem {{ subsystem.name }} {{ subsystem.command }}
|
|
{% endfor %}
|
|
|
|
# Security hardening
|
|
StrictModes yes
|
|
HostbasedAuthentication no
|
|
IgnoreRhosts yes
|
|
PermitUserEnvironment no
|
|
AcceptEnv LANG LC_*
|
|
|
|
# Certificate Authority Configuration
|
|
{% if openssh_enable_ca %}
|
|
{% if openssh_trusted_user_ca_keys | length > 0 %}
|
|
{% for ca_key in openssh_trusted_user_ca_keys %}
|
|
TrustedUserCAKeys {{ ca_key }}
|
|
{% endfor %}
|
|
{% endif %}
|
|
{% if openssh_host_certificate %}
|
|
HostCertificate {{ openssh_host_certificate }}
|
|
{% endif %}
|
|
{% endif %}
|
|
|
|
# Additional Hardening Options
|
|
{% if openssh_disable_forwarding_comprehensive and openssh_has_disable_forwarding | default(false) %}
|
|
# Comprehensive forwarding disable (OpenSSH 7.4+, fixed in 10.0)
|
|
DisableForwarding yes
|
|
{% else %}
|
|
{% if openssh_disable_forwarding or openssh_disable_tcp_forwarding %}
|
|
AllowTcpForwarding no
|
|
{% else %}
|
|
AllowTcpForwarding yes
|
|
{% endif %}
|
|
{% if openssh_disable_forwarding or openssh_disable_agent_forwarding %}
|
|
AllowAgentForwarding no
|
|
{% else %}
|
|
AllowAgentForwarding yes
|
|
{% endif %}
|
|
{% if openssh_disable_forwarding or openssh_disable_stream_local_forwarding %}
|
|
AllowStreamLocalForwarding no
|
|
{% endif %}
|
|
{% if openssh_disable_tunneling %}
|
|
PermitTunnel no
|
|
{% endif %}
|
|
{% endif %}
|
|
GatewayPorts no
|
|
|
|
# PerSourcePenalties - Automated Rate Limiting and Attack Mitigation (OpenSSH 9.8+)
|
|
{% if openssh_has_persourcepenalties | default(false) and openssh_enable_persourcepenalties %}
|
|
# Automatic penalties for repeated failures and suspicious behavior
|
|
PerSourcePenalties authfail:{{ openssh_persource_authfail_penalty }} noauth:{{ openssh_persource_noauth_penalty }} crash:{{ openssh_persource_crash_penalty }}
|
|
PerSourceMaxStartups '{{ openssh_persource_maxstartups }}'
|
|
PerSourceNetBlockSize {{ openssh_persource_netblock_ipv4 }}:{{ openssh_persource_netblock_ipv6 }}
|
|
{% endif %}
|