From: Stephen Gran Date: Thu, 30 Jul 2009 09:55:51 +0000 (+0100) Subject: Add ssh module X-Git-Url: https://git.adam-barratt.org.uk/?a=commitdiff_plain;ds=sidebyside;h=0d5176e1034bd04ce9c76d790caa819f8b8d5341;hp=-c;p=mirror%2Fdsa-puppet.git Add ssh module Signed-off-by: Stephen Gran --- 0d5176e1034bd04ce9c76d790caa819f8b8d5341 diff --git a/manifests/site.pp b/manifests/site.pp index a88b72801..70b672223 100644 --- a/manifests/site.pp +++ b/manifests/site.pp @@ -16,6 +16,7 @@ Exec { node default { include munin-node include sudo + include ssh include debian-org include monit include apt-keys diff --git a/modules/ssh/files/ssh_config b/modules/ssh/files/ssh_config new file mode 100644 index 000000000..1ae92b5cc --- /dev/null +++ b/modules/ssh/files/ssh_config @@ -0,0 +1,51 @@ +# This is the ssh client system-wide configuration file. See +# ssh_config(5) for more information. This file provides defaults for +# users, and the values can be changed in per-user configuration files +# or on the command line. + +# Configuration data is parsed as follows: +# 1. command line options +# 2. user-specific file +# 3. system-wide file +# Any configuration value is only changed the first time it is set. +# Thus, host-specific definitions should be at the beginning of the +# configuration file, and defaults at the end. + +# Site-wide defaults for some commonly used options. For a comprehensive +# list of available options, their meanings and defaults, please see the +# ssh_config(5) man page. + +Host * +# ForwardAgent no +# ForwardX11 no +# ForwardX11Trusted yes +# RhostsRSAAuthentication no +# RSAAuthentication yes +# PasswordAuthentication yes +# HostbasedAuthentication no +# GSSAPIAuthentication no +# GSSAPIDelegateCredentials no +# GSSAPIKeyExchange no +# GSSAPITrustDNS no +# BatchMode no +# CheckHostIP yes +# AddressFamily any +# ConnectTimeout 0 +# StrictHostKeyChecking ask +# IdentityFile ~/.ssh/identity +# IdentityFile ~/.ssh/id_rsa +# IdentityFile ~/.ssh/id_dsa +# Port 22 +# Protocol 2,1 +# Cipher 3des +# Ciphers aes128-cbc,3des-cbc,blowfish-cbc,cast128-cbc,arcfour,aes192-cbc,aes256-cbc +# MACs hmac-md5,hmac-sha1,umac-64@openssh.com,hmac-ripemd160 +# EscapeChar ~ +# Tunnel no +# TunnelDevice any:any +# PermitLocalCommand no + SendEnv LANG LC_* + HashKnownHosts no + GSSAPIAuthentication no + GSSAPIDelegateCredentials no + VerifyHostKeyDNS yes diff --git a/modules/ssh/manifests/init.pp b/modules/ssh/manifests/init.pp new file mode 100644 index 000000000..75fb47597 --- /dev/null +++ b/modules/ssh/manifests/init.pp @@ -0,0 +1,16 @@ +class ssh { + package { + openssh-client: ensure => installed; + openssh-server: ensure => installed; + } + + file { "/etc/ssh/ssh_config": + source => [ "puppet:///ssh/ssh_config" ], + require => Package["openssh-client"] + ; + "/etc/ssh/sshd_config": + content => template("ssh/sshd_config.erb"), + require => Package["openssh-server"] + ; + } +} diff --git a/modules/ssh/templates/sshd_config.erb b/modules/ssh/templates/sshd_config.erb new file mode 100644 index 000000000..840a7f87c --- /dev/null +++ b/modules/ssh/templates/sshd_config.erb @@ -0,0 +1,82 @@ +# Package generated configuration file +# See the sshd(8) manpage for details + +# What ports, IPs and protocols we listen for +Port 22 +<%- extraports = case fqdn + when "ravel.debian.org" then "Port 443" + when "gluck.debian.org" then "Port 443" + when "agnesi.debian.org" then "Port 2260" + end +extraports +%> +# Use these options to restrict which interfaces/protocols sshd will bind to +#ListenAddress :: +#ListenAddress 0.0.0.0 +Protocol 2 +# HostKeys for protocol version 2 +HostKey /etc/ssh/ssh_host_rsa_key +#Privilege Separation is turned on for security +UsePrivilegeSeparation yes + +# Lifetime and size of ephemeral version 1 server key +KeyRegenerationInterval 3600 +ServerKeyBits 768 + +# Logging +SyslogFacility AUTH +LogLevel INFO + +# Authentication: +LoginGraceTime 120 +PermitRootLogin without-password +StrictModes yes + +RSAAuthentication yes +PubkeyAuthentication yes + +# 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 no + +# Change to yes to enable challenge-response passwords (beware issues with +# some PAM modules and threads) +ChallengeResponseAuthentication no + +# Kerberos options +#KerberosAuthentication no +#KerberosGetAFSToken no +#KerberosOrLocalPasswd yes +#KerberosTicketCleanup yes + +# GSSAPI options +#GSSAPIAuthentication no +#GSSAPICleanupCredentials yes + +X11Forwarding no +X11DisplayOffset 10 +PrintMotd no +PrintLastLog yes +TCPKeepAlive yes +#UseLogin no + +#MaxStartups 10:30:60 +#Banner /etc/issue.net + +# Allow client to pass locale environment variables +AcceptEnv LANG LC_* + +Subsystem sftp /usr/lib/openssh/sftp-server + +UsePAM yes +AuthorizedKeysFile /etc/ssh/userkeys/%u +AuthorizedKeysFile2 /var/lib/misc/userkeys/%u +PasswordAuthentication no