X-Git-Url: https://git.adam-barratt.org.uk/?a=blobdiff_plain;f=modules%2Fssh%2Fmanifests%2Finit.pp;h=df986bc236ac9c0544ccbcb97a652f0d8c465396;hb=1dee729d00307f93d600b5bb6902494bd30a4484;hp=c6d1646a600dd0ec59e08125ac3a339454fd7cd6;hpb=78ceca7ca6540a83d24a89016263235c923543db;p=mirror%2Fdsa-puppet.git diff --git a/modules/ssh/manifests/init.pp b/modules/ssh/manifests/init.pp index c6d1646a6..df986bc23 100644 --- a/modules/ssh/manifests/init.pp +++ b/modules/ssh/manifests/init.pp @@ -1,50 +1,67 @@ -class ssh { - package { - openssh-client: ensure => installed; - openssh-server: ensure => installed; - } +# @param extraports Addresses/ports to listen on, in addition to 22 +class ssh ( + Array[String] $extraports = [], +) { + package { [ 'openssh-client', 'openssh-server']: + ensure => installed + } - case $hostname { - bartok, beethoven: { - $keyinfo = allnodeinfo("sshRSAHostKey", "ipHostNumber") - } - } + service { 'ssh': + ensure => running, + require => Package['openssh-server'] + } + ferm::rule::simple { 'dsa-ssh': + description => 'check ssh access', + port => 'ssh', + target => 'ssh', + } + ferm::rule { 'dsa-ssh-sources': + description => 'Allow SSH from DSA', + domain => '(ip ip6)', + chain => 'ssh', + rule => 'saddr ($SSH_SOURCES) ACCEPT' + } + Ferm::Rule::Simple <<| tag == 'ssh::server::from::nagios' |>> - 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"], - notify => Exec["ssh restart"] - ; - "/etc/ssh/userkeys": - ensure => directory, - owner => root, - group => root, - mode => 755, - ; - "/etc/ssh/userkeys/root": - content => template("ssh/authorized_keys.erb"), - mode => 444, - require => Package["openssh-server"] - ; - } + file { '/etc/ssh/ssh_config': + content => template('ssh/ssh_config.erb'), + require => Package['openssh-client'] + } + file { '/etc/ssh/sshd_config': + content => template('ssh/sshd_config.erb'), + require => Package['openssh-server'], + notify => Service['ssh'] + } + file { '/etc/ssh/userkeys': + ensure => directory, + mode => '0755', + require => Package['openssh-server'] + } + file { '/etc/ssh/puppetkeys': + ensure => directory, + mode => '0755', + purge => true, + recurse => true, + force => true, + source => 'puppet:///files/empty/', + require => Package['openssh-server'] + } + file { '/etc/ssh/userkeys/root': + content => template('ssh/authorized_keys.erb'), + } - exec { "ssh restart": - path => "/etc/init.d:/usr/bin:/usr/sbin:/bin:/sbin", - refreshonly => true, - } + if (versioncmp($::lsbmajdistrelease, '8') >= 0) { + if ! $facts['has_etc_ssh_ssh_host_ed25519_key'] { + exec { 'create-ed25519-host-key': + command => 'ssh-keygen -f /etc/ssh/ssh_host_ed25519_key -q -P "" -t ed25519', + } + } - @ferm::rule { "dsa-ssh": - description => "Allow SSH from DSA", - rule => "proto tcp mod state state (NEW) dport (ssh) @subchain 'ssh' { saddr (\$SSH_SOURCES) ACCEPT; }" - } - @ferm::rule { "dsa-ssh-v6": - description => "Allow SSH from DSA", - domain => "ip6", - rule => "proto tcp mod state state (NEW) dport (ssh) @subchain 'ssh' { saddr (\$SSH_V6_SOURCES) ACCEPT; }" - } + if $facts['systemd'] { + package { [ 'libpam-systemd' ]: + ensure => installed + } + } + } }