Active Directory에 대해 Linux 계정을 인증하고 로그인시 Windows 공유를 마운트하는 방법은 무엇입니까?


18

우분투 10.04 서버를 사용하고 있습니다.


이것은 질문에 대한 답변으로 게시되어야합니다. 질문이되도록 수정하고 위에 게시 한 내용을 답변으로 옮기십시오. 자주 묻는 질문 (FAQ) : "자신의 질문에 답하고 대답하는 것도 괜찮습니다. 그러나 Jeopardy 인 것처럼 질문하십시오 : 질문 형태로 표현하십시오."
추후 공지가있을 때까지 일시 중지되었습니다.

답변:


27

[편집] 이후 Ubuntu 10.04 Server 정식 버전 (2010 년 5 월 21 일)을 테스트했습니다 .

나는 나의 구성한 우분투 10.04 서버 LTS를 다음 윈도우가 홈 디렉토리 역할을 공유 마운트, Active Directory를 사용하여 인증 로그인에 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를 잠그십시오"라고 주장합니다. 루트 암호를 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 서버 이름 및 활성 디렉토리 서버 (Samba의 경우)의 IP 주소를 결정하십시오. 편의상 Windows 도메인 및 DNS 서버에 대한 환경 변수를 설정했습니다. 나를 위해 (내 AD IP 주소는 192.168.20.11이었습니다) :

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

      도메인 및 DNS 서버가 무엇인지 파악하려면 (계약자였으며 네트워크를 몰랐 음)이 유용한 참조를 확인하십시오 .

    2. 우리는 새로운 네트워크에서 리눅스 박스를 세례 화해야합니다. 이것은 호스트 파일을 편집하여 수행됩니다 (DNS의 Windows DNS의 FQDN으로 DNS를 대체하십시오).
      # sudo sed -ri "s/^(127\.0\.[01]\.1[ \t]).*/\1$(hostname).$WINDOMAIN localhost $(hostname)/" /etc/hosts

    3. 또한 앞으로 나올 설치 서비스에 리더가있을 수있는 곳을 알려줘야합니다. 일부 네트워크에는 netbios 이름 조회 서비스가 있지만, 경우에 따라 /etc/hosts파일에 명시적인 항목을 추가합니다. 내 구성에서 세 번째 항목을 추가했습니다 선:
      # sudo sed -ri "3 i $WINDNS_IP $WINDNS" /etc/hosts

    4. Windows 및 Linux 박스의 인증 및 파일 공유 프로세스는 시계의 동의가 필요합니다. NTP 서비스를 사용하여이 작업을 수행하면 서버 버전의 Ubuntu에서 NTP 서비스가 하나의 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. Kerberos 구성.
    값 : 여기에 따라 지침은 문자 그대로 수없는 MYDOMAIN.LOCALsrv1.mydomain.local사용자가 파일을 편집 할 때 네트워크에 적합한 무엇으로 대체 할 필요가 있지만, 대문자 사용 대문자가 필요하다는 메모를 할 . Kerberos를 사용
    하는 동안 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) 인증 지원이 필요한 경우 cifs
    Alas 대신 Samba의 smbclient 또는 smbfs를 사용해야합니다cifs (커널 버전 2.6.32.9 기반의 우분투 10.04에 대한 커널 지원은 버전 1.61). 커널 문서에 따르면, 실험적인 kerberos 구현은 버전 1.54부터있었습니다.
    그래서 당신은 있습니다. cifs작동 하는지 잘 모르겠으므로 samba 구성을 제공합니다.

    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) 때문입니다. 아마도 누군가가 이것에 대해 무게를 can
    # sudo net ads join -U any_domain_user_account
    수 있습니다 ... 오류가 발생할 수 DNS update failed!있지만 도메인에 가입하게 될 것입니다. 서버를 찾을 수 없다는 오류가 발생하면 DNS 레코드를 수정해야합니다. 우분투 설치 중에 네임 서버는 종종 게이트웨이를 가리키며 대부분의 라우터는 DNS 서비스를 수행합니다. Windows 서버 관리를위한 모범 사례는 ADC도 DNS를 실행해야한다는 것입니다. 내 경우에는 내 /etc/resolve.conf다음과 같다 :
    nameserver 192.168.20.11
    nameserver 8.8.8.8
    (가) 8.8.8.8구글 DNS, 하나가 다운 창문 경우 상당히 안정적인 백업입니다.

이 시점에서 (재부팅 후) 로그인 할 수 있었고 홈 디렉토리는 없었지만 로그인 할 수있었습니다.

  1. 로그인시 CIFS 마운트
    다음 단계는 나를위한 체리였습니다. 나는 모든 사람의 작업 디렉토리를 백업하는 책임을 원하지 않았으며 우분투가 실행되는 상자는 신뢰성 측면에서 의심 스러웠습니다. 다음 사용자는 로그인하여 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>

      구피 마운트 지점으로 인해이 줄도 추가해야했습니다.

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

      그리고 마운트 디렉토리에 대한 사용자 디렉토리가 자동으로 행을 찾아서 작성하도록 다음을 수행하십시오.

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

      remove="false"비트는 매우 중요하다 true로의 설정이 경우 pam_mount.so디렉토리는 사용자가 여러 번 로그인 한 경우에 할 수없는 마운트 포인트를 삭제하려고합니다. 이 경우 결국 시스템에 많은 마운트 마운트가 있습니다.

      pam_mount.so여전히 약속대로 배달되지 않습니다. 현재 형태에서는 마운트가 계속 쌓이고 홈 디렉토리가 생성되지 않습니다. 여기와 10.04 서버의 이전 베타 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 로그인을 해제해야합니다. 무차별 대항 / 사전 공격은 때때로 성공합니다. 루트가 손상되면 시스템에서 신뢰할 수있는 모든 것에 작별 인사를하십시오.
JR Lawhorne

1
우분투는 루트 계정을 활성화하지 않지만 ... 모든 것이 sudod입니까, 아니면 뭔가 빠졌습니까?
Jamie

'모든 것이 sudo' -그리고 이것이 더 낫습니다 ... 어떤 방법으로? (sudo 권한이있는 사용자 계정이 손상된 경우 기본적으로 동일합니다. 루트 나 사용자 계정을 무차별하게하는 것은 기본적으로 동일하거나 단순하지 않습니다. 가장 좋은 방법은 pub-key 전용 로그인을 설정하고 모든 암호를 비활성화하는 것입니다. 기반 로그인.)
Kurt Pfeifle

나는 그것을 얻지 만 "최고의 것은 pub-key only login을 설정 하는 것 " 이라고 생각 합니다.이 게시물의 목적을 완전히 상실합니다.
Jamie

1
또한 sudoed 또는 root 계정을 사용하고 루트 사용자 이름을 변경하여 루트 사용자 이름이 아닌 루트 사용자가되도록 루트 linuxers.org/article/fun-linux-changing-root-user-name-linux
PsychoData
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.