Linux i Windows - integracja AD z usługami linuxa
Wpis ma na celu pokazanie jak można zintegrowac Active Directory z serwerem plików SAMBA oraz dostępu przez SSH do serwera linuxowego.
Zaleta tego jest iz mamy centralny katalog uzyszkodnikow. W moim przypadku mam 3 serwery samby, kilka maszyn z dostepem przez ssh, wiec zarzadzanie uzytszkodnikami, ich haslami mam na jednej maszynie windowsowej. Oczywiscie komputery w firmie mam podpiete do serwera AD wiec jest tylko jednokrotne podanie hasla przy logowaniu.
Sposob autoryzacji oparty o AD wykorzystuje tez przy autoryzacji w apache2 -> bylo to opisywane juz na blogu.
Nie będę opisywał instalacji AD a jedynie to co jest w linuxie.
tak wyglada ad (mniej wiecej :)):
Założenia:
- nazwa domeny. FIRMA.Z
- nazwa servera: DC.FIRMA.Z
- nazwa netbios: FIRMA
- ip dc: 192.168.2.204
- system DC: windows 2008r2 std
- userzy: administrator, grzenio
- nazwa servera linux: SAMBA.FIRMA.Z
- ip linuxa: 192.168.2.251
- system linux: Debian 6
na poczatek aktualizacja system i instalacja potrzebnych i nie potrzebnych pakietow
apt-get update
apt-get upgrade
apt-get install krb5-config krb5-user krb5-doc winbind \
samba rdate smbldap-tools ldb-tools mc vim-nox
dorabiamy sobie wpisy w /etc/hosts
vim /etc/hosts
zawartosc:
192.168.2.251 samba.FIRMA.Z samba
teraz musimy ustawic kerberosa
vim /etc/krb5.conf
zmiany ktore musimy dokonac lub dopisac, reszty nie ruszamy. edytujemy 3 sekcje: libdefaults, realms i domain_realm
[libdefaults]
default_realm = FIRMA.Z
krb4_config = /etc/krb.conf
krb4_realms = /etc/krb.realms
kdc_timesync = 1
ccache_type = 4
forwardable = true
proxiable = true
dns_lookup_realm = false
dns_lookup_kdc = false
clock_skew = 300
ticket_lifetime = 24h
…
[realms]
FIRMA.Z = {
kdc = DC.FIRMA.Z
admin_server = DC.FIRMA.Z
default_domain = FIRMA.Z
}
…
[domain_realm]
.kerberos.server = FIRMA.Z
.FIRMA.Z = FIRMA.Z
Testujemy:
kinit [email protected]
zostaniemy poproszeni o haslo. podanie zlego hasla wywali error, podanie hasla prawidlowego nic nie pokaze.
modyfikujemy odpowiednio ponizej pliki
# /etc/nsswitch.conf
passwd: compat winbind
group: compat winbind
shadow: compat winbind
…
#samba/smb.conf
[global]
workgroup = FIRMA
realm = FIRMA.Z #domena
load printers = no
preferred master = no
local master = no
server string = fileserver
password server = 192.168.2.204 #ip dc
encrypt passwords = yes
security = ADS
netbios name = SAMBA
client signing = Yes
dns proxy = No
wins server = 192.168.2.204 #ip dc
idmap uid = 600-20000
idmap gid = 600-20000
winbind separator = +
winbind enum users = Yes
winbind enum groups = Yes
winbind use default domain = Yes
template shell = /bin/bash
[homes]
comment = Home Direcotries
valid users = %S
read only = No
browseable = No
dodajemy Linuxa do domeny
net ads join -U Administrator
zostaniemy poproszeni o haslo administratora
zakładamy foldery domowe, sama nie umie sama tego zrobic, bedzie to potrafil robic sshd
cd /home
mkdir FIRMA/
mkdir FIRMA/administrator/
mkdir FIRMA/grzenio/
nadajemy odpowiednie prawa
chown administrator administrator
chown grzenio grzenio
restartujemy co trzeba:
/etc/init.d/samba restart
/etc/init.d/winbind restart
no i to wszystko jezeli chodzi o sambe. czas na ssh
wynik taki:
grzenio@samba:~$ pwd
/home/FIRMA/grzenio
grzenio@samba:~$ ls -al
total 20
drwxrwxrwx 4 grzenio root 4096 Jun 30 17:00 .
drwxr-xr-x 4 root root 4096 Jun 30 13:11 ..
-rw------- 1 grzenio domain users 101 Jun 30 17:00 .bash_history
drwxr-xr-x 2 grzenio domain users 4096 Jun 30 13:41 New folder
drwxr-xr-x 2 grzenio domain users 4096 Jun 30 13:49 test
grzenio@samba:~$
tutaj tak naprawde tyko podam jakie wpisy dodac trzeba do jakich plikow po tym tylko restart sshd wystarczy:)
# /etc/pam.d/common-account
account sufficient pam_winbind.so
account required pam_unix.so# /etc/pam.d/common-auth
auth sufficient pam_winbind.so
auth required pam_unix.so nullok_secure use_first_pass# /etc/pam.d/common-password
password required pam_unix.so nullok obscure min=4 max=50 md5# /etc/pam.d/common-session
session required pam_mkhomedir.so umask=0022 skel=/etc/skelapt-get install sudo
# /etc/sudoers
%UnixAdmins ALL=(ALL) ALL