ITA - Ansible - Common Role
September 2023 (389 Words, 3 Minutes)
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:
- tools base
- regole di firewall base
- ssh server enforcement
- users
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:
- crea un gruppo
ssh
- crea il file
/etc/ssh/sshd_config.d/custom_config.conf
, con questo contenuto:
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
Quest'opera è distribuita con Licenza Creative Commons Attribuzione - Condividi allo stesso modo 4.0 Internazionale Theme Moonwalk