Ansible met Kerberos opzetten op een PHX-ontwikkeldesktop
Categories:
Projects: c2platform/phx/ansible
Overzicht
De Ansible-ontwikkelomgeving in het air-gapped PHX-domein verschilt van de open-source PHX ontwikkelomgeving (PXD). De PXD is volledig open-source en maakt deel uit van het C2 Platform-initiatief. Het gebruikt Vagrant en Ansible zonder Kerberos, wat het eenvoudiger maakt voor snelle installatie en testen. In tegenstelling daarmee vertrouwt de PHX-omgeving op Kerberos voor authenticatie en vRA voor infrastructuurvoorziening, zonder Vagrant. Deze opzet is minder geschikt voor snelle Ansible-ontwikkeling, omdat functies zoals eenvoudige VM-creatie, snapshots en geautomatiseerd omgevingsbeheer ontbreken. Om deze reden wordt het vaak aangeduid als een pseudo-ontwikkelomgeving, met meer handmatige stappen.
Deze handleiding legt uit hoe je de PHX Ansible-ontwikkelomgeving
kunt simuleren. Je zet een Ubuntu 22.04 desktop-VM genaamd pxd-ubuntu-devtop op met
Vagrant en Ansible. Eenmaal ingericht, maak je verbinding via SSH of Remmina (voor
RDP-toegang). Van daaruit voer je Ansible-taken uit in deze sandbox met Kerberos-authenticatie,
wat de PHX-domeinopzet nabootst.
Deze simulatie helpt bij het begrijpen van hoe de Ansible-ontwikkelomgeving is opgezet en werkt in het PHX-domein. Het vormt ook een basis voor het creëren en valideren van automatisering voor het beheren van de ontwikkelomgeving. Het stelt ontwikkelaars in staat om Ansible-playbooks te testen en ontwikkelen in een gecontroleerde omgeving met Kerberos, zonder toegang nodig te hebben tot het daadwerkelijke air-gapped PHX-domein. Het benadrukt beveiligingsbest practices, zoals het gebruik van forwardable Kerberos-tickets voor naadloze multi-hop authenticatie, terwijl isolatie voor ontwikkeling en testen behouden blijft.
Opmerking:
Kerberos-authenticatie wordt gebruikt voor SSH voor zowel Linux- als Windows-verbindingen
in deze handleiding. Dit wordt geconfigureerd door de standaard basisauthenticatie-instellingen te overschrijven in
het
Ansible-inventarisproject
( c2platform/phx/ansible ).
Kerberos-authenticatie is ingeschakeld voor domeingebruiker tony, door de
omgevingsvariabele ANSIBLE_INVENTORY in te stellen op
Vagrantfile.yml,hosts.ini,hosts-kerberos-override.ini.
Je kunt eenvoudig schakelen tussen Ansible-verbindingsinstellingen als volgt:
Om SSH met Kerberos te gebruiken voor zowel Linux- als Windows-hosts:
export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini,hosts-kerberos-override.ini"Dit wordt de standaard voor gebruiker
tony, omdat hij dit toevoegt aan het.bash_aliases-bestand.Om SSH te gebruiken voor Linux-hosts en WinRM voor Windows-hosts met basis- authenticatie (met gebruiker
vagrant):export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini"Om SSH te gebruiken voor Linux-hosts en WinRM voor Windows-hosts met Kerberos- authenticatie:
export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini,hosts-kerberos-override.ini,hosts-kerberos-winrm-override.ini"
Randvoorwaarden
Voordat je begint, zorg ervoor dat je het volgende hebt voltooid:
- Ansible ontwikkeldesktop in PHX-domein: Uitrollen en beheren van een Ansible ontwikkeldesktop die de setup in het air-gapped PHX-domein simuleert.
Zorg ervoor dat de benodigde nodes draaien, zo niet, start ze eerst:
vagrant up pxd-rproxy1 pxd-ad pxd-win1
Ansible-ontwikkelomgeving opzetten
Stap 1: Verbinding maken met Ansible-ontwikkeldesktop
Gebruik Remmina om in te loggen als tony met je wachtwoord (bijv.
Supersecret!
voor
testen).
Controleer de versie van het Kerberos-configuratietool:
krb5-config --version
Toon me
Controleer je huidige Kerberos-tickets:
klist
Toon me
Stap 2: Je terminal aanpassen
Maak een bestand voor Bash-aliassen om je workflow te vereenvoudigen en je productiviteit te verbeteren:
export BASH_ALIASES_URL="https://gitlab.com/c2platform/phx/ansible/-/raw/master/plays/dev/files/.bash_aliases"
curl -sL $BASH_ALIASES_URL > ~/.bash_aliases
Deze aliassen vereenvoudigen veelvoorkomende taken, zoals het activeren van de virtuele omgeving, navigeren naar projectmappen en beheren van Ansible-installaties. Voor meer informatie:
Stap 3: Python virtuele omgeving opzetten
Maak een Python 3 virtuele omgeving voor Ansible om isolatie, stabiliteit en reproduceerbaarheid te garanderen:
sudo apt update
sudo apt install virtualenv -y
mkdir ~/.virtualenv
DEB_PYTHON_INSTALL_LAYOUT='deb' virtualenv ~/.virtualenv/pxd -p python3
Deze opzet voorkomt conflicten met systeembrede Python-pakketten en volgt best practices voor ontwikkelomgevingen.
Stap 4: Projecten klonen
Laad je Bash-configuratie en installeer vereiste tools:
source ~/.bashrc
sudo apt install git curl -y
curl -s -L https://gitlab.com/c2platform/phx/ansible/-/raw/master/clone.sh | bash
Als beveiligingsbest practice, bekijk altijd de inhoud van scripts zoals
clone.sh voordat je ze uitvoert via curl en bash. Download en inspecteer het
script eerst om ervoor te zorgen dat het voldoet aan je beveiligingsstandaarden.
Stap 5: Ansible en Ansible-rollen/collecties installeren
Activeer de omgeving en installeer afhankelijkheden:
source ~/.bashrc
phx
pip install -r requirements.txt
Gebruik de vooraf gedefinieerde aliassen om Ansible-collecties en Ansible-rollen te installeren:
phx-collections
phx-roles
Deze stap zorgt ervoor dat alle vereiste Ansible-componenten zijn geïnstalleerd in de virtuele omgeving, wat schaalbaarheid en consistentie bevordert.
Stap 6: Ansible Vault-wachtwoord instellen
Om gebruiker tony Ansible te laten gebruiken, moet hij het
Ansible Vault-wachtwoord van de
inventaris instellen, wat
secret
is. Hij gebruikt
de phx-vault-password-functie:
phx
phx-vault-password
De onderstaande output toont het resultaat van het uitvoeren van het commando:
(pxd) tony@pxd-ubuntu-devtop:~/git/gitlab/c2/ansible-phx$ phx
phx-vault-password
Password doesn't exist or is empty, lets add/set it!
Password:
Vault password has been set.
(pxd) tony@pxd-ubuntu-devtop:~/git/gitlab/c2/ansible-phx$
Als je het commando voor de eerste keer uitvoert, word je gevraagd een wachtwoord in te stellen voor de GNOME Keyring1. Het Ansible Vault-wachtwoord wordt daar opgeslagen voor gemak (je hoeft het wachtwoord niet elke keer op te geven wanneer je Ansible gebruikt) en ook beveiliging. Het is een veilige plek. De onderstaande screenshot toont de GNOME Keyring-prompt die vraagt om wachtwoord en wachtwoordbevestiging.

