diff --git a/ansible/playbooks/tasks/ssh_config.yml b/ansible/playbooks/tasks/ssh_config.yml index 15941ac..b27c60a 100644 --- a/ansible/playbooks/tasks/ssh_config.yml +++ b/ansible/playbooks/tasks/ssh_config.yml @@ -13,7 +13,7 @@ - name: SSH daemon configuration - global block: - name: SSH daemon configuration - base - template: + ansible.builtin.template: src: "etc/ssh/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-sshd_config.j2" dest: "/etc/ssh/sshd_config" owner: root @@ -22,6 +22,56 @@ validate: /usr/sbin/sshd -t -f %s backup: true notify: restart_sshd + when: + - ansible_distribution_major_version == '8' + + - name: Ensure an empty file exists + ansible.builtin.template: + state: touch + path: "/etc/ssh/sshd_config.d/99-end.conf" + owner: root + group: root + mode: '0600' + notify: restart_sshd + when: + - ansible_distribution_major_version == '8' + + - name: Ensure sshd_config.d dir exists + ansible.builtin.file: + state: directory + path: "/etc/ssh/sshd_config.d" + owner: root + group: root + mode: '0700' + notify: restart_sshd + + - name: Default Modular Configuration + when: + - (ansible_facts['distribution'] == 'Fedora') or + (ansible_facts['distribution'] in el_distro_name and ansible_facts['distribution_major_version']|int >= 9) + block: + #- name: Modular configuration (redhat) + # template: + # src: "etc/ssh/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-50-redhat.conf.j2" + # dest: "{{ ssh_modular_config }}" + # owner: root + # group: root + # mode: '0600' + # validate: /usr/sbin/sshd -t -f %s + # backup: yes + # notify: restart_sshd + + - name: Custom Modular Configuration + template: + src: "etc/ssh/{{ ansible_distribution }}-{{ ansible_distribution_major_version }}-60-infra.conf.j2" + dest: "/etc/ssh/sshd_config.d/60-infra.conf" + owner: root + group: root + mode: '0600' + validate: /usr/sbin/sshd -t -f %s + backup: yes + notify: restart_sshd + rescue: - name: Print errors for configuration and validation debug: @@ -30,7 +80,7 @@ - name: SSH banner copy: src: "etc/rockybanner" - dest: "/etc/rockybanner" + dest: "/etc/banner" owner: root group: root mode: '0644' diff --git a/ansible/playbooks/templates/etc/ssh/RedHat-8-sshd_config.j2 b/ansible/playbooks/templates/etc/ssh/RedHat-8-sshd_config.j2 index f940d24..0b427d8 100644 --- a/ansible/playbooks/templates/etc/ssh/RedHat-8-sshd_config.j2 +++ b/ansible/playbooks/templates/etc/ssh/RedHat-8-sshd_config.j2 @@ -150,7 +150,7 @@ Subsystem sftp /usr/libexec/openssh/sftp-server ################################################################################ # Below managed by {{ ansible_managed }} # -Banner /etc/rockybanner +Banner /etc/banner PermitRootLogin no X11Forwarding no LoginGraceTime 1m diff --git a/ansible/playbooks/templates/etc/ssh/RedHat-9-60-infra.conf.j2 b/ansible/playbooks/templates/etc/ssh/RedHat-9-60-infra.conf.j2 new file mode 100644 index 0000000..4866dfd --- /dev/null +++ b/ansible/playbooks/templates/etc/ssh/RedHat-9-60-infra.conf.j2 @@ -0,0 +1,19 @@ +################################################################################ +# Below managed by Rocky Infrastructure +# +Banner /etc/banner +PermitRootLogin no +Port 22 +X11Forwarding no +LoginGraceTime 1m + +# IPA +AuthorizedKeysCommand /usr/bin/sss_ssh_authorizedkeys +AuthorizedKeysCommandUser nobody +ChallengeResponseAuthentication yes + +# IPA Automatic +PubkeyAuthentication yes +KerberosAuthentication no +GSSAPIAuthentication yes +UsePAM yes diff --git a/ansible/playbooks/templates/etc/ssh/RedHat-9-sshd_config.j2 b/ansible/playbooks/templates/etc/ssh/RedHat-9-sshd_config.j2 new file mode 100644 index 0000000..d0717f9 --- /dev/null +++ b/ansible/playbooks/templates/etc/ssh/RedHat-9-sshd_config.j2 @@ -0,0 +1,130 @@ +# $OpenBSD: sshd_config,v 1.104 2021/07/02 05:11:21 dtucker Exp $ + +# This is the sshd server system-wide configuration file. See +# sshd_config(5) for more information. + +# This sshd was compiled with PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin + +# The strategy used for options in the default sshd_config shipped with +# OpenSSH is to specify options with their default value where +# possible, but leave them commented. Uncommented options override the +# default value. + +# To modify the system-wide sshd configuration, create a *.conf file under +# /etc/ssh/sshd_config.d/ which will be automatically included below +Include /etc/ssh/sshd_config.d/*.conf + +# If you want to change the port on a SELinux system, you have to tell +# SELinux about this change. +# semanage port -a -t ssh_port_t -p tcp #PORTNUMBER +# +#Port 22 +#AddressFamily any +#ListenAddress 0.0.0.0 +#ListenAddress :: + +#HostKey /etc/ssh/ssh_host_rsa_key +#HostKey /etc/ssh/ssh_host_ecdsa_key +#HostKey /etc/ssh/ssh_host_ed25519_key + +# Ciphers and keying +#RekeyLimit default none + +# Logging +#SyslogFacility AUTH +#LogLevel INFO + +# Authentication: + +#LoginGraceTime 2m +#PermitRootLogin prohibit-password +#StrictModes yes +#MaxAuthTries 6 +#MaxSessions 10 + +#PubkeyAuthentication yes + +# The default is to check both .ssh/authorized_keys and .ssh/authorized_keys2 +# but this is overridden so installations will only check .ssh/authorized_keys +AuthorizedKeysFile .ssh/authorized_keys + +#AuthorizedPrincipalsFile none + +#AuthorizedKeysCommand none +#AuthorizedKeysCommandUser nobody + +# For this to work you will also need host keys in /etc/ssh/ssh_known_hosts +#HostbasedAuthentication no +# Change to yes if you don't trust ~/.ssh/known_hosts for +# HostbasedAuthentication +#IgnoreUserKnownHosts no +# Don't read the user's ~/.rhosts and ~/.shosts files +#IgnoreRhosts yes + +# To disable tunneled clear text passwords, change to no here! +#PasswordAuthentication yes +#PermitEmptyPasswords no + +# Change to no to disable s/key passwords +#KbdInteractiveAuthentication yes + +# Kerberos options +#KerberosAuthentication no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes +#KerberosGetAFSToken no +#KerberosUseKuserok yes + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes +#GSSAPIStrictAcceptorCheck yes +#GSSAPIKeyExchange no +#GSSAPIEnablek5users no + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the KbdInteractiveAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via KbdInteractiveAuthentication may bypass +# the setting of "PermitRootLogin without-password". +# If you just want the PAM account and session checks to run without +# PAM authentication, then enable this but set PasswordAuthentication +# and KbdInteractiveAuthentication to 'no'. +# WARNING: 'UsePAM no' is not supported in Fedora and may cause several +# problems. +#UsePAM no + +#AllowAgentForwarding yes +#AllowTcpForwarding yes +#GatewayPorts no +#X11Forwarding no +#X11DisplayOffset 10 +#X11UseLocalhost yes +#PermitTTY yes +#PrintMotd yes +#PrintLastLog yes +#TCPKeepAlive yes +#PermitUserEnvironment no +#Compression delayed +#ClientAliveInterval 0 +#ClientAliveCountMax 3 +#UseDNS no +#PidFile /var/run/sshd.pid +#MaxStartups 10:30:100 +#PermitTunnel no +#ChrootDirectory none +#VersionAddendum none + +# no default banner path +#Banner none + +# override default of no subsystems +Subsystem sftp /usr/libexec/openssh/sftp-server + +# Example of overriding settings on a per-user basis +#Match User anoncvs +# X11Forwarding no +# AllowTcpForwarding no +# PermitTTY no +# ForceCommand cvs server diff --git a/ansible/playbooks/templates/etc/ssh/Rocky-9-60-infra.conf.j2 b/ansible/playbooks/templates/etc/ssh/Rocky-9-60-infra.conf.j2 new file mode 120000 index 0000000..1be25af --- /dev/null +++ b/ansible/playbooks/templates/etc/ssh/Rocky-9-60-infra.conf.j2 @@ -0,0 +1 @@ +RedHat-9-60-infra.conf.j2 \ No newline at end of file diff --git a/ansible/playbooks/templates/etc/ssh/Rocky-9-sshd_config.j2 b/ansible/playbooks/templates/etc/ssh/Rocky-9-sshd_config.j2 new file mode 120000 index 0000000..968dc7b --- /dev/null +++ b/ansible/playbooks/templates/etc/ssh/Rocky-9-sshd_config.j2 @@ -0,0 +1 @@ +RedHat-9-sshd_config.j2 \ No newline at end of file diff --git a/ansible/playbooks/templates/opt/noggin/noggin.cfg b/ansible/playbooks/templates/opt/noggin/noggin.cfg index baaa5b9..2ed69de 100644 --- a/ansible/playbooks/templates/opt/noggin/noggin.cfg +++ b/ansible/playbooks/templates/opt/noggin/noggin.cfg @@ -21,3 +21,4 @@ MAIL_SUPPRESS_SEND = False AVATAR_SERVICE_URL = "https://seccdn.libravatar.org/" AVATAR_DEFAULT_TYPE = "retro" FEDORA_MESSAGING_ENABLED = False +USERNAME_BLOCKLIST = ['root']