सक्रिय निर्देशिका के खिलाफ लिनक्स खातों को कैसे प्रमाणित करें और लॉगिन पर विंडोज शेयर को माउंट करें?


18

मैं Ubuntu 10.04 सर्वर का उपयोग कर रहा हूं।


यह एक प्रश्न के उत्तर के रूप में पोस्ट किया जाना चाहिए था। कृपया इसे संपादित करें ताकि यह एक सवाल हो और जो आपने ऊपर पोस्ट किया है उसे इसका उत्तर देने के लिए आगे बढ़ें। से पूछे जाने वाले प्रश्न : "यह भी बिल्कुल ठीक पूछने के लिए और अपने खुद के सवाल का जवाब है, लेकिन नाटक आप जियोपार्डी पर हैं करने के लिए है:। एक सवाल के रूप में यह वाक्यांश"
अगली सूचना तक रोक दिया गया।

जवाबों:


27

[संपादित करें] जब से मैंने Ubuntu 10.04 सर्वर (21 / मई / 2010) की पूर्ण रिलीज़ का परीक्षण किया है ।

मैंने अपने उबंटू 10.04 सर्वर एलटीएस को सक्रिय निर्देशिका का उपयोग करके लॉगिन को प्रमाणित करने के लिए एक विंडोज़ नेटवर्क पर रहने के लिए कॉन्फ़िगर किया है , फिर घर की निर्देशिका के रूप में सेवा करने के लिए एक विंडोज़ शेयर माउंट करें।