Dit handhabt gevoelige gegevens veilig, volgens best practices voor geheimbeheer in Ansible. Voor meer details, zie:
- Veilig toegang krijgen tot Ansible Vault tijdens ontwikkeling: Richtlijn voor veilig toegang krijgen tot Ansible Vault tijdens ontwikkeling zonder wachtwoorden op te slaan in platte bestanden, met behulp van GNOME Keyring of omgevingsvariabelen.
Stap 7: Ansible ping
Controleer de opzet door een Windows-host te pingen:
ansible -m win_ping pxd-ad
Controleer de opzet door een Linux-host te pingen:
ansible -m ping pxd-ubuntu-devtop
Toon me
Windows- en Linux-hosts benaderen met Kerberos en SSH
Deze sectie test Ansible-plays om Kerberos-authenticatie via SSH voor zowel Linux- als Windows-hosts te bevestigen. Voer de volgende plays uit, die zonder fouten moeten slagen:
ansible-playbook plays/mgmt/ad.yml
ansible-playbook plays/core/win.yml --limit pxd-win1
ansible-playbook plays/mw/reverse_proxy.yml
Om te bevestigen dat Kerberos is gebruikt, vernietig je ticket:
kdestroy
Controleer of er geen actieve tickets meer zijn:
klist
Toon me
Het opnieuw uitvoeren van de laatste play zal mislukken zonder ticket:
ansible-playbook plays/mw/reverse_proxy.yml
(pxd) tony@pxd-ubuntu-devtop:~/git/gitlab/c2/ansible-phx$ ansible-playbook plays/mw/reverse_proxy.yml
ini_path: /home/tony@c2.org/git/gitlab/c2/ansible-phx/hosts.ini
[DEPRECATION WARNING]: community.general.yaml has been deprecated. The plugin
has been superseded by the the option `result_format=yaml` in callback plugin
ansible.builtin.default from ansible-core 2.13 onwards. This feature will be
removed from community.general in version 13.0.0. Deprecation warnings can be
disabled by setting deprecation_warnings=False in ansible.cfg.
PLAY [Reverse proxy] ***********************************************************
TASK [Gathering Facts] *********************************************************
fatal: [pxd-rproxy1]: UNREACHABLE! => changed=false
msg: 'Failed to connect to the host via ssh: tony@pxd-rproxy1.c2.org: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).'
unreachable: true
PLAY RECAP *********************************************************************
pxd-rproxy1 : ok=0 changed=0 unreachable=1 failed=0 skipped=0 rescued=0 ignored=0
Maak voor je verdergaat een forwardable ticket opnieuw aan:
kinit -f
Hosts benaderen met SSH voor Linux en WinRM met basisauthenticatie voor Windows
Deze opzet bootst na hoe Vagrant verbinding maakt met boxes met basisauthenticatie
(met gebruiker vagrant). Stel de inventaris in:
export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini"
Voer de plays uit de vorige sectie opnieuw uit. Ze moeten zonder fouten provisionen.
Windows-hosts benaderen met Kerberos en WinRM
Deze configuratie gebruikt SSH voor Linux en Kerberos WinRM voor Windows. Stel de inventaris in:
export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini,hosts-kerberos-override.ini,hosts-kerberos-winrm-override.ini"
Voer de plays uit de Kerberos SSH-sectie opnieuw uit. Ze moeten slagen, wat Kerberos WinRM voor Windows bevestigt.
Review
Gebruiker tony werkt met een aangepaste Ansible-configuratie via
zijn .bash_aliases met de ANSIBLE_INVENTORY-variabele en een apart
Ansible-configuratiebestand hosts-kerberos-override.ini, dat hij toevoegt aan
de inventaris door het op te nemen in ANSIBLE_INVENTORY, waarmee de normale/standaard
instellingen worden overschreven.
11export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini,hosts-kerberos-override.ini"
18[linux:vars]
19ansible_connection=ssh
20ansible_kerberos=yes
21ansible_user=
22ansible_password=
23
24[win:vars]
25ansible_connection=ssh
26ansible_kerberos=yes
27ansible_shell_type=powershell
28# ansible_shell_executable=cmd.exe
29ansible_user=
30ansible_password=
Om de standaardopzet te activeren die Vagrant gebruikt, om SSH te gebruiken voor Linux-hosts en WinRM voor Windows-hosts met basisauthenticatie:
export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini"
10[linux:vars]
11ansible_user=vagrant
12ansible_password=vagrant
13
14[win:vars]
15#ansible_connection=ssh
16#ansible_shell_type=cmd
17ansible_user=vagrant
18ansible_password=vagrant
19ansible_connection=winrm
20#ansible_port=5985
21ansible_winrm_transport=basic
22ansible_winrm_server_cert_validation=ignore
Om SSH te gebruiken voor Linux-hosts en WinRM voor Windows-hosts met Kerberos- authenticatie:
export ANSIBLE_INVENTORY="Vagrantfile.yml,hosts.ini,hosts-kerberos-override.ini,hosts-kerberos-winrm-override.ini"
hosts-kerberos-winrm-override.ini
4[win:vars]
5ansible_connection=winrm
6ansible_kerberos=yes
7ansible_winrm_transport=kerberos
Aanvullende informatie
- Instellen van de PHX Ontwikkelomgeving op Ubuntu 22
- Voorbeeld bash aliassen bestand
- Veilig toegang krijgen tot Ansible Vault tijdens ontwikkeling
- Engineering met een "Pseudo" Ontwikkelomgeving
- Ansible Vault
- Ansible Community Documentation
- Kerberos Ticket Properties - Kerberos V5 UNIX User's Guide
GNOME Keyring is een veilige opslagdaemon voor het beheren van wachtwoorden, sleutels en certificaten in GNOME-gebaseerde Linux-omgevingen. Het biedt versleutelde opslag en automatische ontgrendeling tijdens gebruikersessies, wat de beveiliging van gevoelige gegevens zoals Ansible Vault-wachtwoorden verbetert. ↩︎
Feedback
Was deze pagina nuttig?
Fijn om te horen! Vertel ons alstublieft hoe we kunnen verbeteren.
Jammer om dat te horen. Vertel ons alstublieft hoe we kunnen verbeteren.