Dies sollte als Antwort auf eine Frage gepostet worden sein. Bitte bearbeiten Sie dies, damit es sich um eine Frage handelt. Verschieben Sie das, was Sie oben gepostet haben, um eine Antwort darauf zu erhalten. Aus der FAQ : "Es ist auch vollkommen in Ordnung, Ihre eigene Frage zu stellen und zu beantworten, aber tun Sie so, als wären Sie in Gefahr: Formulieren Sie sie in Form einer Frage."
Bis auf weiteres angehalten.
Antworten:
27
[Bearbeiten] Ich habe seitdem die Vollversion von Ubuntu 10.04 Server (21. Mai 2010) getestet .
Ich habe meinen Ubuntu 10.04 Server LTS in einem Windows-Netzwerk so konfiguriert , dass Anmeldungen mit Active Directory authentifiziert werden. Anschließend habe ich eine Windows-Freigabe bereitgestellt, die als Basisverzeichnis dient.
Hier ist, was ich ausgehend von der Erstinstallation von Ubuntu gemacht habe.
Einige würden argumentieren, dass Sie "sshd down" sperren sollten, indem Sie Root-Logins deaktivieren. Ich denke, wenn Sie klug genug sind, eine SSH-Sitzung nach einem Root-Passwort zu hacken, werden Sie wahrscheinlich nicht durch das Hinzufügen von PermitRootLogin noin der /etc/ssh/sshd_configDatei vereitelt . Wenn Sie paranoid oder nicht einfach nicht überzeugt sind, bearbeiten Sie die Datei oder geben Sie den folgenden einen Dreh:
# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Führen Sie eine grundlegende Netzwerk-Hausreinigung durch, um sich auf die bevorstehenden spezifischen Paketkonfigurationen vorzubereiten.
Ermitteln Sie den Windows-Domänennamen, den DNS-Servernamen und die IP-Adresse für den Active Directory-Server (für Samba). Zur Vereinfachung habe ich Umgebungsvariablen für die Windows-Domäne und den DNS-Server festgelegt. Für mich war es (meine AD-IP-Adresse war 192.168.20.11):
Wenn Sie herausfinden möchten, wie Ihre Domain und Ihr DNS-Server lauten (ich war Auftragnehmer und kannte das Netzwerk nicht), lesen Sie diese hilfreiche Referenz .
Wir müssen die Linux-Box auf dem neuen Netzwerk taufen, dies geschieht durch Bearbeiten der Host-Datei (ersetzen Sie den DNS durch den FQDN des Windows-DNS): # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Wir sollten auch den kommenden installierten Diensten mitteilen, wo sie den Marktführer finden: Einige Netzwerke verfügen über NetBIOS-Namenssuchdienste. Fügen Sie jedoch /etc/hostsin meiner Konfiguration einen expliziten Eintrag in Ihre Datei ein. Linie: # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Die Authentifizierungs- und Dateifreigabeprozesse für die Windows- und Linux-Boxen müssen mit ihren Uhren übereinstimmen. Tun Sie dies mit einem NTP-Dienst und auf der Serverversion von Ubuntu wird der NTP-Dienst mit einem (1) NTP- Server installiert und konfiguriert . Füge deins vor dem Ubuntu hinzu (oder ersetze es komplett). In dem Netzwerk, dem ich beigetreten bin, hat der DNS-Server auch den NTP-Dienst bereitgestellt. # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Starten Sie den NTP-Daemon neu: # sudo /etc/init.d/ntp restart
Kerberos-Konfiguration.
Die hier folgenden Anweisungen sind nicht wörtlich zu verstehen: Die Werte für MYDOMAIN.LOCALund srv1.mydomain.localmüssen durch die für Ihr Netzwerk geeigneten Werte ersetzt werden, wenn Sie die Dateien bearbeiten. Beachten Sie jedoch , dass bei Verwendung von UPPERCASE UPPERCASE erforderlich ist .
Wenn Sie während der apt-get installvon Kerberos die Einsicht hatten, auf die Frage "Standarddomäne" richtig zu antworten, dann gut für Sie, sonst müssen Sie Folgendes tun.
Bearbeiten Sie die (zuvor oben installierte) /etc/krb5.confDatei.
Suchen Sie den [libdefaults]Abschnitt und ändern Sie das Schlüsselwertpaar:
[libdefaults] default_realm = MYDOMAIN.LOCAL
Fügen Sie dem [realms]Abschnitt der Datei Folgendes hinzu :
Fügen Sie dem [domain_realm]Abschnitt der Datei Folgendes hinzu : .mydomain.local = MYDOMAIN.LOCAL mydomain.local = MYDOMAIN.LOCAL
An dieser Stelle können Sie testen, ob Ihr AD-Controller Ihnen ein Kerberos-Ticket ausstellt. Dies ist nicht erforderlich, kann aber einige von Ihnen zum Schwindel
verleiten : # kinit <some_windows_domain_user>
Dann sehen Sie das Ticket: # klist Sie sehen Informationen zum Ticket-Cache sowie zu Ablauf- und Erneuerungszeiten. Sobald der Schwindel abgeklungen ist, können Sie das Ticket auch freigeben / zerstören: # kdestroy
Bearbeiten Sie die /etc/nsswitch.conf. Ich konnte den folgenden Befehl ausführen, um das zu erhalten, was ich brauchte: # sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Hier ist der Inhalt meiner /etc/nsswitch.confDatei: 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
Starten und Beenden verschiedener Dienste. # sudo /etc/init.d/winbind stop # sudo service smbd restart # sudo /etc/init.d/winbind start
Verbinden Sie den Computer mit der Domäne. Ich bin nicht davon überzeugt, dass dies notwendig ist. vor allem wegen der Sicherheitsoption in der smb.confDatei ( security = ads). Vielleicht kann jemand das abwägen ... # sudo net ads join -U any_domain_user_account
Möglicherweise wird eine Fehlermeldung angezeigt DNS update failed!, aber Sie werden der Domain hinzugefügt. Wenn Sie eine Fehlermeldung erhalten, dass der Server nicht gefunden werden kann, müssen Ihre DNS-Einträge geändert werden. Während der Ubuntu-Installation verweist der Nameserver häufig auf Ihr Gateway: Die meisten Router führen einen DNS-Dienst aus. Best Practices für die Windows Server-Verwaltung sind, dass der ADC auch DNS ausführen sollte. In meinem Fall /etc/resolve.confsieht mein so aus: nameserver 192.168.20.11 nameserver 8.8.8.8
Das 8.8.8.8ist ein Google DNS, ein ziemlich zuverlässiges Backup für den Fall, dass das Windows ausfällt.
Zu diesem Zeitpunkt konnte ich mich anmelden (möglicherweise nach einem Neustart), private Verzeichnisse existierten nicht, aber ich konnte mich anmelden.
CIFS-Montage bei der Anmeldung
Dieser nächste Schritt war die Kirsche für mich; Ich wollte nicht die Verantwortung übernehmen, die Arbeitsverzeichnisse aller zu sichern, und die Box, auf der Ubuntu laufen sollte, war in Bezug auf die Zuverlässigkeit verdächtig. Auf diese Weise können sich Benutzer anmelden und ihr Windows-Benutzerverzeichnis automatisch anzeigen lassen .
Laden Sie das pam_mountModul herunter : # sudo apt-get install libpam-mount
Ich wollte, dass sich der Mount-Punkt an der traditionellen /home/<user>Position befindet: Dieser Teil wird durch die /etc/samba/smb.confDatei ( template homedir = /home/%U) konfiguriert . Aber ich brauchte es, um die Freigabe zu durchsuchen und auf ihr eigenes Windows-Verzeichnis zu verweisen. Dies wird durch Bearbeiten der /etc/security/pam_mount.conf.xmlDatei erreicht (XML ist trotz seiner Absicht nicht für den Menschen lesbar):
Fügen Sie Folgendes hinzu /etc/security/pam_mount.conf.xmlund passen Sie es an: <volume user="*" server="srv1.mydomain.local" path="UserShares" mountpoint="home" fstype="cifs" />
Wegen meines doof Mount Points musste ich auch diese Zeile hinzufügen:
<umount>umount %(MNTPT)/%(USER)</umount>
Und damit die Benutzerverzeichnisse (für den Einhängepunkt) automatisch erstellt werden, suchen Sie die Zeile und machen Sie es so:
<mkmountpoint enable="1" remove="false" />
Das remove="false"Bit ist sehr wichtig: Wenn es auf true gesetzt ist, wird pam_mount.soversucht, den Verzeichnis-Mount-Punkt zu löschen, was nicht möglich ist, wenn sich ein Benutzer mehrmals angemeldet hat. Was Sie in diesem Fall am Ende haben, sind viele streunende Reittiere auf Ihrem System.
pam_mount.soliefert immer noch nicht ganz wie versprochen. In der aktuellen Form häufen sich die Mounts und die Home-Verzeichnisse werden nicht erstellt. Irgendwo zwischen hier und der vorherigen Beta 2-Version des 10.04-Servers funktionierte es. Das kann ich aber nicht nachbauen.
In der Zwischenzeit für die Verzeichniserstellung verlasse ich mich auf pam_mkhomedir.sound stecke eine Zeile unmittelbar vor die pam_mount.soZeile, um sie aufzunehmen.
Ich habe das Problem mit der Mehrfachmontage immer noch nicht gelöst. Aber bis dies pam_mount.sobehoben ist, habe ich Folgendes in meiner /etc/pam.d/common-sessionDatei:
Das ist es. Es hat bei mir funktioniert und ich hoffe, Sie finden es nützlich.
Es wurden zahlreiche Ressourcen in Betracht gezogen, um dies herauszufinden. Hier ist eine kurze Liste (einige dieser Links verweisen auf meine eigenen Fragen zum Thema):
Das Deaktivieren der Remote-Root-SSH-Anmeldung ist ein Muss. Brute-Force- / Wörterbuchangriffe sind manchmal erfolgreich. Wenn root kompromittiert ist, verabschieden Sie sich von allem, dem Sie auf dem Computer vertraut haben.
JR Lawhorne
1
ubuntu aktiviert den root account aber nicht ... alles ist sudod, oder vermisse ich etwas?
Jamie
"alles ist sudo" - und das ist besser ... auf welche Weise? (Wenn ein Benutzerkonto, das zu sudo berechtigt ist, kompromittiert wird, ist es im Grunde dasselbe. Und es ist im Grunde gleich einfach, Root- oder Benutzerkonten zu bruteforce. Am besten ist es, nur die Anmeldung mit dem Pub-Schlüssel einzurichten und alle kennwortgeschützten Konten zu deaktivieren.) basierte Logins.)
Kurt Pfeifle
Ich verstehe das, aber überlege: "Am besten ist es, nur den Pub-Key-Login einzurichten" , was den Zweck dieses Beitrags völlig zunichte machen würde .
Antworten:
[Bearbeiten] Ich habe seitdem die Vollversion von Ubuntu 10.04 Server (21. Mai 2010) getestet .
Ich habe meinen Ubuntu 10.04 Server LTS in einem Windows-Netzwerk so konfiguriert , dass Anmeldungen mit Active Directory authentifiziert werden. Anschließend habe ich eine Windows-Freigabe bereitgestellt, die als Basisverzeichnis dient.
Hier ist, was ich ausgehend von der Erstinstallation von Ubuntu gemacht habe.
Updates bekommen
# sudo apt-get update && sudo apt-get upgrade
Installieren Sie einen SSH-Server (
sshd
)# sudo apt-get install openssh-server
Einige würden argumentieren, dass Sie "sshd down" sperren sollten, indem Sie Root-Logins deaktivieren. Ich denke, wenn Sie klug genug sind, eine SSH-Sitzung nach einem Root-Passwort zu hacken, werden Sie wahrscheinlich nicht durch das Hinzufügen von
PermitRootLogin no
in der/etc/ssh/sshd_config
Datei vereitelt . Wenn Sie paranoid oder nicht einfach nicht überzeugt sind, bearbeiten Sie die Datei oder geben Sie den folgenden einen Dreh:# (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."
Installieren Sie die erforderlichen Pakete
# sudo apt-get install winbind samba smbfs smbclient ntp krb5-user
Führen Sie eine grundlegende Netzwerk-Hausreinigung durch, um sich auf die bevorstehenden spezifischen Paketkonfigurationen vorzubereiten.
Ermitteln Sie den Windows-Domänennamen, den DNS-Servernamen und die IP-Adresse für den Active Directory-Server (für Samba). Zur Vereinfachung habe ich Umgebungsvariablen für die Windows-Domäne und den DNS-Server festgelegt. Für mich war es (meine AD-IP-Adresse war 192.168.20.11):
# WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11
Wenn Sie herausfinden möchten, wie Ihre Domain und Ihr DNS-Server lauten (ich war Auftragnehmer und kannte das Netzwerk nicht), lesen Sie diese hilfreiche Referenz .
Wir müssen die Linux-Box auf dem neuen Netzwerk taufen, dies geschieht durch Bearbeiten der Host-Datei (ersetzen Sie den DNS durch den FQDN des Windows-DNS):
# sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts
Wir sollten auch den kommenden installierten Diensten mitteilen, wo sie den Marktführer finden: Einige Netzwerke verfügen über NetBIOS-Namenssuchdienste. Fügen Sie jedoch
/etc/hosts
in meiner Konfiguration einen expliziten Eintrag in Ihre Datei ein. Linie:# sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts
Die Authentifizierungs- und Dateifreigabeprozesse für die Windows- und Linux-Boxen müssen mit ihren Uhren übereinstimmen. Tun Sie dies mit einem NTP-Dienst und auf der Serverversion von Ubuntu wird der NTP-Dienst mit einem (1) NTP- Server installiert und konfiguriert . Füge deins vor dem Ubuntu hinzu (oder ersetze es komplett). In dem Netzwerk, dem ich beigetreten bin, hat der DNS-Server auch den NTP-Dienst bereitgestellt.
# sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
Starten Sie den NTP-Daemon neu:
# sudo /etc/init.d/ntp restart
Kerberos-Konfiguration.
Die hier folgenden Anweisungen sind nicht wörtlich zu verstehen: Die Werte für
MYDOMAIN.LOCAL
undsrv1.mydomain.local
müssen durch die für Ihr Netzwerk geeigneten Werte ersetzt werden, wenn Sie die Dateien bearbeiten. Beachten Sie jedoch , dass bei Verwendung von UPPERCASE UPPERCASE erforderlich ist .Wenn Sie während der
apt-get install
von Kerberos die Einsicht hatten, auf die Frage "Standarddomäne" richtig zu antworten, dann gut für Sie, sonst müssen Sie Folgendes tun.Bearbeiten Sie die (zuvor oben installierte)
/etc/krb5.conf
Datei.Suchen Sie den
[libdefaults]
Abschnitt und ändern Sie das Schlüsselwertpaar:[libdefaults]
default_realm = MYDOMAIN.LOCAL
Fügen Sie dem
[realms]
Abschnitt der Datei Folgendes hinzu :MYDOMAIN.LOCAL = {
kdc = srv1.mydomain.local
admin_server = srv1.mydomain.local
default_domain = MYDOMAIN.LOCAL
}
Fügen Sie dem
[domain_realm]
Abschnitt der Datei Folgendes hinzu :.mydomain.local = MYDOMAIN.LOCAL
mydomain.local = MYDOMAIN.LOCAL
An dieser Stelle können Sie testen, ob Ihr AD-Controller Ihnen ein Kerberos-Ticket ausstellt. Dies ist nicht erforderlich, kann aber einige von Ihnen zum Schwindel verleiten :
# kinit <some_windows_domain_user>
Dann sehen Sie das Ticket:
# klist
Sie sehen Informationen zum Ticket-Cache sowie zu Ablauf- und Erneuerungszeiten. Sobald der Schwindel abgeklungen ist, können Sie das Ticket auch freigeben / zerstören:
# kdestroy
Konfigurieren Sie Samba.
Folgendermaßen: Es gibt Zeiten, in denen CIFS nicht verwendet werden kann oder eine andere Wahl des Netzwerkdateisystems besser ist. Wenn kerberos (krb5 / SPNEGO) Authentifizierungsunterstützung für zusätzliche Sicherheit benötigt wird, dann Samba smbclient oder smbfs müssen statt CIFS verwendet werden
Ach,
cifs
Unterstützung im Kernel für Ubuntu 10.04 (basierend auf Kernel - Version 2.6.32.9) ist in der Version 1.61 und Laut Kernel-Dokumentation gibt es seit Version 1.54 eine experimentelle Kerberos-Implementierung.Da bist du also. Ich habe keine Ahnung, ob
cifs
das funktionieren würde, also gebe ich dir die Samba-Konfiguration:Ersetzen
/etc/samba/smb.conf
( Denken Sie daran, dass ich in einer sauberen Ubuntu-Distribution gearbeitet habe, sodass ich mir keine Sorgen machte, etwas zu beschädigen):[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
Starten und Beenden verschiedener Dienste.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Richten Sie die Authentifizierung ein.
Bearbeiten Sie die
/etc/nsswitch.conf
. Ich konnte den folgenden Befehl ausführen, um das zu erhalten, was ich brauchte:# sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
Hier ist der Inhalt meiner
/etc/nsswitch.conf
Datei: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
Starten und Beenden verschiedener Dienste.
# sudo /etc/init.d/winbind stop
# sudo service smbd restart
# sudo /etc/init.d/winbind start
Verbinden Sie den Computer mit der Domäne. Ich bin nicht davon überzeugt, dass dies notwendig ist. vor allem wegen der Sicherheitsoption in der
smb.conf
Datei (security = ads
). Vielleicht kann jemand das abwägen ...# sudo net ads join -U any_domain_user_account
Möglicherweise wird eine Fehlermeldung angezeigt
DNS update failed!
, aber Sie werden der Domain hinzugefügt. Wenn Sie eine Fehlermeldung erhalten, dass der Server nicht gefunden werden kann, müssen Ihre DNS-Einträge geändert werden. Während der Ubuntu-Installation verweist der Nameserver häufig auf Ihr Gateway: Die meisten Router führen einen DNS-Dienst aus. Best Practices für die Windows Server-Verwaltung sind, dass der ADC auch DNS ausführen sollte. In meinem Fall/etc/resolve.conf
sieht mein so aus:nameserver 192.168.20.11
nameserver 8.8.8.8
Das
8.8.8.8
ist ein Google DNS, ein ziemlich zuverlässiges Backup für den Fall, dass das Windows ausfällt.Zu diesem Zeitpunkt konnte ich mich anmelden (möglicherweise nach einem Neustart), private Verzeichnisse existierten nicht, aber ich konnte mich anmelden.
CIFS-Montage bei der Anmeldung
Dieser nächste Schritt war die Kirsche für mich; Ich wollte nicht die Verantwortung übernehmen, die Arbeitsverzeichnisse aller zu sichern, und die Box, auf der Ubuntu laufen sollte, war in Bezug auf die Zuverlässigkeit verdächtig. Auf diese Weise können sich Benutzer anmelden und ihr Windows-Benutzerverzeichnis automatisch anzeigen lassen .
Laden Sie das
pam_mount
Modul herunter :# sudo apt-get install libpam-mount
Ich wollte, dass sich der Mount-Punkt an der traditionellen
/home/<user>
Position befindet: Dieser Teil wird durch die/etc/samba/smb.conf
Datei (template homedir = /home/%U
) konfiguriert . Aber ich brauchte es, um die Freigabe zu durchsuchen und auf ihr eigenes Windows-Verzeichnis zu verweisen. Dies wird durch Bearbeiten der/etc/security/pam_mount.conf.xml
Datei erreicht (XML ist trotz seiner Absicht nicht für den Menschen lesbar):Fügen Sie Folgendes hinzu
/etc/security/pam_mount.conf.xml
und passen Sie es an:<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>
Wegen meines doof Mount Points musste ich auch diese Zeile hinzufügen:
<umount>umount %(MNTPT)/%(USER)</umount>
Und damit die Benutzerverzeichnisse (für den Einhängepunkt) automatisch erstellt werden, suchen Sie die Zeile und machen Sie es so:
<mkmountpoint enable="1" remove="false" />
Das
remove="false"
Bit ist sehr wichtig: Wenn es auf true gesetzt ist, wirdpam_mount.so
versucht, den Verzeichnis-Mount-Punkt zu löschen, was nicht möglich ist, wenn sich ein Benutzer mehrmals angemeldet hat. Was Sie in diesem Fall am Ende haben, sind viele streunende Reittiere auf Ihrem System.pam_mount.so
liefert immer noch nicht ganz wie versprochen. In der aktuellen Form häufen sich die Mounts und die Home-Verzeichnisse werden nicht erstellt. Irgendwo zwischen hier und der vorherigen Beta 2-Version des 10.04-Servers funktionierte es. Das kann ich aber nicht nachbauen.In der Zwischenzeit für die Verzeichniserstellung verlasse ich mich auf
pam_mkhomedir.so
und stecke eine Zeile unmittelbar vor diepam_mount.so
Zeile, um sie aufzunehmen.Ich habe das Problem mit der Mehrfachmontage immer noch nicht gelöst. Aber bis dies
pam_mount.so
behoben ist, habe ich Folgendes in meiner/etc/pam.d/common-session
Datei:Das ist es. Es hat bei mir funktioniert und ich hoffe, Sie finden es nützlich.
Es wurden zahlreiche Ressourcen in Betracht gezogen, um dies herauszufinden. Hier ist eine kurze Liste (einige dieser Links verweisen auf meine eigenen Fragen zum Thema):
quelle
sudo
d, oder vermisse ich etwas?sudo
" - und das ist besser ... auf welche Weise? (Wenn ein Benutzerkonto, das zu sudo berechtigt ist, kompromittiert wird, ist es im Grunde dasselbe. Und es ist im Grunde gleich einfach, Root- oder Benutzerkonten zu bruteforce. Am besten ist es, nur die Anmeldung mit dem Pub-Schlüssel einzurichten und alle kennwortgeschützten Konten zu deaktivieren.) basierte Logins.)