All Downloads are FREE. Search and download functionalities are using the official Maven repository.

pallet.crate.ssh.clj Maven / Gradle / Ivy

There is a newer version: 0.7.0-beta.1
Show newest version
(ns pallet.crate.ssh
  "Crate for managing ssh"
  (:require
   [pallet.target :as target]
   [pallet.argument :as argument]
   [pallet.request-map :as request-map]
   pallet.crate.iptables
   pallet.resource.package
   pallet.resource.service
   [pallet.crate.nagios-config :as nagios-config]))

(defn openssh
  "Install OpenSSH"
  [request]
  (pallet.resource.package/packages
   request
   :yum ["openssh-clients" "openssh"]
   :aptitude ["openssh-client" "openssh-server"]
   :pacman ["openssh"]))

(defn service-name
  "SSH service name"
  [packager]
  (condp = packager
      :aptitude "ssh"
      :yum "sshd"))

(defn sshd-config
  "Take an sshd config string, and write to sshd_conf."
  [request config]
  (->
   request
   (pallet.resource.remote-file/remote-file
    "/etc/ssh/sshd_config"
    :mode "0644"
    :owner "root"
    :content config)
   (pallet.resource.service/service
    (service-name (request-map/packager request))
    :action :reload)))


(defn iptables-accept
  "Accept ssh, by default on port 22"
  ([request] (iptables-accept request 22))
  ([request port]
     (pallet.crate.iptables/iptables-accept-port request port)))

(defn iptables-throttle
  "Throttle ssh connection attempts, by default on port 22"
  ([request] (iptables-throttle request 22))
  ([request port] (iptables-throttle request port 60 6))
  ([request port time-period hitcount]
     (pallet.crate.iptables/iptables-throttle
      request
      "SSH_CHECK" port "tcp" time-period hitcount)))

(defn nagios-monitor
  "Configure nagios monitoring for ssh"
  [request & {:keys [command] :as options}]
  (nagios-config/service
   request
   (merge
    {:servicegroups [:ssh-services]
     :service_description "SSH"
     :check_command "check_ssh"}
    options)))




© 2015 - 2025 Weber Informatics LLC | Privacy Policy