timorunge.freeipa_server

serwer_freeipa

Ta rola instaluje i konfiguruje serwer FreeIPA zgodnie z Twoimi potrzebami.

Ten skrypt zajmuje się inicjalizacją użytkownika administracyjnego Kerberos (nazwa użytkownika: admin, hasło to to, co ustawiasz w freeipa_server_admin_password).

W połączeniu z freeipa (Github) można używać freeipa_server z najnowszą wersją FreeIPA na Ubuntu >= 18.04 (sprawdź sekcję przykłady).

Nie obsługuje Ubuntu 20.04

Ubuntu 20.04 nie ma pakietu freeipa-server.

Wymagania

Ta rola wymaga Ansible 2.5.0 lub nowszego.

Możesz łatwo zainstalować (i określić) stabilną wersję za pomocą pip:

pip install ansible==2.7.7

Wszystkie wymagania platformowe są wymienione w pliku metadanych.

Instalacja

ansible-galaxy install timorunge.freeipa_server

Zmienne roli

Należy ustawić następujące zmienne, aby uruchomić tę rolę (bez dostosowywania). Te zmienne nie mają domyślnych wartości:

# Hasło użytkownika administracyjnego kerberos - co najmniej 8 znaków
# Typ: Str
freeipa_server_admin_password: Passw0rd
# Główną domena DNS wdrożenia IPA
# Typ: Str
freeipa_server_domain: example.com
# Hasło dla Directory Manager - co najmniej 8 znaków
# Typ: Str
freeipa_server_ds_password: Passw0rd
# Nazwa hosta tej maszyny (FQDN)
# Typ: Str
freeipa_server_fqdn: ipa.example.com
# Adres IP serwera głównego
# Typ: Str
freeipa_server_ip: 172.20.0.2
# Nazwa królestwa Kerberos wdrożenia IPA
# Typ: Str
freeipa_server_realm: EXAMPLE.COM

Zmienne, które można przekazać do tej roli, oraz ich krótki opis są następujące. (Aby uzyskać wszystkie zmienne, sprawdź defaults/main.yml)

# Włącz/Wyłącz zarządzanie repozytorium RedHat epel
# Typ: Bool
freeipa_server_enable_epel_repo: true

# Automatyczne ustawianie wpisu w /etc/hosts
# Typ: Bool
freeipa_server_manage_host: true

# Wybór rodzaju instalacji serwera FreeIPA (master/replica)
# Typ: Str
freeipa_server_type: master

# FQDN serwera głównego FreeIPA
# Typ: Str
freeipa_server_master_fqdn: ''

# Podstawowa komenda dla instalacji FreeIPA
# Typ: Str
freeipa_server_install_base_command: ipa-{{ 'server' if freeipa_server_type == 'master' else 'replica' }}-install --unattended {{ '--server=' + freeipa_server_master_fqdn if freeipa_server_type == 'replica' }}

# Domyślne opcje instalacji FreeIPA
# Typ: Lista
freeipa_server_install_options:
  - "--realm={{ freeipa_server_realm }}"
  - "--domain={{ freeipa_server_domain }}"
  - "--setup-dns"
  - "--ds-password={{ freeipa_server_ds_password }}"
  - "--admin-password={{ freeipa_server_admin_password }}"
  - "--mkhomedir"
  - "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
  - "--ip-address={{ freeipa_server_ip }}"
  - "--no-host-dns"
  - "--no-ntp"
  - "--idstart=5000"
  - "--ssh-trust-dns"
  - "--forwarder=8.8.8.8"
  - "--auto-forwarders"

Przykłady

Aby dokument był zwięzły, opcje instalacji zostały pominięte. Możesz znaleźć opcje instalacji w tym dokumencie lub w online man pages dla ipa-server-install.

1) Instalacja serwera FreeIPA jako master z domyślnymi ustawieniami

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa-master.example.com
    freeipa_server_ip: 172.20.0.2
    freeipa_server_realm: EXAMPLE.COM
  roles:
    - timorunge.freeipa_server

2) Instalacja serwera FreeIPA jako replica z domyślnymi ustawieniami

- hosts: freeipa-server
  vars:
    freeipa_server_type: replica
    freeipa_server_master_fqdn: ipa-master.example.com
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa-replica.example.com
    freeipa_server_ip: 172.20.0.3
    freeipa_server_realm: EXAMPLE.COM
  roles:
    - timorunge.freeipa_server

