Sto usando Ubuntu 10.04 Server.
Sto usando Ubuntu 10.04 Server.
Risposte:
[Modifica] Da allora ho provato questa versione completa di Ubuntu 10.04 Server (21 / May / 2010) .
Ho configurato il mio server Ubuntu 10.04 LTS residente su una rete Windows per autenticare gli accessi usando active directory, quindi montare una condivisione Windows per servire come home directory.
Ecco cosa ho fatto a partire dall'installazione iniziale di Ubuntu.
Ricevi aggiornamenti
# sudo apt-get update && sudo apt-get upgrade
Installa un server SSH ( sshd
)
# sudo apt-get install openssh-server
Alcuni sosterrebbero che dovresti "bloccare sshd" disabilitando gli accessi root. Immagino che se il vostro abbastanza intelligente per hackerare una sessione ssh per una password di root, probabilmente non state andando ad essere contrastato con l'aggiunta di PermitRootLogin no
nel /etc/ssh/sshd_config
file. Se il tuo paranoico o semplicemente non sei convinto, modifica il file o fai un giro:
# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Installa i pacchetti richiesti
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
Fare alcune pulizie di base della rete domestica in preparazione per le configurazioni di pacchetto specifiche a venire.
Determina il nome di dominio di Windows, il nome del server DNS e l'indirizzo IP per il server di directory attiva (per samba). Per convenzione ho impostato le variabili di ambiente per il dominio Windows e il server DNS. Per me lo era (il mio indirizzo IP AD era 192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
Se vuoi capire qual è il tuo dominio e server DNS (ero un appaltatore e non conoscevo la rete) dai un'occhiata a questo utile riferimento .
Dobbiamo battezzare il box Linux sulla nuova rete, questo avviene modificando il file host (sostituisci il DNS di con il FQDN del DNS di Windows):
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Dovremmo anche dire ai prossimi servizi installati dove possono trovare leader: alcune reti avranno servizi di ricerca dei nomi netbios, ma per ogni evenienza, aggiungi una voce esplicita nel tuo /etc/hosts
file, nella mia configurazione ho aggiunto la voce sul terzo (3) linea:
# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
I processi di autenticazione e condivisione dei file per le caselle Windows e Linux devono concordare sui loro orologi. Fallo con un servizio NTP e sulla versione server di Ubuntu il servizio NTP viene installato e configurato con un (1) server NTP. Aggiungi il tuo prima di quello di Ubuntu (o sostituiscilo interamente). La rete a cui mi stavo unendo aveva anche il server DNS che serviva il servizio NTP.
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Riavvia il demone NTP:
# sudo /etc/init.d/ntp restart
Configurazione Kerberos.
Le istruzioni che seguono qui non devono essere prese alla lettera: i valori per MYDOMAIN.LOCAL
e srv1.mydomain.local
devono essere sostituiti con ciò che è appropriato per la tua rete quando modifichi i file, ma tieni presente che dove viene utilizzato MAIUSCOLO, MAIUSCOLO .
Se durante apt-get install
Kerberos hai avuto l'intuizione di rispondere correttamente alla domanda "dominio predefinito", allora, grazie per te, altrimenti dovrai fare quanto segue.
Modifica il file (precedentemente installato sopra) /etc/krb5.conf
.
Trova la [libdefaults]
sezione e modifica la coppia di valori chiave:
[libdefaults]
default_realm = MYDOMAIN.LOCAL
Aggiungi quanto segue alla [realms]
sezione del file:
MYDOMAIN.LOCAL = {
kdc = srv1.mydomain.local
admin_server = srv1.mydomain.local
default_domain = MYDOMAIN.LOCAL
}
Aggiungi quanto segue alla [domain_realm]
sezione del file:
.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
Un bel test a questo punto è vedere se il tuo controller AD ti emetterà un ticket Kerberos. Questo non è necessario ma può farti venire le vertigini:
# kinit <some_windows_domain_user>
Quindi per vedere il biglietto:
# klist
vedrai cose sulla cache dei biglietti, scadenze e rinnovi. Una volta che la vertigine si è attenuata, puoi anche rilasciare / distruggere il biglietto:
# kdestroy
Configura samba.
Secondo quanto segue:
Ci sono momenti in cui CIFS non può essere usato o un'altra scelta del filesystem di rete è migliore. Se è necessario il supporto dell'autenticazione Kerberos (krb5 / SPNEGO) per una maggiore sicurezza, allora è necessario utilizzare smbclient o smbfs di Samba invece di cifs
Alas, il cifs
supporto nel kernel per ubuntu 10.04 (basato sulla versione 2.6.32.9 del kernel) è alla versione 1.61 e secondo la documentazione del kernel, l'implementazione sperimentale di Kerberos è presente dalla versione 1.54.
Quindi eccoti. Non ho idea se cifs
funzionerebbe, quindi ti do la configurazione di samba:
Sostituisci /etc/samba/smb.conf
(ricorda che stavo lavorando da una distro pulita di Ubuntu, quindi non ero preoccupato di rompere qualcosa):
[global]
security = ads
realm = MYDOMAIN.LOCAL
password server = 192.168.20.11
workgroup = MYDOMAIN
idmap uid = 10000-20000
idmap gid = 10000-20000
winbind enum users = yes
winbind enum groups = yes
template homedir = /home/%U
template shell = /bin/bash
client use spnego = yes
client ntlmv2 auth = yes
encrypt passwords = yes
winbind use default domain = yes
restrict anonymous = 2
Avvia e ferma vari servizi.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Imposta l'autenticazione.
Modifica il /etc/nsswitch.conf
. Sono stato in grado di eseguire il comando seguente per ottenere ciò di cui avevo bisogno:
# sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Ecco i contenuti del mio /etc/nsswitch.conf
file:
passwd: compat winbind
group: compat winbind
shadow: compat winbind
hosts: files dns
networks: files
protocols: db files
services: db files
ethers: db files
rpc: db files
Avvia e ferma vari servizi.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Unisciti al computer al dominio. Non sono convinto che ciò sia necessario; in particolare a causa dell'opzione di sicurezza nel smb.conf
file ( security = ads
). Forse qualcuno può pesare su questo ...
# sudo net ads join -U any_domain_user_account
Potresti ricevere un errore DNS update failed!
, ma che ti unirai al dominio. Se viene visualizzato un errore per non essere in grado di trovare il server, è necessario modificare i record DNS. Durante l'installazione di Ubuntu, il nameserver punta spesso al gateway: la maggior parte dei router eseguirà un servizio DNS. Le migliori pratiche per l'amministrazione di Windows Server è che ADC dovrebbe eseguire anche DNS. Nel mio caso il mio /etc/resolve.conf
simile a questa:
nameserver 192.168.20.11
nameserver 8.8.8.8
Il 8.8.8.8
è un google DNS, un backup abbastanza affidabile nel caso in cui le finestre si va giù.
A questo punto potrei accedere (forse dopo un riavvio), le home directory non esistevano, ma potevo accedere.
CIFS Montaggio all'accesso
Questo passaggio successivo è stato per me la ciliegina sulla torta; Non volevo la responsabilità di eseguire il backup delle directory di lavoro di tutti, e la scatola che Ubuntu doveva utilizzare era sospetta in termini di affidabilità. Facendo i seguenti utenti possono accedere e vedere la loro directory utente di Windows automagicamente .
Scarica il pam_mount
modulo:
# sudo apt-get install libpam-mount
volevo che il mount point puntasse nella /home/<user>
posizione tradizionale : questa parte è configurata dal /etc/samba/smb.conf
file ( template homedir = /home/%U
). Ma ne avevo bisogno per esplorare la condivisione e puntare alla propria directory di Windows. Ciò si ottiene modificando il /etc/security/pam_mount.conf.xml
file (che nonostante la sua intenzione, XML non è leggibile dall'uomo):
Aggiungi quanto segue /etc/security/pam_mount.conf.xml
e modifica per adattarlo:
<volume
user="*"
server="srv1.mydomain.local"
path="UserShares"
mountpoint="home"
fstype="cifs"
/>
<cifsmount>mount -t cifs //%(SERVER)/%(VOLUME)/%(USER) %(MNTPT)/%(USER) -o "user=%(USER),uid=%(USERUID),gid=%(USERGID)%(before=\",\" OPTIONS)"</cifsmount>
A causa del mio sciocco mount point ho dovuto aggiungere anche questa linea:
<umount>umount %(MNTPT)/%(USER)</umount>
E in modo che le directory utente (per il punto di montaggio) vengano create automaticamente, trova la linea e la rende così:
<mkmountpoint enable="1" remove="false" />
Il remove="false"
bit è piuttosto importante: se è impostato su true, pam_mount.so
tenta di eliminare il punto di montaggio della directory che non può fare se un utente ha effettuato l'accesso più volte. Ciò che si ottiene in quel caso è un sacco di supporti vaganti sul sistema.
pam_mount.so
continua a non funzionare come promesso. Nella sua forma attuale, i mount continuano ad accumularsi e le home directory non vengono create. Da qualche parte tra qui e la precedente versione Beta 2 del server 10.04, funzionava. Non riesco a ricreare questo però.
Nel frattempo per la creazione della directory mi affido pam_mkhomedir.so
e ho bloccato una riga immediatamente prima della pam_mount.so
riga per adattarla.
Non ho ancora risolto il problema del montaggio multiplo. Ma fino a quando non pam_mount.so
viene risolto, questo è ciò che ho nel mio /etc/pam.d/common-session
file:
session [default=1] pam_permit.so
session requisite pam_deny.so
session required pam_permit.so
session required pam_unix.so
session optional pam_winbind.so
session required pam_mkhomedir.so skel=/etc/skel/ umask=0022
session optional pam_mount.so
Questo è tutto. Ha funzionato per me e spero che lo trovi utile.
Sono state prese in considerazione numerose risorse per poterlo capire. Ecco un breve elenco (alcuni di questi link indicano le mie stesse domande sull'argomento):
sudo
d, o mi sto perdendo qualcosa?
sudo
' - E questo è meglio ... in che modo? (Se un account utente che ha diritto a sudo è compromesso, è sostanzialmente la stessa cosa. Ed è fondamentalmente altrettanto semplice [o no] per eseguire il bruteforce degli account root o utente. La cosa migliore è configurare solo l'accesso con chiave pub e disabilitare tutte le password- accesso basato.)