Як перевірити автентифікацію облікових записів Linux на Active Directory та змонтувати спільний доступ до Windows під час входу?


18

Я використовую сервер Ubuntu 10.04.


Це повинно було бути розміщено як відповідь на запитання. Відредагуйте це, щоб це питання, і перемістіть те, що ви розмістили вище, щоб відповісти на нього. З FAQ : "Також прекрасно задавати і відповідати на власне запитання, але прикидайтесь, що ви на небезпеці: сформулюйте це у вигляді запитання".
Призупинено до подальшого повідомлення.

Відповіді:


27

[Редагувати] З тих пір я перевірив цю повну версію сервера Ubuntu 10.04 (21 травня / 2010 р . ) .

Я налаштував свій Ubuntu 10.04 Server LTS, що знаходиться у мережі Windows, для автентифікації входів, використовуючи активний каталог, після чого змонтуйте спільний доступ до Windows, щоб він був домашнім каталогом.

Ось що я зробив, починаючи з початкової установки Ubuntu.

  1. Завантажте та встановіть Ubuntu Server 10.04 LTS
  2. Отримуйте оновлення

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

  3. Встановити SSH-сервер ( sshd)

    # sudo apt-get install openssh-server

    Дехто заперечує, що вам слід «заблокувати sshd down», відключивши кореневі логіни. Я вважаю, що якщо ваш розумний досить зламати сеанс 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. Визначте ваше доменне ім'я Windows, ім'я DNS-сервера та IP-адресу для активного сервера каталогів (для samba). Для зручності я встановив змінні середовища для домену Windows та DNS-сервера. Для мене це було (моя IP-адреса AD була 192.168.20.11):

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

      Якщо ви хочете з’ясувати, що таке ваш домен і DNS-сервер (я був підрядником і не знав мережі), ознайомтеся з цією корисною посиланням .

    2. Нам потрібно охрестити поле Linux у новій мережі, це робиться шляхом редагування файлу хоста (замінити DNS на FQDN вікна DNS):
      # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts

    3. Ми також повинні сказати майбутнім встановленим службам, де вони можуть знайти там лідера: деякі мережі матимуть служби пошуку назв netbios, але про всяк випадок додайте явний запис у свій /etc/hostsфайл, у моїй конфігурації я додав запис на третьому (3) рядок:
      # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts

    4. Процеси аутентифікації та обміну файлами для вікон Windows та Linux повинні мати погодження своїх годин. Зробіть це за допомогою сервісу NTP, і на серверній версії Ubuntu служба NTP встановлюється та налаштовується з одним (1) сервером NTP. Додайте своє перед Ubuntu (або замініть його повністю). У мережі, до якої я приєднувався, був також сервер DNS, який обслуговував послугу NTP.
      # sudo sed -ri "s/^(server[ \t]+)(.+)/\1$WINDNS\n\1\2/" /etc/ntp.conf
      Перезапустіть демон NTP:
      # sudo /etc/init.d/ntp restart

  6. Конфігурація Kerberos
    Інструкції, які випливають тут, не слід сприймати буквально: значення для MYDOMAIN.LOCALта srv1.mydomain.localпотрібно замінити тим, що підходить для вашої мережі під час редагування файлів, але зауважте, що там, де використовується UPPERCASE, потрібні 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. Приємним випробуванням на даний момент є перевірити, чи ваш контролер AD видасть вам квиток на kerberos. Це не обов'язково, але це може змусити когось із вас запаморочити:
        # kinit <some_windows_domain_user>
        Тоді, щоб побачити квиток:
        # klist
        Ви побачите інформацію про кеш квитків та терміни дії та поновлення. Як тільки хитрість зменшиться, ви також можете випустити / знищити квиток:
        # kdestroy

  7. Налаштування самби.
    Згідно з наступним: Бувають випадки, коли не можна використовувати CIFS або краще вибрати іншу мережеву файлову систему. Якщо для додаткової безпеки потрібна підтримка автентифікації kerberos (krb5 / SPNEGO), тоді smbclient або smbfs Samba слід використовувати замість cifs
    Alas, cifsпідтримка в ядрі для ubuntu 10.04 (на основі версії ядра 2.6.32.9) знаходиться у версії 1.61, і згідно з документацією на ядро, експериментальна реалізація kerberos існує з версії 1.54.
    Отже, ти там. Я не маю уявлення, чи cifsне спрацювало б, тому я надаю вам конфігурацію samba:

    1. Замініть /etc/samba/smb.conf(пам’ятайте, я працював із чистого дистрибутива Ubuntu, тому я не хвилювався, що щось зламає):
      [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 потрібно змінити. Під час встановлення Ubuntu сервер імен часто вказуватиме на ваш шлюз: більшість маршрутизаторів надаватимуть послугу DNS. Найкраща практика адміністрування сервера Windows - ADC також повинен працювати з DNS. У моєму випадку мій /etc/resolve.confвиглядає наступним чином : є Google DNS, досить надійне резервне копіювання в разі , якщо вікна один йде вниз.
    nameserver 192.168.20.11
    nameserver 8.8.8.8
    8.8.8.8

У цей момент я міг увійти (можливо, після перезавантаження), домашні каталоги не існували, але я міг увійти.

  1. CIFS Налаштування на вхід
    Цей наступний крок став для мене вишнею; Я не хотів, щоб відповідальність за резервне копіювання робочих каталогів усіх, і ящик Ubuntu, який повинен працювати, був підозрюваним щодо надійності. Виконуючи такі дії, користувачі могли авторизуватися та переглядати свій каталог користувачів Windows автоматично .

    1. Завантажте pam_mountмодуль:
      # sudo apt-get install libpam-mount
      Я хотів, щоб точка монтажу була в традиційному /home/<user>місці: ця частина налаштована /etc/samba/smb.confфайлом ( template homedir = /home/%U). Але мені це було потрібно для того, щоб проглянути деталь і вказати на власну директорію Windows. Це відбувається шляхом редагування /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>

      Через мій точки монтажу Google, я повинен був також додати цей рядок:

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

      І щоб створені каталоги користувачів (для точки монтажу) автоматично знаходили рядок і робили його таким:

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

      remove="false"Біт дуже важливий: якщо він встановлений істинно, pam_mount.soнамагається видалити каталог точки , які він не може робити , якщо користувач увійшов в систему кілька разів монтувати. У цьому випадку у вас є багато бродячих кріплень у вашій системі.

      pam_mount.soяк і раніше не так, як обіцяли. У теперішньому вигляді версії продовжують накопичуватися, а домашні каталоги не створюються. Десь між тут і попереднім випуском версії 10.04 Beta 2, він працював. Я не можу цього відтворити.
      Тим часом для створення каталогу, на який я покладаюсь 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 обов'язково. Атаки грубої сили / словника іноді досягають успіху. Якщо root порушений, попрощайтеся з усім, чому ви довіряли машині.
JR Lawhorne

1
ubuntu не активує кореневий рахунок, хоча ... все sudod, чи я щось пропускаю?
Джеймі

'все є sudo' - І це краще ... в який спосіб? (Якщо будь-який обліковий запис користувача, який має право на sudo, є компрометованим, це в основному те саме. І в принципі однаково просто [чи ні] - брутефорс-корінь або акаунти користувачів. Найкраще - налаштувати лише паб-ключ із входом та відключити всі паролі- на основі логінів.)
Курт Пфайфл

Я розумію це, але врахуйте: "Найкраще налаштовувати лише вхід в систему" , - це повністю переможе ціль цієї публікації.
Джеймі

1
Ви також можете скористатись sudoed або root-акаунтом та змінити ім’я кореневого користувача, щоб це не було root linuxers.org/article/fun-linux-changing-root-user-name-linux
PsychoData
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.