3) Instalacja serwera FreeIPA i automatyczne włączanie we wszystkich interfejsach sieciowych (IPv4)

Należy nadal ustawić freeipa_server_ip, jeśli chcesz używać freeipa_server_manage_host.

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa.example.com
    freeipa_server_ip: 172.20.0.3
    freeipa_server_realm: EXAMPLE.COM
    freeipa_server_install_options:
      - "--ip-address={{ ansible_all_ipv4_addresses | join(' --ip-address=') }}"
  roles:
    - timorunge.freeipa_server

4) Instalacja serwera FreeIPA z niestandardowymi opcjami instalacyjnymi

- hosts: freeipa-server
  vars:
    freeipa_server_admin_password: Passw0rd
    freeipa_server_domain: example.com
    freeipa_server_ds_password: Passw0rd
    freeipa_server_fqdn: ipa.example.com
    freeipa_server_ip: 172.20.0.2
    freeipa_server_realm: EXAMPLE.COM
    freeipa_server_install_options:
      - "--realm={{ freeipa_server_realm }}"
      - "--domain={{ freeipa_server_domain }}"
      - "--setup-dns"
      - "--ds-password {{ freeipa_server_ds_password }}"
      - "--admin-password {{ freeipa_server_admin_password }}"
      - "--mkhomedir"
      - "--hostname={{ freeipa_server_fqdn | default(ansible_fqdn) }}"
      - "--ip-address={{ freeipa_server_ip }}"
      - "--ip-address=10.0.0.2"
      - "--ip-address=192.168.20.2"
      - "--no-host-dns"
      - "--no-ntp"
      - "--idstart=5000"
      - "--ssh-trust-dns"
      - "--forwarder=8.8.8.8"
      - "--auto-forwarders"
      - "--no-ui-redirect"
      - "--no-ssh"
      - "--no-sshd"
  roles:
    - timorunge.freeipa_server

Opcje instalacji serwera FreeIPA

Przegląd opcji instalacji dla ipa-server-install (4.6.4).

Użycie: ipa-server-install [opcja]