यहाँ वह है जो मैंने उबंटू की प्रारंभिक स्थापना से शुरू किया था।

  1. उबंटू सर्वर 10.04 LTS डाउनलोड और इंस्टॉल करें
  2. अपडेट प्राप्त करे

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

  3. SSH सर्वर स्थापित करें ( sshd)

    # sudo apt-get install openssh-server

    कुछ लोग तर्क देंगे कि आपको रूट लॉगिन को अक्षम करके "sshd down lock" करना चाहिए। मुझे पता है कि यदि आपका स्मार्ट रूट पासवर्ड के लिए एक ssh सत्र हैक करने के लिए पर्याप्त है, तो आप संभवतः फ़ाइल PermitRootLogin noमें जोड़कर विफल नहीं होंगे /etc/ssh/sshd_config। यदि आपका विरोधाभास नहीं है या बस आश्वस्त नहीं है, तो फ़ाइल को संपादित करें या निम्नलिखित एक स्पिन दें:

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

  4. आवश्यक पैकेज स्थापित करें

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

  5. आने वाले विशिष्ट पैकेज कॉन्फ़िगरेशन के लिए तैयारी में कुछ बुनियादी नेटवर्किंग घर वापसी करें।

    1. सक्रिय निर्देशिका सर्वर (सांबा के लिए) के लिए अपने विंडोज़ डोमेन नाम, डीएनएस सर्वर नाम और आईपी पते का निर्धारण करें। सुविधा के लिए मैंने विंडोज़ डोमेन और डीएनएस सर्वर के लिए पर्यावरण चर निर्धारित किए हैं। मेरे लिए यह (मेरा AD IP पता 192.168.20.11 था):

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

      यदि आप यह पता लगाना चाहते हैं कि आपका डोमेन और DNS सर्वर क्या है (मैं ठेकेदार था और नेटवर्क को नहीं जानता था) इस उपयोगी संदर्भ को देखें

    2. हमें नए नेटवर्क पर लिनक्स बॉक्स को क्रिश्चियन करने की आवश्यकता है, यह होस्ट फ़ाइल (विंडोज़ के FQDN के साथ DNS को प्रतिस्थापित करें) को संपादित करके किया जाता है:
      # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts

    3. हमें आगामी स्थापित सेवाओं को भी बताना चाहिए जहां वे वहां नेता पा सकते हैं: कुछ नेटवर्क में नेटबायोस नाम लुकअप सेवाएं होंगी, लेकिन बस मामले में, आपकी /etc/hostsफ़ाइल में एक स्पष्ट प्रविष्टि जोड़ें , मेरे कॉन्फ़िगरेशन में मैंने तीसरे पर प्रविष्टि जोड़ी (3) रेखा:
      # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts

    4. विंडोज और लिनक्स बॉक्स के लिए प्रमाणीकरण और फ़ाइल साझाकरण प्रक्रियाओं को अपनी घड़ियों को सहमत होने की आवश्यकता है। NTP सेवा के साथ ऐसा करें, और Ubuntu के सर्वर संस्करण पर NTP सेवा स्थापित और एक (1) NTP के साथ कॉन्फ़िगर होकर आती है । उबंटू एक से पहले अपना जोड़ें (या इसे पूरी तरह से बदलें)। मैं जिस नेटवर्क से जुड़ रहा था उसमें DNS सर्वर था जो NTP सेवा को भी सेवा दे रहा था।
      # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
      NTP डेमॉन को पुनरारंभ करें:
      # sudo /etc/init.d/ntp restart

  6. कर्बरोस विन्यास।
    यहां दिए गए निर्देशों का शाब्दिक रूप से ध्यान नहीं दिया जाना चाहिए: जब आप फ़ाइलों को संपादित करते हैं तो आपके नेटवर्क के लिए उपयुक्त मानों को बदलने MYDOMAIN.LOCALऔर srv1.mydomain.localउन्हें बदलने की आवश्यकता होती है, लेकिन ध्यान दें कि जहां UPPERCASE का उपयोग किया जाता है, वहां आवश्यक है
    यदि, apt-get installकेर्बरोस के दौरान आपको "डिफ़ॉल्ट डोमेन" प्रश्न का सही उत्तर देने के लिए अंतर्दृष्टि थी, तो, आपके लिए अच्छा है, अन्यथा आपको निम्नलिखित कार्य करना होगा।

    1. /etc/krb5.confफ़ाइल को पहले (ऊपर स्थापित) संपादित करें ।

      1. खोजें [libdefaults]अनुभाग और महत्वपूर्ण मूल्य जोड़ी बदलने के लिए:

        [libdefaults]
        default_realm = MYDOMAIN.LOCAL

      2. [realms]फ़ाइल के अनुभाग में निम्नलिखित जोड़ें :

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

      3. [domain_realm]फ़ाइल के अनुभाग में निम्नलिखित जोड़ें :
        .mydomain.local = MYDOMAIN.LOCAL
        mydomain.local = MYDOMAIN.LOCAL

      4. इस बिंदु पर एक अच्छा परीक्षण यह देखना है कि क्या आपका एडी नियंत्रक आपको केर्बरोस टिकट जारी करेगा। यह आवश्यक नहीं है, लेकिन यह आप में से कुछ को गिड्डी बना सकता है:
        # kinit <some_windows_domain_user>
        फिर टिकट देखने के लिए:
        # klist
        आप टिकट कैश और एक्सपायरी और नवीनीकरण के बारे में सामान देखेंगे। एक बार गिडगिडाने के बाद, आप टिकट को जारी / नष्ट कर सकते हैं:
        # kdestroy

  7. सांबा को कॉन्फ़िगर करें।
    निम्नलिखित के अनुसार: ऐसे समय होते हैं जब CIFS का उपयोग नहीं किया जा सकता है या कोई अन्य नेटवर्क फाइल सिस्टम विकल्प बेहतर है। यदि अतिरिक्त सुरक्षा के लिए kerberos (krb5 / SPNEGO) प्रमाणीकरण समर्थन की आवश्यकता है, तो Sif के smbclient या smbfs का उपयोग cifs
    Alas के बजाय किया जाना चाहिए , cifsubuntu के लिए कर्नेल में समर्थन ..04 (कर्नेल संस्करण 2.6.32.9 के आधार पर) संस्करण 1.61 पर है, और कर्नेल डॉक्यूमेंटेशन के अनुसार, वर्जन 1.54 के बाद से प्रायोगिक केर्बरोस कार्यान्वयन हुआ है।
    तो वहाँ तुम हो। मुझे पता नहीं है कि cifsक्या काम करेगा तो मैं आपको सांबा कॉन्फ़िगरेशन देता हूं:

    1. बदलें /etc/samba/smb.conf(याद रखें कि मैं उबंटू के एक साफ डिस्ट्रो से काम कर रहा था, इसलिए मुझे कुछ भी तोड़ने की चिंता नहीं थी):
      [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. विभिन्न सेवाओं को शुरू करना और बंद करना।

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

  8. प्रमाणीकरण सेट करें।

    1. संपादित करें /etc/nsswitch.conf। मैं अपनी आवश्यकता के लिए निम्नलिखित कमांड चलाने में सक्षम था:
      # sed -ri 's/(compat)/\1 winbind/' /etc/nsswitch.conf
      यहाँ मेरी /etc/nsswitch.confफाइल की सामग्री दी गई है:
      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. विभिन्न सेवाओं को शुरू करना और बंद करना।
      # sudo /etc/init.d/winbind stop
      # sudo service smbd restart
      # sudo /etc/init.d/winbind start

  9. डोमेन में कंप्यूटर से जुड़ें। मुझे यकीन नहीं है कि यह आवश्यक है; विशेष रूप से smb.confफ़ाइल में सुरक्षा विकल्प के कारण ( security = ads)। शायद कोई इस पर वजन कर सकता है ...
    # sudo net ads join -U any_domain_user_account
    आपको एक त्रुटि मिल सकती है DNS update failed!, लेकिन आप डोमेन में शामिल हो जाएंगे। यदि आपको सर्वर नहीं मिल पाने के बारे में कोई त्रुटि मिलती है, तो आपके DNS रिकॉर्ड को संशोधित करने की आवश्यकता है। वें उबंटू स्थापना के दौरान, नेमवेरसर अक्सर आपके गेटवे की ओर इशारा करेगा: अधिकांश राउटर एक DNS सेवा करेंगे। विंडोज़ सर्वर प्रशासन के लिए सर्वोत्तम अभ्यास है एडीसी को डीएनएस को भी चलाना चाहिए। मेरे मामले में मेरे /etc/resolve.confइस प्रकार है: एक गूगल डीएनएस, मामले खिड़कियों में एक काफी विश्वसनीय बैकअप एक नीचे चला जाता है है।
    nameserver 192.168.20.11
    nameserver 8.8.8.8
    8.8.8.8

इस बिंदु पर मैं लॉगिन कर सकता हूं (शायद एक रिबूट के बाद), होम निर्देशिकाएं मौजूद नहीं थीं, लेकिन मैं लॉगिन कर सकता था।

  1. लॉगिन पर CIFS बढ़ते हुए
    यह अगला कदम मेरे लिए चेरी था; मैं नहीं चाहता था कि हर किसी की वर्किंग डायरेक्टरीज़ का बैकअप लिया जाए और जो बॉक्स उबंटू चल रहा था वह विश्वसनीयता के लिहाज से संदिग्ध था। निम्नलिखित उपयोगकर्ता लॉगिन करके और स्वचालित रूप से अपनी विंडोज़ उपयोगकर्ता निर्देशिका देख सकते हैं ।

    1. pam_mountमॉड्यूल डाउनलोड करें :
      # sudo apt-get install libpam-mount
      मैं माउंट बिंदु को पारंपरिक /home/<user>स्थान में इंगित करना चाहता था : यह हिस्सा /etc/samba/smb.confफ़ाइल ( template homedir = /home/%U) द्वारा कॉन्फ़िगर किया गया है । लेकिन मुझे यह साझा करने और अपनी स्वयं की विंडोज़ निर्देशिका को इंगित करने की आवश्यकता थी। यह /etc/security/pam_mount.conf.xmlफ़ाइल को संपादित करके पूरा किया गया है (जो कि इसके इरादे के बावजूद, XML मानव पठनीय नहीं है ):

    2. निम्नलिखित को जोड़ें /etc/security/pam_mount.conf.xmlऔर सूट में परिवर्तन करें:
      <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>

      मेरे नासमझ माउंट बिंदु के कारण मुझे यह रेखा भी जोड़नी पड़ी:

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

      और ताकि उपयोगकर्ता निर्देशिका (आरोह बिंदु के लिए) स्वचालित रूप से लाइन ढूंढे और इसे बना दे:

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

      remove="false"बिट काफी महत्वपूर्ण है: अगर यह सच करने के लिए सेट, pam_mount.soनिर्देशिका माउंट बिंदु यदि कोई उपयोगकर्ता एक से अधिक बार लॉग इन किया है जो यह नहीं कर सकते नष्ट करने के लिए कोशिश करता है। आप उस मामले में क्या समाप्त करते हैं, आपके सिस्टम पर बहुत सारे आवारा आरोहण हैं।

      pam_mount.soअभी भी काफी वादा के अनुसार वितरित नहीं है। यह वर्तमान रूप में आरोहियों को जमा करता रहता है और घर निर्देशिकाओं का निर्माण नहीं हो रहा है। यहाँ और पिछले बीटा 2 के बीच 10.04 सर्वर के बीच, यह काम कर रहा था। हालांकि मैं इसे फिर से नहीं बना सकता।
      निर्देशिका निर्माण के लिए औसत समय में मैं भरोसा कर रहा हूं pam_mkhomedir.so, और pam_mount.soसमायोजित करने के लिए लाइन से ठीक पहले एक पंक्ति अटक गई है ।
      मैंने अभी भी कई बढ़ते मुद्दे को हल नहीं किया है। लेकिन जब तक pam_mount.soतय नहीं हो जाता है, यह वही है जो मुझे अपनी /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
      

बस। इसने मेरे लिए काम किया, और मुझे आशा है कि आप इसे उपयोगी पाएंगे।

कई संसाधनों पर विचार किया गया ताकि मैं इसका पता लगा सकूं। यहाँ एक छोटी सूची है (इनमें से कई लिंक विषय पर मेरे स्वयं के प्रश्नों की ओर इशारा करते हैं):


1
दूरस्थ रूट ssh लॉगिन को बंद करना आवश्यक है। क्रूर बल / शब्दकोश हमले कभी-कभी सफल होते हैं। यदि जड़ से समझौता किया जाता है, तो मशीन पर भरोसा किए गए किसी भी चीज़ को अलविदा कहें।
जेआर लॉहॉर्न

1
ubuntu रूट खाते को सक्रिय नहीं करता है ... सब कुछ sudoडी है, या मैं कुछ याद कर रहा हूँ?
जेमी

'सब कुछ है sudo' - और यह बेहतर है ... किस तरीके से? (यदि कोई उपयोगकर्ता खाता जो sudo का हकदार है, तो समझौता किया जाता है, यह मूल रूप से एक ही बात है। और यह मूल रूप से समान रूप से सरल है [या नहीं] रूट या उपयोगकर्ता खातों को bruteforce करने के लिए। सबसे अच्छा है कि केवल पब-कुंजी को लॉगिन करें, और सभी पासवर्ड को अक्षम करें। आधारित लॉगिन।)
कर्ट फ़िफ़ेल

मुझे वह मिल गया है, लेकिन विचार करें: "सर्वश्रेष्ठ पब-कुंजी को केवल लॉगिन के लिए सेटअप करना है " , जो इस पोस्ट के उद्देश्य को पूरी तरह से हरा देगा ।
जेमी

1
आप एक sudoed या रूट खाते का उपयोग कर सकते हैं और रूट उपयोगकर्ता का नाम बदल सकते हैं ताकि यह root linuxers.org/article/fun-linux-changing-root-user-name-linux
PsychoDad
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.