SSH Konfigurationen mit Ansible absichern

Ich verwende einige “Standardmaßnahmen” um den Zugriff auf meine Server über SSH abzusichern. Im Prinzip gilt:

  • Kein Zugriff für root
  • Kein Anmelden über Username / Passwort
  • Zugriff über einen nicht Standardport
  • Anmelden nur über Public Key Verfahren für einen Nutzer

Bisher habe ich diese Änderungen immer manuell durchgeführt. Auf Basis dieses Beitrages habe ich für die Konfigurationsänderungen folgendes Ansible Playbook gebaut.

Ist später mal eine Änderung notwendig so kann man diese in das Playbook einfügen und mit einem Befehl sind alle Server wieder auf einem neuen und gleichen Stand.

ACHTUNG: Erst ausführen wenn der Nicht Root Administrator mit Public Key und Sudo Rechten eingerichtet ist

---
- hosts: all
  sudo: yes
  tasks:
    - name: Disallow root SSH access
      action: lineinfile dest=/etc/ssh/sshd_config regexp="^PermitRootLogin" line="PermitRootLogin no" state=present
    - name: Disallow password authentication
      action: lineinfile dest=/etc/ssh/sshd_config regexp="^PasswordAuthentication" line="PasswordAuthentication no" state=present
    - name: Change Default Port
      action: lineinfile dest=/etc/ssh/sshd_config regexp="^Port" line="Port 3422" state=present
    - name: Disallow ChallengeResponseAuthentication
      action: lineinfile dest=/etc/ssh/sshd_config regexp="^ChallengeResponseAuthentication" line="ChallengeResponseAuthentication no" state=present