Opcje:
  --version              pokaż numer wersji programu i zakończ
  -h, --help             pokaż ten komunikat i zakończ
  -U, --unattended       nie zapytuj użytkownika przy (de)instalacji
  --uninstall            deinstaluj istniejącą instalację. Deinstalację można
                         uruchomić z opcją --unattended

  Podstawowe opcje:
    -p DM_PASSWORD, --ds-password=DM_PASSWORD
                        Hasło Directory Managera
    -a ADMIN_PASSWORD, --admin-password=ADMIN_PASSWORD
                        hasło użytkownika administracyjnego kerberos
    --ip-address=IP_ADDRESS
                        Adres IP serwera głównego. Można używać tej opcji
                        wielokrotnie
    -n DOMAIN_NAME, --domain=DOMAIN_NAME
                        główna domena DNS wdrożenia IPA (niekoniecznie
                        związana z bieżącą nazwą hosta)
    -r REALM_NAME, --realm=REALM_NAME
                        nazwa królestwa Kerberos wdrożenia IPA (zwykle
                        nazwa głównej domeny DNS napisana wielkimi literami)
    --hostname=HOST_NAME
                        w pełni kwalifikowana nazwa tego hosta
    --ca-cert-file=FILE
                        Plik zawierający certyfikaty CA dla certyfikatów
                        serwisowych
    --no-host-dns       Nie używaj DNS do wyszukiwania nazwy hosta podczas instalacji

  Opcje serwera:
    --setup-adtrust     skonfiguruj możliwość zaufania AD
    --setup-kra         skonfiguruj dogtag KRA
    --setup-dns         skonfiguruj bind ze strefą
    --idstart=IDSTART   Wartość początkowa zakresu ID (domyślnie losowa)
    --idmax=IDMAX       Maksymalna wartość zakresu ID (domyślnie:
                        idstart+199999)
    --no-hbac-allow     Nie instaluj reguły allow_all HBAC
    --no-pkinit         wyłącza kroki konfiguracji pkinit
    --no-ui-redirect    Nie przekierowuj automatycznie do interfejsu internetowego
    --dirsrv-config-file=FILE
                        Ścieżka do pliku LDIF, który będzie użyty do
                        modyfikacji konfiguracji dse.ldif podczas instalacji
                        instancji serwera katalogowego

  Opcje certyfikatu SSL:
    --dirsrv-cert-file=FILE
                        Plik zawierający certyfikat SSL Serwera Katalogowego
                        i klucz prywatny
    --http-cert-file=FILE
                        Plik zawierający certyfikat SSL Serwera Apache'a i
                        klucz prywatny
    --pkinit-cert-file=FILE
                        Plik zawierający certyfikat SSL KDC Kerberosa i
                        klucz prywatny
    --dirsrv-pin=PIN    Hasło do odblokowania klucza prywatnego Serwera Katalogowego
    --http-pin=PIN      Hasło do odblokowania klucza prywatnego Serwera Apache'a
    --pkinit-pin=PIN    Hasło do odblokowania klucza prywatnego KDC Kerberosa
    --dirsrv-cert-name=NAME
                        Nazwa certyfikatu SSL Serwera Katalogowego do
                        zainstalowania
    --http-cert-name=NAME
                        Nazwa certyfikatu SSL Serwera Apache'a do zainstalowania
    --pkinit-cert-name=NAME
                        Nazwa certyfikatu SSL KDC Kerberosa do zainstalowania

  Opcje klienta:
    --mkhomedir         utwórz katalogi domowe dla użytkowników przy ich
                        pierwszym logowaniu
    -N, --no-ntp        nie konfiguruj ntp
    --ssh-trust-dns     skonfiguruj klienta OpenSSH, aby ufał rekordom SSHFP DNS
    --no-ssh            nie konfiguruj klienta OpenSSH
    --no-sshd           nie konfiguruj serwera OpenSSH
    --no-dns-sshfp      nie twórz automatycznie rekordów SSHFP DNS

  Opcje systemu certyfikatów:
    --external-ca       Wygeneruj CSR dla certyfikatu CA IPA, który ma być
                        podpisany przez zewnętrzne CA
    --external-ca-type={generic,ms-cs}
                        Typ zewnętrznego CA
    --external-ca-profile=EXTERNAL_CA_PROFILE
                        Określa profil/format certyfikatu do użycia w
                        zewnętrznej CA
    --external-cert-file=FILE
                        Plik zawierający certyfikat CA IPA i łańcuch certyfikatów
                        zewnętrznego CA
    --subject-base=SUBJECT_BASE
                        Podstawowy temat certyfikatu (domyślnie O=<nazwa-królestwa>).
                        RDN-y są w kolejności LDAP (najbardziej specyficzny RDN jako pierwszy).
    --ca-subject=CA_SUBJECT
                        DN tematu certyfikatu CA (domyślnie CN=Certificate
                        Authority,O=<nazwa-królestwa>). RDN-y są w kolejności LDAP
                        (najbardziej specyficzny RDN jako pierwszy).
    --ca-signing-algorithm={SHA1withRSA,SHA256withRSA,SHA512withRSA}
                        Algorytm podpisywania certyfikatu CA IPA

  Opcje DNS:
    --allow-zone-overlap
                        Twórz strefę DNS, nawet jeśli już istnieje
    --reverse-zone=REVERSE_ZONE
                        Odwrócona strefa DNS do użycia. Tę opcję można
                        używać wielokrotnie
    --no-reverse        Nie twórz nowej odwróconej strefy DNS
    --auto-reverse      Utwórz niezbędne odwrócone strefy
    --zonemgr=ZONEMGR   Adres e-mail zarządcy strefy DNS. Domyślnie
                        hostmaster@DOMAIN
    --forwarder=FORWARDERS
                        Dodaj przekaznika DNS. Tę opcję można
                        używać wielokrotnie
    --no-forwarders     Nie dodawaj żadnych przekazników DNS, użyj serwerów głównych
                        zamiast tego
    --auto-forwarders   Użyj przekazników DNS skonfigurowanych w /etc/resolv.conf
    --forward-policy={first,only}
                        Polityka przekazywania DNS dla globalnych przekazników
    --no-dnssec-validation
                        Wyłącz weryfikację DNSSEC

  Opcje zaufania AD:
    --enable-compat     Włącz wsparcie dla zaufanych domen dla starych klientów
    --netbios-name=NETBIOS_NAME
                        Nazwa NetBIOS domeny IPA
    --rid-base=RID_BASE
                        Wartość początkowa mapowania UIDs i GIDs na RIDs
    --secondary-rid-base=SECONDARY_RID_BASE
                        Wartość początkowa drugiego zakresu mapowania UIDs
                        i GIDs na RIDs

  Opcje deinstalacji:
    --ignore-topology-disconnect
                        nie sprawdzaj, czy deinstalacja serwera przerywa
                        topologię (poziom domeny 1+)
    --ignore-last-of-role
                        nie sprawdzaj, czy deinstalacja serwera usuwa ostatni
                        serwer CA/DNS lub master DNSSec (poziom domeny 1+)

  Opcje logowania i wyjścia:
    -v, --verbose       wydrukuj informacje diagnostyczne
    -d, --debug         alias dla --verbose (przestarzałe)
    -q, --quiet         wyjście tylko błędów
    --log-file=FILE     loguj do podanego pliku

