diff --git a/sshd_config/defaults/main.yml b/sshd_config/defaults/main.yml new file mode 100644 index 00000000..49279a49 --- /dev/null +++ b/sshd_config/defaults/main.yml @@ -0,0 +1,27 @@ +--- +sshd_port: 22 +sshd_config_dir: /etc/ssh +sshd_config_file: sshd_config +sshd_protocol: 2 +sshd_serverkeybits: 2048 +sshd_password_authentication: "no" +sshd_permit_empty_passwords: "no" +# "no" or "without-password" +sshd_permit_root_login: "without-password" +sshd_strict_mode: "yes" +sshd_use_pam: "yes" +# set to "yes" only if you are using s/key or something equivalent +sshd_challenge_response_authentication: "no" +sshd_enable_sftp_subsystem: True +sshd_use_login: "no" +sshd_permit_tunnel: "yes" +sshd_gssapi_authentication: "no" +sshd_gssapi_credentials: "no" +sshd_x11_forwarding: "no" +sshd_agent_forwarding: "yes" +sshd_tcp_forwarding: "no" +sshd_permit_user_environment: "no" +sshd_show_patchlevel: "no" +# Usually /etc/issue.net +sshd_banner_path: "none" +sshd_acceptenv: "LANG LC_*" diff --git a/sshd_config/handlers/main.yml b/sshd_config/handlers/main.yml new file mode 100644 index 00000000..67979564 --- /dev/null +++ b/sshd_config/handlers/main.yml @@ -0,0 +1,3 @@ +--- +- name: Reload the ssh service + service: name=ssh state=reloaded diff --git a/sshd_config/tasks/main.yml b/sshd_config/tasks/main.yml new file mode 100644 index 00000000..4523113e --- /dev/null +++ b/sshd_config/tasks/main.yml @@ -0,0 +1,5 @@ +--- +- name: Install the sshd configuration file + template: src=sshd_config.j2 dest={{ sshd_config_dir }}/{{ sshd_config_file }} owner=root group=root mode=0644 + notify: Reload the ssh service + tags: [ 'ssh', 'sshd_config' ] diff --git a/sshd_config/templates/sshd_config.j2 b/sshd_config/templates/sshd_config.j2 new file mode 100644 index 00000000..39150cda --- /dev/null +++ b/sshd_config/templates/sshd_config.j2 @@ -0,0 +1,93 @@ +# What ports, IPs and protocols we listen for +Port {{ sshd_port }} +# Use these options to restrict which interfaces/protocols sshd will bind to +#ListenAddress :: +#ListenAddress 0.0.0.0 +Protocol {{ sshd_protocol }} +# HostKeys for protocol version 2 +HostKey /etc/ssh/ssh_host_rsa_key +HostKey /etc/ssh/ssh_host_dsa_key +HostKey /etc/ssh/ssh_host_ecdsa_key +HostKey /etc/ssh/ssh_host_ed25519_key +#Privilege Separation is turned on for security +UsePrivilegeSeparation yes + +# Lifetime and size of ephemeral version 1 server key +KeyRegenerationInterval 3600 +ServerKeyBits {{ sshd_serverkeybits }} + +# Logging +SyslogFacility AUTH +LogLevel INFO + +# Authentication: +LoginGraceTime 120 +PermitRootLogin {{ sshd_permit_root_login }} +StrictModes {{ sshd_strict_mode }} + +RSAAuthentication yes +PubkeyAuthentication yes +#AuthorizedKeysFile %h/.ssh/authorized_keys + +# Don't read the user's ~/.rhosts and ~/.shosts files +IgnoreRhosts yes +# For this to work you will also need host keys in /etc/ssh_known_hosts +RhostsRSAAuthentication no +# similar for protocol version 2 +HostbasedAuthentication no +# Uncomment if you don't trust ~/.ssh/known_hosts for RhostsRSAAuthentication +#IgnoreUserKnownHosts yes + +# To enable empty passwords, change to yes (NOT RECOMMENDED) +PermitEmptyPasswords {{ sshd_permit_empty_passwords }} + +# Change to yes to enable challenge-response passwords (beware issues with +# some PAM modules and threads) +ChallengeResponseAuthentication {{ sshd_challenge_response_authentication }} + +# Change to no to disable tunnelled clear text passwords +PasswordAuthentication {{ sshd_password_authentication }} + +# Kerberos options +#KerberosAuthentication no +#KerberosGetAFSToken no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes + +# GSSAPI options +GSSAPIAuthentication {{ sshd_gssapi_authentication }} +GSSAPICleanupCredentials {{ sshd_gssapi_credentials }} + +PermitTunnel {{ sshd_permit_tunnel }} +X11Forwarding {{ sshd_x11_forwarding }} +X11DisplayOffset 10 +PrintMotd no +PrintLastLog yes +TCPKeepAlive yes +UseLogin {{ sshd_use_login }} +AllowAgentForwarding {{ sshd_agent_forwarding }} +AllowTcpForwarding {{ sshd_tcp_forwarding }} +PermitUserEnvironment {{ sshd_permit_user_environment }} +ShowPatchLevel {{ sshd_show_patchlevel }} + +#MaxStartups 10:30:60 +Banner {{ sshd_banner_path }} + + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +{% if sshd_enable_sftp_subsystem %} +Subsystem sftp /usr/lib/openssh/sftp-server +{% endif %} + +# Set this to 'yes' to enable PAM authentication, account processing, +# and session processing. If this is enabled, PAM authentication will +# be allowed through the ChallengeResponseAuthentication and +# PasswordAuthentication. Depending on your PAM configuration, +# PAM authentication via ChallengeResponseAuthentication 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 ChallengeResponseAuthentication to 'no'. +UsePAM {{ sshd_use_pam }}