Home

ITA - Ansible - Common Role

ansible linux

Introduzione

Questo articolo fa parte dello studio che ho fatto su ansible, ed estende il post Ansible - Un Breve Riepilogo.

Quello che segue è la descrizione di quello che, secondo le mie necesità, dovrebbe essere la base di ogni sistema controllato da ansible.

Come descritto in Ansible - Un Breve Riepilogo un ruolo va incluso in un playbook, il mio consiglio è di farlo come git submodule

Il fine di questo ruolo è quello di contenere tutti i tool e configurazioni base per ogni sistema debian.

I punti trattati sono:

Il codice è disponibile su github ansible-common-role.

Common Role

Pacchetti base

Questa ricetta intalla i seguenti pacchetti:

 rsync
 tmux
 vim
 net-tools
 iptables-persistent
 fail2ban
 sudo

Basic firewall policies

Il firewall è gestito tramite il modulo iptables, le regole aggiunte sono quelle suggerite da Debian Wiki

#!/bin/sh
# A very basic IPtables / Netfilter script /etc/firewall/enable.sh

PATH='/sbin'

# Flush the tables to apply changes
iptables -F

# Default policy to drop 'everything' but our output to internet
iptables -P FORWARD DROP
iptables -P INPUT   DROP
iptables -P OUTPUT  ACCEPT

# Allow established connections (the responses to our outgoing traffic)
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# Allow local programs that use loopback (Unix sockets)
iptables -A INPUT -s 127.0.0.0/8 -d 127.0.0.0/8 -i lo -j ACCEPT

# Uncomment this line to allow incoming SSH/SCP conections to this machine,
# for traffic from 10.20.0.2 (you can use also use a network definition as
# source like 10.20.0.0/22).
# iptables -A INPUT -s 10.20.0.2 -p tcp --dport 22 -m state --state NEW -j ACCEPT

SSH server enforcement

Questa ricetta:

AuthorizedKeysFile	.ssh/authorized_keys # specifies the path for auth keys

PasswordAuthentication no # disable pass authentication
PermitEmptyPasswords no # disable empty passwords authentication

PermitRootLogin no # disable root login via ssh

AllowGroups ssh # only users belonging to the ssh group can login

L’utlima misura consiste nell’abilitare la jail di fail2ban.

Utenti

Utenti speciali

Utente Admin

Ansible necessità un utente amministratore con sudo, l’utente usato per connettersi con ansible, questo utente verrà aggiunto al gruppo ssh.

L’utente può essere configurato tramite le variabili:

ansible_ssh_public_key_file: "{ { lookup('file', '{ { playbook_dir } }/.ssh/admin_rsa.pub') } }"

Utente snapshot

Questa ricetta crea l’utente di sistema snapshot; questo utente è pensato per eseguire degli snapshot di sistema usando rsnapshot, perciò questo utente fa parte del gruppo ssh, e viene installato un file di configurazione per sudo che gli permette di eseguire rsync da root.

La chiave pubblica può essere configurata con la variabile:

snapshot_ssh_public_key_file: "{ { lookup('file', '{ { playbook_dir } }/.ssh/admin_rsa.pub') } }"

Altri utenti

Questo ruolo permette di aggiungere altri utenti al sistema, usando la variabile other_users; tutti i nome utente di questo gruppo apparterranno ai gruppi users e ssh.

- other_users:
 - pippo
 - pluto

Riferimenti