FreeIPA
FreeIPA on avoin lähdekoodilla varustettu suojaus ratkaisu Linuxille, joka tarjoaa käyttäjähallinan ja keskitetyn todennuksen kuten Microsoftin Active Directory. FreeIPA on rakennettu monesta avoimesta lähdekoodista, kuten 389 Directory Server, MIT Kerberos, and SSSD.
Ohje testattu:
- Ubuntu 16.04
Sisällysluettelo
Ennen asennusta
- Määritä isäntänimi. Isäntänimi tulee vastata FQDN:ää.
Varmista että sinulla on seuraavat portit auki:
TCP: 80, 443 HTTP/HTTPS 389,636 LDAP/LDAPS 88,464 KRB Kerberos 53 Bind - DNS UDP: 88, 464 Kerberos 53 Bind - DNS 123 NTP
UFW:llä
sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow ssh sudo ufw allow http sudo ufw allow https sudo ufw allow ldap sudo ufw allow ldaps sudo ufw allow bind9 sudo ufw allow krb5 sudo ufw allow ntp sudo ufw allow 88/udp sudo ufw allow 464/udp sudo ufw enable sudo ufw status verbose
Asennus
Master palvelin
Asenna pakettihallinnasta freeipa-server paketti
sudo apt install freeipa-server
Määritä asennuksessa kerberos domain, palvelin ja Administrator palvelin.
Aloita määrittäminen
sudo ipa-server-install
The log file for this installation can be found in /var/log/ipaserver-install.lo g ============================================================================== This program will set up the FreeIPA Server. This includes: * Configure a stand-alone CA (dogtag) for certificate management * Configure the Network Time Daemon (ntpd) * Create and configure an instance of Directory Server * Create and configure a Kerberos Key Distribution Center (KDC) * Configure Apache (httpd) To accept the default shown in brackets, press the Enter key. Do you want to configure integrated DNS (BIND)? [no]: yes Enter the fully qualified domain name of the computer on which you're setting up server software. Using the form <hostname>.<domainname> Example: master.example.com. Server host name [freeipa.example.org]: Warning: skipping DNS resolution of host freeipa.example.org The domain name has been determined based on the host name. Please confirm the domain name [example.org]: The kerberos protocol requires a Realm name to be defined. This is typically the domain name converted to uppercase. Please provide a realm name [EXAMPLE.ORG]: Certain directory server operations require an administrative user. This user is referred to as the Directory Manager and has full access to the Directory for system management tasks and will be added to the instance of directory server created for IPA. The password must be at least 8 characters long. Directory Manager password: Password (confirm): The IPA server requires an administrative user, named 'admin'. This user is a regular system account used for IPA server administration. IPA admin password: Password (confirm): Checking DNS domain example.org., please wait ... Enter the IP address to use, or press Enter to finish. Please provide the IP address to be used for this host name: 192.168.1.10 Please provide the IP address to be used for this host name: Do you want to configure DNS forwarders? [yes]: Following DNS servers are configured in /etc/resolv.conf: 8.8.8.8. 8.8.4.4 Do you want to configure these servers as DNS forwarders? [yes]: All DNS servers from /etc/resolv.conf were added. You can enter additional addre sses now: Enter an IP address for a DNS forwarder, or press Enter to skip: Checking DNS forwarders, please wait ... Do you want to search for missing reverse zones? [yes]: The IPA Master Server will be configured with: Hostname: freeipa.example.org IP address(es): 192.168.1.10 Domain name: example.org Realm name: EXAMPLE:org BIND DNS server will be configured to serve IPA domain with: Forwarders: 8.8.8.8 8.8.4.4 Reverse zone(s): No reverse zone Continue to configure the system with these values? [no]: yes
Asennuksessa menee jonkin aikaa riippuen palvelimen tehoista joten kannattaa antaa aikaa. Asennuksen jälkeen pääset kirjautumaan webhallintaan freeipa.example.org/ipa/ui osoitteella. Käyttäjätunnus on admin ja salasanana minkä annoit asennuksen aikana.
Slave
Masterin lisäksi voi olla useita "Slave" palvelimia jotka replikoivat dataa masterin kanssa.
Asennetaan replikointia varten Slave palvelin masterin rinnalle.
sudo apt install freeipa-server freeipa-server-dns bind9 bind9-dyndb-ldap
Muuta nimipalvelimet sitten FreeIPA palvelimeksi.
sudo nano /etc/network/interfaces
dns-nameservers 192.168.1.10
Tai /etc/resolv.conf tiedostoon määrität nimipalvelimen.
Siirry master palvelimelle ja lisää repl1 (slave) nimipalvelintauluun.
kinit admin sudo ipa dnsrecord-add example.org repl1 --a-rec 192.168.2.10
Palaa takaisin slave palvelimelle.
Liitä slave palvelin LDAPiin seuraavalla komennolla
sudo ipa-client-install
Anna [email protected] salasana.
Sitten sitten tästä slave palvelin.
sudo ipa-replica-install
DNS
DNS ei asennu oletuksena slave palvelimille joten se on erikseen asennettava ja konfiguroitava
sudo ipa-dns-install
Syötä forwarders nimipalvelimet.
Client
Jos haluat, vaihda isäntänimi nyt.
sudo hostname new-hostname.example.org
Konfiguroi palvelin käyttämään FreeIPA palvelimien nimipalvelimia
sudo nano /etc/network/interfaces
dns-nameservers 192.168.1.10
ja varmista että /etc/resolv.conf tiedostossa on
nameserver 192.168.1.10
Testaa toimivuus.
Asenna seuravalla komennolla freeipa-client paketti
sudo apt install freeipa-client
Tällä komennolla asennat ipa-clientin. Sinulla pitää olla DNS-palvelin osoitettu IPA-palvelimiin. Tarkista että tämä toimii.
sudo ipa-client-install
Anna ylläpitäjän salasana [email protected] esimerkiksi.
Kun asennus on suoritettu voit kirjautua nyt LDAPIn käyttäjätunnuksella.
ssh [email protected]
Kotihakemiston luonti (Ubuntu / Debian)
Debian / Ubuntussa on bugi jonka takia FreeIPA ei luo automaattisesti kotihakemistoja (mkhomedir parametri). Lisätietoa bugista täältä: https://bugs.launchpad.net/ubuntu/+source/freeipa/+bug/1336869
Tämän voi paikata lisämällä /etc/pam.d/common-session tiedostoon
session required pam_mkhomedir.so skel=/etc/skel/
jolloin kotihakemistot luodaan. Tämä täytyy lisätä kaikkiin FreeIPA koneisiin.
Konfigurointi
Pääasiassa konfigurointi onnistuu GUI:n kautta tai komentorivillä.
Komentorivillä muista kirjautua kerberoksella seuraavasti esimerkiksi admin käyttäjälle
kinit admin
Käyttäjähallinta
Listaa käyttäjätunnukset
ipa user-find
Luo uusi käyttäjä. Tämä lisää käyttäjän oletuksena ipausers ryhmään ja pyytää salasanan.
ipa user-add matti --first=Matti --last=Testi --password
HBAC - Host Basec Access Control
Tämä on säännöt työasema/palvelin kohtaisesti ketä saa kirjautua minne esimerkiksi ja millä sekä mistä. Oletuksena sääntö on "allow all" eli kaikilla käyttäjätunnuksella oikeus kirjautua minne tahansa. Tämä ei ole ehkä hyvä sääntö jos on vähän isompi ympäristö ja parempi on sallia käyttäjätilikohtaisesti.
Lisää kaikki HBAC säännöt:
ipa hbacrule-find
Tämä tulostaa oletussäännön
------------------- 1 HBAC rule matched ------------------- Rule name: allow_all User category: all Host category: all Source host category: all Service category: all Description: Allow all users to access any host from any host Enabled: TRUE ---------------------------- Number of entries returned 1 ----------------------------
Lisätietoa: https://www.freeipa.org/page/Howto/HBAC_and_allow_all
Sudo Rules
Otetaan käyttöön admin käyttäjällemme sudo oikeudet kaikille työasemille helpottamaan hallintaa. FreeIPA:n avulla voit helposti hallinnoida tätä yhdestä paikkaa.
WEB UI:sta otat käyttöön seuraavasti:
- Avaa Policy ja valitse Sudo alasvetovalikosta Sudo rules.
- Valitse Add luodaksesi uuden säännön. Määritä säännölle nimi ja sitten klikkaa Add and edit.
- Valitse "Who" kohdan alta Specified Users and Groups ja sieltä sitten Add lisätäksesi käyttäjän.
- "Accessing" kohdasta valitse Any Host ja "Via Service" kohdasta Any Service.
- Tallenna sääntö
Sääntö on nyt aktiivinen, osassa palvelussa tämä ei heti toimi. Voit joutua käynnistämään palveluita uusiksi tai käynnistämään IPA Clientin omaavan työasema/palvelimen uusiksi.
Testaa kirjatumalla sisälle
ssh [email protected]
ja sitten testata sudoa:
sudo -i
FreeIPA integrointi AD:n kanssa
Ohje kuinka konfiguroidaan FreeIPA:n ja Active Directoryn välinen "luottamus".
- FreeIPA:n ja AD:N domain pitää olla eri! Tämä on normaali vaatimus yleisestikin Active Directory cross-forest trustissa.
- Varmista ensin että DNS:t toimivat eli Windowsin AD löytää FreeIPA:n nimellä ja FreIPA taas löytää Windows AD:n nimellä ja pingi toimii myös.
- Ohje ei toimi, palauttaa virheen "ipa: ERROR: CIFS server communication error: code "-1073741801", message "Memory allocation error" (both may be "None")"
Asenna FreeIPA palvelimelle
sudo apt install freeipa-server-trust-ad
Konfiguroidaan adtrust:
sudo ipa-adtrust-install --netbios-name=NETBIOSNAME -a password
Konfiguroi palomuurista portit auki (UFW):
sudo ufw allow 135/TCP sudo ufw allow 138 sudo ufw allow 139 sudo ufw allow 445
Kirjaudu ja lisää AD luottamuslistalle
kinit admin ipa trust-add --type=ad ad.example.org --admin Administrator --password
Linkkejä
https://www.digitalocean.com/community/tutorials/how-to-configure-a-freeipa-client-on-ubuntu-16-04
https://www.freeipa.org/page/Windows_authentication_against_FreeIPA