Cela aurait dû être affiché comme réponse à une question. Veuillez le modifier afin qu'il s'agisse d'une question et déplacer ce que vous avez publié ci-dessus pour y répondre. De la FAQ : "Il est également parfaitement bien de poser et de répondre à votre propre question, mais faites comme si vous étiez sur Jeopardy: formulez-le sous la forme d'une question."
pause jusqu'à nouvel ordre.
Réponses:
27
[Modifier] J'ai depuis testé cette version complète du serveur Ubuntu 10.04 (21 / mai / 2010) .
J'ai configuré mon serveur Ubuntu 10.04 LTS résidant sur un réseau Windows pour authentifier les connexions à l'aide du répertoire actif, puis monter un partage Windows pour servir de répertoire de base.
Voici ce que j'ai fait à partir de l'installation initiale d'Ubuntu.
Certains diront que vous devez "verrouiller sshd down" en désactivant les connexions root. Je pense que si vous êtes assez intelligent pour pirater une session ssh pour un mot de passe root, vous ne serez probablement pas contrecarré par l'ajout de PermitRootLogin nodans le /etc/ssh/sshd_configfichier. Si votre paranoïaque ou pas tout simplement pas convaincu, modifiez le fichier ou faites le tour suivant:
# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Effectuez un nettoyage de base du réseau en vue des configurations de package spécifiques à venir.
Déterminez votre nom de domaine Windows, le nom du serveur DNS et l'adresse IP du serveur Active Directory (pour Samba). Pour des raisons de commodité, j'ai défini des variables d'environnement pour le domaine Windows et le serveur DNS. Pour moi, c'était (mon adresse IP AD était 192.168.20.11):
Si vous voulez savoir quel est votre domaine et votre serveur DNS (j'étais entrepreneur et ne connaissais pas le réseau), consultez cette référence utile .
Nous devons baptiser la boîte Linux sur le nouveau réseau, cela se fait en éditant le fichier hôte (remplacez le DNS de par le FQDN du Windows DNS): # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Nous devons également indiquer aux services installés à venir où ils peuvent trouver le leader: certains réseaux auront des services de recherche de nom netbios, mais juste au cas où, ajoutez une entrée explicite dans votre /etc/hostsfichier, dans ma configuration j'ai ajouté l'entrée sur le troisième (3) ligne: # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Les processus d'authentification et de partage de fichiers pour les boîtes Windows et Linux doivent avoir leurs horloges d'accord. Pour ce faire, avec un service NTP, et sur la version serveur d'Ubuntu, le service NTP est installé et configuré avec un (1) serveur NTP. Ajoutez le vôtre avant celui d'Ubuntu (ou remplacez-le entièrement). Le réseau que je rejoignais avait le serveur DNS servant également le service NTP. # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Redémarrez le démon NTP: # sudo /etc/init.d/ntp restart
Configuration Kerberos.
Les instructions qui suivent ici ne doivent pas être prises à la lettre: les valeurs MYDOMAIN.LOCALet srv1.mydomain.localdoivent être remplacées par ce qui est approprié pour votre réseau lorsque vous modifiez les fichiers, mais notez que là où UPPERCASE est utilisé, UPPERCASE est nécessaire .
Si, au cours apt-get installde Kerberos, vous avez eu la perspicacité de répondre correctement à la question "domaine par défaut", alors, bonjour pour vous, sinon vous devrez faire ce qui suit.
Modifiez le /etc/krb5.conffichier (précédemment installé ci-dessus) .
Recherchez la [libdefaults]section et modifiez la paire de valeurs clés:
[libdefaults] default_realm = MYDOMAIN.LOCAL
Ajoutez ce qui suit à la [realms]section du fichier:
Ajoutez ce qui suit à la [domain_realm]section du fichier: .mydomain.local = MYDOMAIN.LOCAL mydomain.local = MYDOMAIN.LOCAL
Un bon test à ce stade est de voir si votre contrôleur AD vous délivrera un ticket Kerberos. Ce n'est pas nécessaire, mais cela peut rendre certains d'entre vous étourdis: # kinit <some_windows_domain_user>
Ensuite, pour voir le ticket: # klist
vous verrez des informations sur le cache du ticket et les expirations et renouvellements. Une fois que le vertige s'estompe, vous pouvez également libérer / détruire le ticket: # kdestroy
Modifiez le /etc/nsswitch.conf. J'ai pu exécuter la commande suivante pour obtenir ce dont j'avais besoin: # sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Voici le contenu de mon /etc/nsswitch.conffichier: 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
Démarrez et arrêtez divers services. # sudo /etc/init.d/winbind stop # sudo service smbd restart # sudo /etc/init.d/winbind start
Joignez l'ordinateur au domaine. Je ne suis pas convaincu que cela soit nécessaire; notamment à cause de l'option de sécurité dans le smb.conffichier ( security = ads). Peut-être que quelqu'un peut peser là-dessus ... # sudo net ads join -U any_domain_user_account
Vous pourriez obtenir une erreur DNS update failed!, mais que vous serez joint au domaine. Si vous obtenez une erreur de ne pas pouvoir trouver le serveur, vos enregistrements DNS doivent être modifiés. Pendant l'installation d'Ubuntu, le serveur de noms pointera souvent vers votre passerelle: la plupart des routeurs feront un service DNS. Les meilleures pratiques pour l'administration du serveur Windows sont que l'ADC doit également exécuter DNS. Dans mon cas , mes /etc/resolve.confressemble à ceci: nameserver 192.168.20.11 nameserver 8.8.8.8
Le 8.8.8.8est un Google DNS, une sauvegarde assez fiable dans le cas où les fenêtres on descend.
À ce stade, je pouvais me connecter (peut-être après un redémarrage), les répertoires personnels n'existaient pas, mais je pouvais me connecter.
Montage CIFS lors de la connexion
Cette étape suivante a été la cerise pour moi; Je ne voulais pas la responsabilité de sauvegarder les répertoires de travail de tout le monde, et la boîte qu'Ubuntu devait exécuter était suspecte en termes de fiabilité. En procédant comme suit, les utilisateurs peuvent se connecter et voir automatiquement leur répertoire d'utilisateurs Windows .
Téléchargez le pam_mountmodule: # sudo apt-get install libpam-mount
je voulais que le point de montage soit à l' /home/<user>emplacement traditionnel : cette partie est configurée par le /etc/samba/smb.conffichier ( template homedir = /home/%U). Mais j'en avais besoin pour explorer le partage et pointer vers leur propre répertoire Windows. Ceci est accompli en éditant le /etc/security/pam_mount.conf.xmlfichier (qui malgré son intention, XML n'est pas lisible par l'homme):
Ajoutez les éléments suivants /etc/security/pam_mount.conf.xmlet modifiez-les en fonction: <volume user="*" server="srv1.mydomain.local" path="UserShares" mountpoint="home" fstype="cifs" />
À cause de mon point de montage maladroit, j'ai dû ajouter cette ligne aussi:
<umount>umount %(MNTPT)/%(USER)</umount>
Et pour que les répertoires utilisateur (pour le point de montage) soient créés, trouvez automatiquement la ligne et faites-la ainsi:
<mkmountpoint enable="1" remove="false" />
Le remove="false"bit est assez important: s'il est défini sur true, pam_mount.soessaie de supprimer le point de montage du répertoire, ce qu'il ne peut pas faire si un utilisateur s'est connecté plusieurs fois. Dans ce cas, vous vous retrouvez avec beaucoup de montures parasites sur votre système.
pam_mount.sone livre toujours pas tout à fait comme promis. Dans sa forme actuelle, les montures s'accumulent et les répertoires personnels ne sont pas créés. Quelque part entre ici et la version Beta 2 précédente du serveur 10.04, cela fonctionnait. Je ne peux pas recréer cela cependant.
En attendant, pour la création du répertoire, je compte sur pam_mkhomedir.so, et j'ai collé une ligne juste avant la pam_mount.soligne pour l'adapter.
Je n'ai toujours pas résolu le problème de montage multiple. Mais jusqu'à ce que ce pam_mount.sosoit corrigé, voici ce que j'ai dans mon /etc/pam.d/common-sessionfichier:
C'est ça. Cela a fonctionné pour moi et j'espère que vous le trouverez utile.
De nombreuses ressources ont été envisagées afin que je puisse comprendre cela. Voici une courte liste (un certain nombre de ces liens pointent vers mes propres questions sur le sujet):
La désactivation de la connexion à distance root ssh est un must. Les attaques par force brute / dictionnaire réussissent parfois. Si root est compromis, dites au revoir à tout ce en quoi vous avez confiance sur la machine.
JR Lawhorne
1
ubuntu n'active cependant pas le compte root ... tout est sudod, ou ai-je raté quelque chose?
Jamie
'tout est sudo' - Et c'est mieux ... de quelle manière? (Si un compte utilisateur qui a droit à sudo est compromis, c'est essentiellement la même chose. Et il est tout aussi simple [ou pas] de forcer les comptes root ou utilisateur. Le mieux est de configurer la connexion pub-key uniquement et de désactiver tous les mots de passe- sur la base de connexions.)
Kurt Pfeifle
J'obtiens cela, mais considérez: "Le mieux est de configurer uniquement la connexion pub-key" , ce qui irait totalement à l' encontre du but de cet article.
Réponses:
[Modifier] J'ai depuis testé cette version complète du serveur Ubuntu 10.04 (21 / mai / 2010) .
J'ai configuré mon serveur Ubuntu 10.04 LTS résidant sur un réseau Windows pour authentifier les connexions à l'aide du répertoire actif, puis monter un partage Windows pour servir de répertoire de base.
Voici ce que j'ai fait à partir de l'installation initiale d'Ubuntu.
Obtenir les mises à jour
# sudo apt-get update && sudo apt-get upgrade
Installer un serveur SSH (
sshd
)# sudo apt-get install openssh-server
Certains diront que vous devez "verrouiller sshd down" en désactivant les connexions root. Je pense que si vous êtes assez intelligent pour pirater une session ssh pour un mot de passe root, vous ne serez probablement pas contrecarré par l'ajout de
PermitRootLogin no
dans le/etc/ssh/sshd_config
fichier. Si votre paranoïaque ou pas tout simplement pas convaincu, modifiez le fichier ou faites le tour suivant:# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Installer les packages requis
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
Effectuez un nettoyage de base du réseau en vue des configurations de package spécifiques à venir.
Déterminez votre nom de domaine Windows, le nom du serveur DNS et l'adresse IP du serveur Active Directory (pour Samba). Pour des raisons de commodité, j'ai défini des variables d'environnement pour le domaine Windows et le serveur DNS. Pour moi, c'était (mon adresse IP AD était 192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
Si vous voulez savoir quel est votre domaine et votre serveur DNS (j'étais entrepreneur et ne connaissais pas le réseau), consultez cette référence utile .
Nous devons baptiser la boîte Linux sur le nouveau réseau, cela se fait en éditant le fichier hôte (remplacez le DNS de par le FQDN du Windows DNS):
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Nous devons également indiquer aux services installés à venir où ils peuvent trouver le leader: certains réseaux auront des services de recherche de nom netbios, mais juste au cas où, ajoutez une entrée explicite dans votre
/etc/hosts
fichier, dans ma configuration j'ai ajouté l'entrée sur le troisième (3) ligne:# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Les processus d'authentification et de partage de fichiers pour les boîtes Windows et Linux doivent avoir leurs horloges d'accord. Pour ce faire, avec un service NTP, et sur la version serveur d'Ubuntu, le service NTP est installé et configuré avec un (1) serveur NTP. Ajoutez le vôtre avant celui d'Ubuntu (ou remplacez-le entièrement). Le réseau que je rejoignais avait le serveur DNS servant également le service NTP.
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Redémarrez le démon NTP:
# sudo /etc/init.d/ntp restart
Configuration Kerberos.
Les instructions qui suivent ici ne doivent pas être prises à la lettre: les valeurs
MYDOMAIN.LOCAL
etsrv1.mydomain.local
doivent être remplacées par ce qui est approprié pour votre réseau lorsque vous modifiez les fichiers, mais notez que là où UPPERCASE est utilisé, UPPERCASE est nécessaire .Si, au cours
apt-get install
de Kerberos, vous avez eu la perspicacité de répondre correctement à la question "domaine par défaut", alors, bonjour pour vous, sinon vous devrez faire ce qui suit.Modifiez le
/etc/krb5.conf
fichier (précédemment installé ci-dessus) .Recherchez la
[libdefaults]
section et modifiez la paire de valeurs clés:[libdefaults]
default_realm = MYDOMAIN.LOCAL
Ajoutez ce qui suit à la
[realms]
section du fichier:MYDOMAIN.LOCAL = {
kdc = srv1.mydomain.local
admin_server = srv1.mydomain.local
default_domain = MYDOMAIN.LOCAL
}
Ajoutez ce qui suit à la
[domain_realm]
section du fichier:.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
Un bon test à ce stade est de voir si votre contrôleur AD vous délivrera un ticket Kerberos. Ce n'est pas nécessaire, mais cela peut rendre certains d'entre vous étourdis:
# kinit <some_windows_domain_user>
Ensuite, pour voir le ticket:
# klist
vous verrez des informations sur le cache du ticket et les expirations et renouvellements. Une fois que le vertige s'estompe, vous pouvez également libérer / détruire le ticket:
# kdestroy
Configurez samba.
Selon ce qui suit: Il y a des moments où CIFS ne peut pas être utilisé ou un autre choix de système de fichiers réseau est préférable. Si la prise en charge de l'authentification kerberos (krb5 / SPNEGO) est nécessaire pour plus de sécurité, alors smbclient ou smbfs de Samba doivent être utilisés à la place de cifs
Hélas, la
cifs
prise en charge dans le noyau pour ubuntu 10.04 (basée sur la version 2.6.32.9 du noyau) est à la version 1.61, et selon la documentation du noyau, l'implémentation expérimentale de kerberos existe depuis la version 1.54.Vous voilà donc. Je ne sais pas si
cifs
cela fonctionnerait donc je vous donne la configuration de samba:Remplacer
/etc/samba/smb.conf
(rappelez-vous que je travaillais à partir d'une distribution propre d'Ubuntu, donc je n'étais pas inquiet de casser quoi que ce soit):[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
Démarrez et arrêtez divers services.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Configurez l'authentification.
Modifiez le
/etc/nsswitch.conf
. J'ai pu exécuter la commande suivante pour obtenir ce dont j'avais besoin:# sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Voici le contenu de mon
/etc/nsswitch.conf
fichier: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
Démarrez et arrêtez divers services.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Joignez l'ordinateur au domaine. Je ne suis pas convaincu que cela soit nécessaire; notamment à cause de l'option de sécurité dans le
smb.conf
fichier (security = ads
). Peut-être que quelqu'un peut peser là-dessus ...# sudo net ads join -U any_domain_user_account
Vous pourriez obtenir une erreur
DNS update failed!
, mais que vous serez joint au domaine. Si vous obtenez une erreur de ne pas pouvoir trouver le serveur, vos enregistrements DNS doivent être modifiés. Pendant l'installation d'Ubuntu, le serveur de noms pointera souvent vers votre passerelle: la plupart des routeurs feront un service DNS. Les meilleures pratiques pour l'administration du serveur Windows sont que l'ADC doit également exécuter DNS. Dans mon cas , mes/etc/resolve.conf
ressemble à ceci:nameserver 192.168.20.11
nameserver 8.8.8.8
Le
8.8.8.8
est un Google DNS, une sauvegarde assez fiable dans le cas où les fenêtres on descend.À ce stade, je pouvais me connecter (peut-être après un redémarrage), les répertoires personnels n'existaient pas, mais je pouvais me connecter.
Montage CIFS lors de la connexion
Cette étape suivante a été la cerise pour moi; Je ne voulais pas la responsabilité de sauvegarder les répertoires de travail de tout le monde, et la boîte qu'Ubuntu devait exécuter était suspecte en termes de fiabilité. En procédant comme suit, les utilisateurs peuvent se connecter et voir automatiquement leur répertoire d'utilisateurs Windows .
Téléchargez le
pam_mount
module:# sudo apt-get install libpam-mount
je voulais que le point de montage soit à l'
/home/<user>
emplacement traditionnel : cette partie est configurée par le/etc/samba/smb.conf
fichier (template homedir = /home/%U
). Mais j'en avais besoin pour explorer le partage et pointer vers leur propre répertoire Windows. Ceci est accompli en éditant le/etc/security/pam_mount.conf.xml
fichier (qui malgré son intention, XML n'est pas lisible par l'homme):Ajoutez les éléments suivants
/etc/security/pam_mount.conf.xml
et modifiez-les en fonction:<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>
À cause de mon point de montage maladroit, j'ai dû ajouter cette ligne aussi:
<umount>umount %(MNTPT)/%(USER)</umount>
Et pour que les répertoires utilisateur (pour le point de montage) soient créés, trouvez automatiquement la ligne et faites-la ainsi:
<mkmountpoint enable="1" remove="false" />
Le
remove="false"
bit est assez important: s'il est défini sur true,pam_mount.so
essaie de supprimer le point de montage du répertoire, ce qu'il ne peut pas faire si un utilisateur s'est connecté plusieurs fois. Dans ce cas, vous vous retrouvez avec beaucoup de montures parasites sur votre système.pam_mount.so
ne livre toujours pas tout à fait comme promis. Dans sa forme actuelle, les montures s'accumulent et les répertoires personnels ne sont pas créés. Quelque part entre ici et la version Beta 2 précédente du serveur 10.04, cela fonctionnait. Je ne peux pas recréer cela cependant.En attendant, pour la création du répertoire, je compte sur
pam_mkhomedir.so
, et j'ai collé une ligne juste avant lapam_mount.so
ligne pour l'adapter.Je n'ai toujours pas résolu le problème de montage multiple. Mais jusqu'à ce que ce
pam_mount.so
soit corrigé, voici ce que j'ai dans mon/etc/pam.d/common-session
fichier:C'est ça. Cela a fonctionné pour moi et j'espère que vous le trouverez utile.
De nombreuses ressources ont été envisagées afin que je puisse comprendre cela. Voici une courte liste (un certain nombre de ces liens pointent vers mes propres questions sur le sujet):
la source
sudo
d, ou ai-je raté quelque chose?sudo
' - Et c'est mieux ... de quelle manière? (Si un compte utilisateur qui a droit à sudo est compromis, c'est essentiellement la même chose. Et il est tout aussi simple [ou pas] de forcer les comptes root ou utilisateur. Le mieux est de configurer la connexion pub-key uniquement et de désactiver tous les mots de passe- sur la base de connexions.)