Progetto Eagleprojects v1.0
Richiesta:
Configurare Windows Server 2022 come DC e come Fileserver. Aggiungere la gestione NFSv4. I client devono potersi collegare usando le credenziali DC e la struttura dei file condivisi tramite NFS deve mantenere i permessi di accesso. Come client è richiesto Ubuntu 22.04LTS e come sistema di sicurezza Kerberos con RPCSEC_GSS. SAMBA e la Join a dominio della macchina non vengono utilizzate per questo progetto.
RPCSEC_GSS fornisce un meccanismo generico per utilizzare più meccanismi di sicurezza con ONCRPC (sul quale si basano le richieste NFS). Server per NFS supporta due "flavors" di Kerberos su NFS utilizzando RPCSEC_GSS: krb5 e krb5i. krb5 fornisce l'autenticazione Kerberos a livello di richiesta RPC, mentre krb5i (Kerberos v5 con integrità) protegge anche il payload NFS da manomissioni.
Scenario infrastrutturale:
- Dominio Windows impostato come nfsdomain.local che esegue Active Directory su un DC FQDN server.nfsdomain.local (o dc.nfsdomain.local in caso di altro server).
- Server Windows che esegue Server per NFS: server.nfsdomain.local.
- Client Ubuntu: ubuntuclient.
- Utente UNIX su ubuntuclient: user1 con UID 500.
- Gruppo UNIX su ubuntuclient: nfsgroup con GID 500.
- Utente Windows: nfsdomain\user1.
- Gruppo Windows: nfsdomain\nfsgroup.
Prerequisiti
-
Risoluzione DNS: Assicurarsi che la risoluzione dei nomi DNS funzioni correttamente tra il DC, il server NFS Windows e il client Ubuntu.
-
Impostazione degli utenti e dei gruppi: Creare gli utenti e i gruppi menzionati e assicurarsi che nfsdomain\user1 sia membro del gruppo nfsdomain\nfsgroup. Impostare gli UUID e GUID nelle impostazioni avanzate. Impostare una password per user1.
Configurazione del client Ubuntu per ottenere ticket Kerberos dal dominio nfsdomain.local
Installazione dei pacchetti necessari
Sul client ubuntuclient, installare i pacchetti necessari:
apt update
apt install krb5-user nfs-common
Durante l'installazione di krb5-user, vi verrà chiesto di inserire il default Kerberos version 5 realm. Inserire NFSDOMAIN.LOCAL.
Configurazione di Kerberos
Modificare il file /etc/krb5.conf:
sudo vi /etc/krb5.conf
Aggiornare il file come segue:
[libdefaults]
default_realm = NFSDOMAIN.LOCAL
dns_lookup_realm = false
dns_lookup_kdc = false
rdns = false
ticket_lifetime = 24h
forwardable = yes
default_tgs_enctypes = aes256-cts-hmac-sha1-96
default_tkt_enctypes = aes256-cts-hmac-sha1-96
permitted_enctypes = aes256-cts-hmac-sha1-96
[realms]
NFSDOMAIN.LOCAL = {
kdc = server.nfsdomain.local
admin_server = server.nfsdomain.local
}
[domain_realm]
.nfsdomain.local = NFSDOMAIN.LOCAL
nfsdomain.local = NFSDOMAIN.LOCAL
Test dell'ottenimento del ticket Kerberos
Eseguire:
kinit user1
Inserire la password quando richiesto. Poi, verificare il ticket:
klist
Dovreste vedere un ticket valido per user1. Per distruggere il ticket:
kdestroy
Configurazione di Active Directory su Windows Server 2022
Creazione degli account utenti e gruppi
- Aprire Active Directory Users and Computers sul server server.nfsdomain.local.
- Creare gli utenti:
- user1
- user2
- ubuntuclienthost
- ubuntuclientroot
- ubuntuclientnfs
- Creati gli utenti ubuntuclienthost, ubuntuclientroot e ubuntuclientnfs riaprire la configurazione ed impostare l'accesso utente UPN rispettivamente come host/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL, root/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL e nfs/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL
- Creare il gruppo:
- nfsgroup
- Aggiungere user1 al gruppo nfsgroup.
- Assegna una password a user1
Creazione utenti su Ubuntu:
useradd -m ubuntuclienthost
useradd -m ubuntuclientroot
useradd -m ubuntuclientnfs
groupadd nfsgroup
useradd -m -G nfsgroup user1
useradd -m -G nfsgroup user2
Imposta la password per gli account (account unix)
passwd user1
passwd user2
Prendi nota dell'UID degli utenti e del GUID del gruppo:
id user1
id user2
getent group nfsgroup
Imposta UID (uidNumber) su Criterio > Editor attributie per ogni utente e GUID (gidNumber) Estensioni > Editor attributi.
Aprire il prompt dei comandi su Windows come amministratore ed eseguire:
setspn -A nfs/server server
setspn -A nfs/server.nfsdomain.local server
setspn -A host/ubuntuclient ubuntuclienthost
setspn -A host/ubuntuclient.nfsdomain.local ubuntuclienthost
setspn -A root/ubuntuclient ubuntuclientroot
setspn -A root/ubuntuclient.nfsdomain.local ubuntuclientroot
setspn -A nfs/ubuntuclient ubuntuclientnfs
setspn -A nfs/ubuntuclient.nfsdomain.local ubuntuclientnfs
Creazione dei keytab con ktpass
Assicurarsi che l'utilità ktpass sia disponibile (fa parte degli strumenti di supporto). Questi file servono per consentire una autenticazione trasparente. Eseguire i seguenti comandi per generare i file keytab:
ktpass /princ host/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL /mapuser ubuntuclienthost@nfsdomain.local /crypto AES256-SHA1 /ptype KRB5_NT_PRINCIPAL /pass <password> /out ubuntuclienthost.keytab
ktpass /princ root/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL /mapuser ubuntuclientroot@nfsdomain.local /crypto AES256-SHA1 /ptype KRB5_NT_PRINCIPAL /pass <password> /out ubuntuclientroot.keytab
ktpass /princ nfs/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL /mapuser ubuntuclientnfs@nfsdomain.local /crypto AES256-SHA1 /ptype KRB5_NT_PRINCIPAL /pass <password> /out ubuntuclientnfs.keytab
Nota: Sostituire <password> con le password impostate per ciascun account (Power75mac).
Trasferimento dei keytab al client Ubuntu
Copiare i file .keytab generati su ubuntuclient (ad esempio utilizzando SCP o una condivisione di rete sicura). Sarebbe opportuno anche installare SSH anche su windows.
Configurazione del client Ubuntu con i keytab
Installazione di krb5-user (se non già fatto)
apt install krb5-user
Unione dei keytab
Su ubuntuclient, unire i keytab in /etc/krb5.keytab:
- Spostare i file .keytab nella directory locale (ad esempio /tmp).
- Eseguire:
scp administrator@server.nfsdomain.local:C:/nfs_share/keytab/ubuntuclienthost.keytab /tmp/ubuntuclienthost.keytab
scp administrator@server.nfsdomain.local:C:/nfs_share/keytab/ubuntuclientnfs.keytab /tmp/ubuntuclientnfs.keytab
scp administrator@server.nfsdomain.local:C:/nfs_share/keytab/ubuntuclientroot.keytab /tmp/ubuntuclientroot.keytab
ktutil
All'interno dell'interfaccia ktutil, eseguire i comandi:
rkt /tmp/ubuntuclienthost.keytab
rkt /tmp/ubuntuclientroot.keytab
rkt /tmp/ubuntuclientnfs.keytab
wkt /etc/krb5.keytab
q
Verifica dei keytab
Eseguire:
klist -k /etc/krb5.keytab
Dovresti vedere le voci per i principali appena aggiunti.
Keytab name: FILE:/etc/krb5.keytab
KVNO Timestamp Principal
---- ------------------- -------------------------------------------------
1 04/27/2024 10:00:00 host/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL
1 04/27/2024 10:00:00 root/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL
1 04/27/2024 10:00:00 nfs/ubuntuclient.nfsdomain.local@NFSDOMAIN.LOCAL
Assicurati che il file keytab abbia i permessi corretti per proteggere le informazioni sensibili.
sudo chmod 600 /etc/krb5.keytab
sudo chown root:root /etc/krb5.keytab
Test dell'ottenimento dei ticket senza password
Esegui:
kinit -k host/ubuntuclient.nfsdomain.local
kinit -k root/ubuntuclient.nfsdomain.local
kinit -k nfs/ubuntuclient.nfsdomain.local
Verificare che ciascun comando ottenga un ticket senza richiedere una password.
Configurazione di NFS su Ubuntu
Installazione dei pacchetti necessari
Assicurarsi che nfs-common sia installato (già fatto in precedenza):
apt install nfs-common
Configurazione di idmapd
Modificare /etc/idmapd.conf:
vi /etc/idmapd.conf
Aggiornare il file come segue:
[General]
Verbosity = 0
# set your own domain here, if it differs from FQDN minus hostname
# Domain = localdomain
Pipefs-Directory = /run/rpc_pipefs
# Domain = nfsdomain.local
[Mapping]
Nobody-User = nobody
Nobody-Group = nogroup
[Translation]
GSS-Methods = static
[Static]
user1@NFSDOMAIN.LOCAL = user1
group1@NFSDOMAIN.LOCAL = nfsgroup
user2@NFSDOMAIN.LOCAL = user2
Riavvio dei servizi NFS
Eseguire:
# systemctl restart nfs-idmapd
systemctl restart rpc-gssd
Configurazione del Server per NFS su Windows Server 2022
Installazione del ruolo Server per NFS
- Aprire Server Manager.
- Selezionare Aggiungi ruoli e funzionalità.
- Selezionare Servizi file e archiviazione > Server per NFS.
- Completare l'installazione.
Configurazione delle mapping UID/GID
Utilizzare Active Directory Lookup per la mapping UID/GID.
- Aprire Services for Network File System.
- Configurare il mapping degli utenti per utilizzare Active Directory.
Creazione della condivisione NFS
- Creare una cartella (ad esempio C:\nfs_share).
- Fare clic con il tasto destro sulla cartella e selezionare Proprietà.
- Selezionare la scheda Condivisione NFS.
- Fare clic su Gestisci condivisione NFS.
- Aggiungere la condivisione con le impostazioni desiderate, assicurandosi di abilitare Kerberos v5 e Kerberos v5 i per la sicurezza.
Impostazione delle autorizzazioni
Assicurarsi che l'utente nfsdomain\user1 abbia le autorizzazioni necessarie sulla cartella condivisa.
Montaggio della condivisione NFS su Ubuntu
Montaggio manuale
Eseguire:
mkdir /mnt/share
mount -t nfs -o sec=krb5i,vers=4 server.nfsdomain.local:/nfs_share /mnt/share
Nota: Utilizziamo sec=krb5i per abilitare l'integrità. Se si desidera solo l'autenticazione, utilizzare sec=krb5.
Montaggio automatico tramite fstab
Aggiungere la seguente riga a /etc/fstab:
server.nfsdomain.local:/nfs_share /mnt/share nfs defaults,sec=krb5i,vers=4 0 0
Test e verifica
- Accedere come user1 su ubuntuclient.
- Eseguire:
kinit user1
- Accedere alla condivisione montata:
cd /mnt/share
ls -l
- Creare un file di prova:
touch testfile.txt
- Verificare che il file sia stato creato e che le autorizzazioni siano corrette.
No Comments