Add ssh module
authorStephen Gran <steve@lobefin.net>
Thu, 30 Jul 2009 09:55:51 +0000 (10:55 +0100)
committerStephen Gran <steve@lobefin.net>
Thu, 30 Jul 2009 09:55:51 +0000 (10:55 +0100)
Signed-off-by: Stephen Gran <steve@lobefin.net>
manifests/site.pp
modules/ssh/files/ssh_config [new file with mode: 0644]
modules/ssh/manifests/init.pp [new file with mode: 0644]
modules/ssh/templates/sshd_config.erb [new file with mode: 0644]

index a88b728..70b6722 100644 (file)
@@ -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 (file)
index 0000000..1ae92b5
--- /dev/null
@@ -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 (file)
index 0000000..75fb475
--- /dev/null
@@ -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 (file)
index 0000000..840a7f8
--- /dev/null
@@ -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