Linux hesaplarının Active Directory'ye karşı doğrulanması ve oturum açıldığında bir Windows paylaşımı nasıl bağlanır?


18

Ubuntu 10.04 Sunucusu kullanıyorum.


Bu bir soruya cevap olarak gönderilmiş olmalıdır. Lütfen bunu bir soru olacak şekilde düzenleyin ve yukarıda yayınladığınızı yanıt olarak taşıyın. Gönderen SSS : "Bu sorun ve kendi soruya cevap ama İşgal üzerinde taklidi yapacak mükemmel para da var. Bir soru şeklinde ifade it"
sonraki duyuruya kadar duraklatıldı.

Yanıtlar:


27

[Düzenle] Ben o zamandan beri bu Ubuntu 10.04 Server (21 / Mayıs / 2010) tam sürümünü test ettik .

Ubuntu 10.04 Server LTS'mi Windows dizininde bulunan ve aktif dizini kullanarak girişlerin kimliğini doğrulayacak şekilde yapılandırdım .

İşte Ubuntu'nun ilk kurulumundan başlayarak yaptığım şey.

  1. Ubuntu Server 10.04 LTS'yi indirin ve yükleyin
  2. Güncellemeleri alın

    # sudo apt-get update && sudo apt-get upgrade

  3. Bir SSH sunucusu kurun ( sshd)

    # sudo apt-get install openssh-server

    Bazıları kök girişlerini devre dışı bırakarak "sshd'yi kilitlemeniz" gerektiğini savunur. Bir kök şifre SSH oturumu kesmek için akıllı yeterince, muhtemelen ilave edilerek engellenmeye etmeyeceğiz diye anlamaya PermitRootLogin noiçinde /etc/ssh/sshd_configdosyanın. Paranoyakınız ya da ikna olmamışsanız, dosyayı düzenleyin ya da aşağıdakileri yapın:

    # (grep PermitRootLogin /etc/ssh/sshd_config && sudo sed -ri 's/PermitRootLogin ).+/\1no/' /etc/ssh/sshd_conifg) || echo "PermitRootLogin not found. Add it manually."

  4. Gerekli paketleri yükleyin

    # sudo apt-get install winbind samba smbfs smbclient ntp krb5-user

  5. Belirli paket yapılandırmalarının hazırlanmasına hazırlık olarak bazı temel ağ temizliği yapın.

    1. Etkin dizin sunucusu (samba için) için Windows etki alanı adınızı, DNS sunucusu adınızı ve IP adresinizi belirleyin. Kolaylık sağlamak için Windows etki alanı ve DNS sunucusu için ortam değişkenleri ayarladım. Benim için (AD IP adresim 192.168.20.11 idi):

      # WINDOMAIN=mydomain.local && WINDNS=srv1.$WINDOMAIN && WINDNS_IP=192.168.20.11

      Etki alanınızın ve DNS sunucunuzun ne olduğunu anlamak istiyorsanız (yükleniciydim ve ağı bilmiyordum) bu yararlı referansa göz atın .

    2. Yeni ağdaki Linux kutusunu vaftiz etmemiz gerekiyor, bu ana bilgisayar dosyasını düzenleyerek yapılır (DNS'yi Windows DNS'in FQDN'si ile değiştirin):
      # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts

    3. Ayrıca, gelecekteki yüklü hizmetleri orada lider bulabileceklerini söylemeliyiz: bazı ağların netbios adı arama hizmetleri olacak, ancak her ihtimale karşı, /etc/hostsdosyanızda açık bir giriş ekleyin , yapılandırmamda üçüncü (3) hat:
      # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts

    4. Windows ve Linux kutuları için kimlik doğrulama ve dosya paylaşım süreçlerinin saatlerinin aynı olması gerekir. Bunu bir NTP hizmeti ile yapın ve Ubuntu'nun sunucu sürümünde NTP hizmeti bir (1) NTP sunucusuyla kurulur ve yapılandırılır . Sizinkini Ubuntu'dan önce ekleyin (veya tamamen değiştirin). Katıldığım ağda NTP hizmetini sunan DNS sunucusu da vardı.
      # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
      NTP arka plan programını yeniden başlatın:
      # sudo /etc/init.d/ntp restart

  6. Kerberos yapılandırması.
    Burada izlenen talimatlar tam anlamıyla alınmamalıdır: dosyaları düzenlerken değerlerin MYDOMAIN.LOCALve srv1.mydomain.localağınız için uygun olanlarla değiştirilmesi gerekir, ancak UPPERCASE'in nerede kullanıldığı UPPERCASE'in gerekli olduğunu unutmayın . Kerberos
    sırasında, apt-get install"varsayılan alan adı" sorusuna doğru bir şekilde yanıt vermeniz gerekiyorsa, sizin için iyi, aksi takdirde aşağıdakileri yapmanız gerekir.

    1. (Önceden kurulmuş olan) /etc/krb5.confdosyayı düzenleyin.

      1. [libdefaults]Bölümü bulun ve anahtar / değer çiftini değiştirin:

        [libdefaults]
        default_realm = MYDOMAIN.LOCAL

      2. [realms]Dosyanın bölümüne aşağıdakileri ekleyin :

        MYDOMAIN.LOCAL = {
        kdc = srv1.mydomain.local
        admin_server = srv1.mydomain.local
        default_domain = MYDOMAIN.LOCAL
        }

      3. [domain_realm]Dosyanın bölümüne aşağıdakileri ekleyin :
        .mydomain.local = MYDOMAIN.LOCAL
        mydomain.local = MYDOMAIN.LOCAL

      4. Bu noktada güzel bir test, AD denetleyicinizin size bir kerberos bileti düzenleyip düzenlemeyeceğini görmek. Bu gerekli değildir, ancak bazılarınız başınızı döndürebilir:
        # kinit <some_windows_domain_user>
        Sonra bileti görmek için:
        # klist
        Bilet önbelleği, süreleri ve yenilemeleri hakkında şeyler göreceksiniz. Baş dönmesi azaldığında, bileti de serbest bırakabilir / imha edebilirsiniz:
        # kdestroy

  7. Samba'yı yapılandırın.
    Aşağıdakilere göre: CIFS'in kullanılamadığı veya başka bir ağ dosya sistemi seçiminin daha iyi olduğu zamanlar vardır. Ek güvenlik için kerberos (krb5 / SPNEGO) kimlik doğrulama desteği gerekiyorsa,
    Alas cifs yerine Samba'nın smbclient veya smbfs'si kullanılmalıdır , cifsubuntu 10.04 için çekirdekte (çekirdek sürüm 2.6.32.9'a göre) sürüm 1.61'dir ve çekirdek belgelerine göre, deneysel kerberos uygulaması 1.54 sürümünden beri var.
    İşte buradasınız. Eğer cifsişe yarayacak bir fikrim yok , bu yüzden size samba yapılandırmasını veriyorum:

    1. Değiştirin /etc/samba/smb.conf(Ubuntu'nun temiz bir dağıtımından çalıştığımı unutmayın, bu yüzden bir şey kırma konusunda endişelenmedim):
      [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

    2. Çeşitli hizmetleri başlatın ve durdurun.

      # sudo /etc/init.d/winbind stop
      # sudo service smbd restart
      # sudo /etc/init.d/winbind start

  8. Kimlik doğrulamasını ayarlayın.

    1. Düzenleyin /etc/nsswitch.conf. Ben ihtiyacım olanı almak için aşağıdaki komutu çalıştırmak mümkün:
      # sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
      İşte benim /etc/nsswitch.confdosya içeriği :
      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

    2. Çeşitli hizmetleri başlatın ve durdurun.
      # sudo /etc/init.d/winbind stop
      # sudo service smbd restart
      # sudo /etc/init.d/winbind start

  9. Bilgisayarı etki alanına katın. Bunun gerekli olduğuna ikna olmadım; özellikle smb.confdosyadaki güvenlik seçeneği nedeniyle ( security = ads). Belki birileri buna ağırlık verebilir ...
    # sudo net ads join -U any_domain_user_account
    Bir hata alabilirsiniz DNS update failed!, ancak etki alanına katılacaksınız. Sunucuyu bulamama konusunda bir hata alırsanız, DNS kayıtlarınızın değiştirilmesi gerekir. Ubuntu kurulumu sırasında, ad sunucusu genellikle ağ geçidinizi gösterecektir: çoğu yönlendirici bir DNS servisi yapacaktır. Windows sunucu yönetimi için en iyi uygulamalar, ADC'nin DNS'yi de çalıştırması gerektiğidir. Benim durumumda, benim /etc/resolve.confböyle görünüyor: bir google DNS, tek iner pencereler durumda oldukça güvenilir destektir.
    nameserver 192.168.20.11
    nameserver 8.8.8.8
    8.8.8.8

Bu noktada giriş yapabilirdim (belki bir yeniden başlatmadan sonra), ev dizinleri yoktu, ancak giriş yapabilirim.

  1. CIFS Girişte Montaj
    Bu sonraki adım benim için kirazdı; Herkesin çalışma dizinlerini yedekleme sorumluluğunu istemedim ve Ubuntu'nun çalışacağı kutu güvenilirlik açısından şüpheliydi. Şu kullanıcılar yaparak giriş yapmalı ve pencereleri kullanıcı dizini görebiliyordu automagicallylar .

    1. pam_mountModülü indirin :
      # sudo apt-get install libpam-mount
      Bağlama noktasının geleneksel /home/<user>konumda olmasını istedim : bu kısım /etc/samba/smb.confdosya ( template homedir = /home/%U) tarafından yapılandırıldı . Ama paylaşmak için kendi windows dizini işaret ihtiyacı vardı. Bu, /etc/security/pam_mount.conf.xmldosyayı düzenleyerek gerçekleştirilir (ki amacına rağmen XML okunabilir değildir ):

    2. Aşağıdakileri ekleyin /etc/security/pam_mount.conf.xmlve uygun şekilde değiştirin:
      <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>

      Benim aptal bağlama noktası nedeniyle bu satırı da eklemek zorunda kaldım:

      <umount>umount %(MNTPT)/%(USER)</umount>

      Ve böylece kullanıcı dizinleri (bağlama noktası için) otomatik olarak hattı bulur ve bunu yapar:

      <mkmountpoint enable="1" remove="false" />

      remove="false"Biraz oldukça önemlidir: true 's seti, eğer pam_mount.sodizin bir kullanıcı birden çok kez oturum açtıktan eğer yapamaz bağlama noktası silmeye çalışır. Bu durumda, sisteminizde çok sayıda başıboş montaj var.

      pam_mount.sohala vaat edildiği gibi teslim değil. Şu anki haliyle, bağlar yığılmaya devam ediyor ve ana dizinler oluşturulmuyor. Burada ve 10.04 sunucusunun önceki Beta 2 sürümü arasında bir yerde çalışıyordu. Yine de bunu yeniden oluşturamıyorum.
      Dizin oluşturma için bu sırada güveniyorum pam_mkhomedir.sove satır karşılamak için hemen önce bir çizgi sıkışmış pam_mount.so.
      Çoklu montaj sorununu hala çözemedim. Ama pam_mount.sodüzeltilinceye kadar , dosyamda bu var /etc/pam.d/common-session:

      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
      

Bu kadar. Benim için işe yaradı ve umarım faydalı bulursun.

Bunu anlayabilmek için çok sayıda kaynak düşünülmüştü. İşte kısa bir liste (bu bağlantıların bir kısmı konuyla ilgili kendi sorularıma işaret ediyor):


1
Uzak kök ssh oturumunu kapatmak bir zorunluluktur. Kaba kuvvet / sözlük saldırıları bazen başarılı olur. Kökten ödün verilirse, makineye güvendiğiniz her şeye veda edin.
JR Lawhorne

1
ubuntu olsa kök hesabı etkinleştirmez ... her şey sudod, ya da bir şey eksik mi?
Jamie

'her şey sudo' - Ve bu daha iyi ... hangi yönden? (Sudo yetkisi olan herhangi bir kullanıcı hesabının güvenliği ihlal edilirse, temelde aynı şeydir. Kök veya kullanıcı hesaplarını bruteforce etmek temelde aynı derecede basittir (veya değil). tabanlı oturum açma.)
Kurt Pfeifle

Bunu anlıyorum, ancak şunu düşünün: "En iyisi , bu yazının amacını tamamen yenecek olan pub-key only login'i kurmaktır."
Jamie

1
sudoed veya root hesabı da kullanabilir ve kök kullanıcının adını root olmayacak şekilde değiştirebilirsiniz linuxers.org/article/fun-linux-changing-root-user-name-linux
PsychoData
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.