Testowanie

Status budowy

Testowanie odbywa się za pomocą Vagrant (instalacja Vagrant) który uruchamia następujące maszyny wirtualne:

  • EL
    • 7
  • Fedora
    • 26
    • 27
  • Ubuntu
    • 16.04 LTS (Xenial Xerus)
    • 17.10 (Artful Aardvark)
    • 18.04 LTS (Bionic Beaver)

Na wszystkich maszynach wirtualnych zainstalowano najnowszą stabilną wersję Ansible i stosują skrypt testowy lokalnie.

Szczegóły i dodatkowe kontrole znajdziesz w entrypoint Vagrant.

# Testowanie na wszystkich dostępnych maszynach vagrant:
# To zajmie trochę czasu. Zaparz kawę. Albo dwie. Albo czterdzieści dwie.
cd tests
vagrant up --parallel && vagrant halt
for h in $(vagrant global-status --prune | grep freeipa_server | awk '{print $2}') ; do echo ${h} ; vagrant up --provision ${h} ; vagrant ssh ${h} -c "sudo /vagrant/vagrant-entrypoint.sh" && (echo "$(date): ${h}: pass" >> tests/results.log) || (echo "$(date): ${h}: fail" >> tests/results.log) ; vagrant halt ${h} ; done
vagrant destroy -f

Jeśli Vagrant ma problemy z montowaniem katalogów, upewnij się, że zainstalowałeś VirtualBox Guest Additions.

Testy Travis są wykonywane za pomocą Docker oraz docker_test_runner. Testy w Travis wykonują linter i kontrole składni.

Szczegóły i dodatkowe kontrole znajdziesz w konfiguracji docker_test_runner i w entrypoint Docker.

# Testowanie lokalnie:
curl https://raw.githubusercontent.com/timorunge/docker-test-runner/master/install.sh | sh
./docker_test_runner.py -f tests/docker_test_runner.yml

Bezpieczeństwo

Ten skrypt nie zajmuje się zabezpieczeniem serwera FreeIPA, co można zrobić za pomocą np. firewalld lub iptables.

W zależności od Twojego ustawienia musisz otworzyć następujące porty:

Porty TCP:

  • 80, 443: HTTP/HTTPS
  • 389, 636: LDAP/LDAPS
  • 88, 464: kerberos
  • 53: bind

Porty UDP:

  • 88, 464: kerberos
  • 53: bind

Kopia zapasowa

Upewnij się, że masz kopię zapasową certyfikatów CA przechowywanych w /root/cacert.p12. Te pliki są wymagane do tworzenia replik. Hasło do tych plików to hasło Directory Managera (freeipa_server_ds_password).

Na FreeIPA znajdziesz również ogólną stronę Kopii zapasowej i Przywracania, która porusza najważniejsze tematy.

Istnieje rola Ansible, która wykonuje podstawowe kopie zapasowe: Kopia zapasowa serwera FreeIPA (Repozytorium Github).

Zależności

Brak

Licencja

Licencja BSD 3-Klausulowa "Nowa" lub "Zrewidowana"

Informacje o autorze

  • Timo Runge
O projekcie

FreeIPA Identity Management Server provisioning.

Zainstaluj
ansible-galaxy install timorunge.freeipa_server
Licencja
bsd-3-clause
Pobrania
12.5k
Właściciel