웹사이트 검색

Ubuntu 14.04 서버에서 OpenLDAP 및 phpLDAPadmin을 설치 및 구성하는 방법


소개

LDAP(Lightweight Directory Access Protocol)는 중앙 집중식 계층 파일 및 디렉토리 구조에서 관련 정보를 관리하고 액세스하도록 설계된 프로토콜입니다.

어떤 면에서는 관계형 데이터베이스와 유사하게 작동하지만 모든 경우에 해당되는 것은 아닙니다. 계층 구조는 데이터가 관련되는 방식의 주요 차이점입니다. 모든 종류의 정보를 저장하는 데 사용할 수 있으며 중앙 집중식 인증 시스템의 한 구성 요소로 자주 사용됩니다.

이 가이드에서는 Ubuntu 14.04 서버에 OpenLDAP 서버를 설치하고 구성하는 방법에 대해 설명합니다. 그런 다음 쉬운 웹 인터페이스를 제공하기 위해 phpLDAPadmin 인터페이스를 설치하고 보호합니다.

LDAP 및 도우미 유틸리티 설치

시작하기 전에 필요한 소프트웨어를 설치해야 합니다. 운 좋게도 패키지는 Ubuntu의 기본 리포지토리에서 모두 사용할 수 있습니다.

이 세션에서 apt를 처음 사용하므로 로컬 패키지 인덱스를 새로 고칩니다. 그런 다음 원하는 패키지를 설치할 수 있습니다.

sudo apt-get update
sudo apt-get install slapd ldap-utils

설치하는 동안 LDAP에 대한 관리자 암호를 선택하고 확인하라는 메시지가 표시됩니다. 잠시 후에 변경할 수 있는 기회가 있기 때문에 여기에 무엇이든 넣을 수 있습니다.

더 나은 설정을 선택하도록 slapd 재구성

패키지가 방금 설치되었지만 우분투가 설치하는 기본값을 다시 구성할 것입니다.

그 이유는 패키지가 많은 중요한 구성 질문을 할 수 있는 기능이 있지만 설치 프로세스에서 건너뛰기 때문입니다. 패키지를 재구성하도록 시스템에 지시하면 모든 프롬프트에 액세스할 수 있습니다.

sudo dpkg-reconfigure slapd

이 과정을 진행하면서 몇 가지 새로운 질문을 받게 됩니다. 이제 다음을 살펴보겠습니다.

  • OpenLDAP 서버 구성을 생략하시겠습니까? 아니요
  • DNS 도메인 이름?
    • 이 옵션은 디렉토리 경로의 기본 구조를 결정합니다. 이것이 어떻게 구현되는지 정확히 이해하려면 메시지를 읽으십시오.
    • 이것은 실제로 다소 개방적인 옵션입니다. 실제 도메인을 소유하지 않은 경우에도 원하는 "도메인 이름\ 값을 선택할 수 있습니다. 그러나 서버에 대한 도메인 이름이 있는 경우 이를 사용하는 것이 좋습니다.
    • 이 가이드에서는 구성을 위해 test.com을 선택하겠습니다.

    • 다시 말하지만 이것은 전적으로 귀하의 선호도에 달려 있습니다.
    • 이 가이드에서는 example을 조직 이름으로 사용합니다.

    • 설치 섹션에서 언급했듯이 관리자 암호를 선택할 수 있는 실제 기회입니다. 여기에서 선택한 항목은 이전에 사용한 비밀번호를 덮어씁니다.

    이 시점에서 LDAP는 상당히 합리적인 방식으로 구성되어야 합니다.

    웹 인터페이스로 LDAP를 관리하기 위해 phpLDAPadmin 설치

    명령줄을 통해 LDAP를 관리하는 것이 매우 가능하지만 대부분의 사용자는 웹 인터페이스를 사용하는 것이 더 쉽다는 것을 알게 될 것입니다. 이 기능을 제공하는 phpLDAPadmin을 설치하여 LDAP 도구 학습의 마찰을 제거할 것입니다.

    Ubuntu 리포지토리에는 phpLDAPadmin 패키지가 포함되어 있습니다. 다음을 입력하여 설치할 수 있습니다.

    sudo apt-get install phpldapadmin
    

    이것은 관리 인터페이스를 설치하고 필요한 Apache 가상 호스트 파일을 활성화하고 Apache를 다시 로드해야 합니다.

    이제 웹 서버가 애플리케이션을 제공하도록 구성되었지만 몇 가지 추가 변경 사항을 적용할 것입니다. LDAP에 대해 구성한 도메인 스키마를 사용하도록 phpLDAPadmin을 구성해야 하며 구성을 약간 보호하기 위해 일부 조정도 수행할 것입니다.

    phpLDAPadmin 구성

    이제 패키지가 설치되었으므로 OpenLDAP 구성 단계에서 생성된 LDAP 디렉터리 구조와 연결할 수 있도록 몇 가지를 구성해야 합니다.

    텍스트 편집기에서 루트 권한으로 기본 구성 파일을 열어 시작합니다.

    sudo nano /etc/phpldapadmin/config.php
    

    이 파일에서 LDAP 서버에 대해 설정한 구성 세부 정보를 추가해야 합니다. 호스트 매개변수를 찾아 서버의 도메인 이름 또는 공용 IP 주소로 설정하여 시작하십시오. 이 매개변수는 웹 인터페이스 액세스 계획 방식을 반영해야 합니다.

    <예비>

    다음으로 LDAP 서버에 대해 선택한 도메인 이름을 구성해야 합니다. 이 예에서는 test.com을 선택했음을 기억하십시오. 각 도메인 구성 요소(점이 아닌 모든 것)를 dc 사양의 값으로 대체하여 이를 LDAP 구문으로 변환해야 합니다.

    이 모든 것은 test.com을 작성하는 대신 dc=test,dc=com과 같은 것을 작성할 것임을 의미합니다. 서버 기반 매개변수를 설정하는 매개변수를 찾고 방금 논의한 형식을 사용하여 결정한 도메인을 참조해야 합니다.

    <예비>

    로그인 bind_id 매개변수에서 이와 동일한 것을 조정해야 합니다. cn 매개변수는 이미 "admin\으로 설정되어 있습니다. 맞습니다. 위에서 한 것처럼 dc 부분을 다시 조정하면 됩니다.

    <예비>

    마지막으로 조정해야 할 것은 경고 메시지의 가시성을 제어하는 설정입니다. 기본적으로 phpLDAPadmin은 기능에 영향을 미치지 않는 템플릿 파일에 대해 웹 인터페이스에 꽤 성가신 경고 메시지를 표시합니다.

    hide_template_warning 매개변수를 검색하고 이를 포함하는 행의 주석 처리를 제거한 다음 "true\로 설정하여 이를 숨길 수 있습니다.

    <예비>

    이것이 우리가 조정해야 할 마지막 것입니다. 완료되면 파일을 저장하고 닫을 수 있습니다.

    SSL 인증서 생성

    외부 당사자가 통신을 가로챌 수 없도록 SSL을 사용하여 LDAP 서버에 대한 연결을 보호하려고 합니다.

    관리 인터페이스는 로컬 네트워크의 LDAP 서버 자체와 통신하므로 해당 연결에 SSL을 사용할 필요가 없습니다. 연결할 때 브라우저에 대한 외부 연결을 보호하기만 하면 됩니다.

    이렇게 하려면 서버에서 사용할 수 있는 자체 서명된 SSL 인증서를 설정하기만 하면 됩니다. 이렇게 하면 서버의 ID를 확인하는 데 도움이 되지 않지만 메시지를 암호화할 수 있습니다.

    OpenSSL 패키지는 기본적으로 시스템에 설치되어야 합니다. 먼저 인증서와 키를 보관할 디렉터리를 만들어야 합니다.

    sudo mkdir /etc/apache2/ssl
    

    다음으로 다음을 입력하여 한 번의 이동으로 키와 인증서를 만들 수 있습니다.

    sudo openssl req -x509 -nodes -days 365 -newkey rsa:2048 -keyout /etc/apache2/ssl/apache.key -out /etc/apache2/ssl/apache.crt
    

    유틸리티가 인증서의 필드를 올바르게 작성하려면 몇 가지 질문에 답해야 합니다. 정말로 중요한 유일한 것은 일반 이름(예: 서버 FQDN 또는 귀하의 이름)이라고 표시된 프롬프트입니다. 서버의 도메인 이름 또는 IP 주소를 입력합니다.

    완료되면 인증서와 키가 /etc/apache2/ssl 디렉토리에 기록됩니다.

    비밀번호 인증 파일 생성

    또한 phpLDAPadmin 위치를 비밀번호로 보호하고 싶습니다. phpLDAPadmin에 암호 인증이 있더라도 추가 수준의 보호를 제공합니다.

    필요한 유틸리티는 Apache 유틸리티 패키지에 포함되어 있습니다. 다음을 입력하여 가져옵니다.

    sudo apt-get install apache2-utils
    

    이제 유틸리티를 사용할 수 있으므로 선택한 사용자 이름과 관련 해시 암호가 포함된 암호 파일을 만들 수 있습니다.

    우리는 이것을 /etc/apache2 디렉토리에 보관할 것입니다. 파일을 만들고 다음을 입력하여 사용할 사용자 이름을 지정합니다.

    <예비>

    이제 보안 업그레이드를 활용하기 위해 Apache를 수정할 준비가 되었습니다.

    보안 아파치

    가장 먼저 해야 할 일은 Apache에서 SSL 모듈을 활성화하는 것입니다. 다음을 입력하면 됩니다.

    sudo a2enmod ssl
    

    이렇게 하면 모듈이 활성화되어 사용할 수 있습니다. 그래도 이를 활용하려면 Apache를 구성해야 합니다.

    현재 Apache는 암호화되지 않은 일반적인 HTTP 연결을 위해 000-default.conf라는 파일을 읽고 있습니다. 연결이 암호화되도록 phpLDAPadmin 인터페이스에 대한 요청을 HTTPS 인터페이스로 리디렉션하도록 지시해야 합니다.

    SSL 인증서를 사용하도록 트래픽을 리디렉션할 때 사용자 인증을 위한 암호 파일도 구현합니다. 수정하는 동안 표적 공격을 최소화하기 위해 phpLDAPadmin 인터페이스 자체의 위치도 변경합니다.

    phpLDAPadmin Apache 구성 수정

    가장 먼저 할 일은 phpLDAPadmin 파일을 제공하도록 설정된 별칭을 수정하는 것입니다.

    텍스트 편집기에서 루트 권한으로 파일을 엽니다.

    sudo nano /etc/phpldapadmin/apache.conf
    

    여기에서 인터페이스에 액세스하려는 URL 위치를 결정해야 합니다. 기본값은 /phpldapadmin이지만 봇과 악의적인 당사자의 임의 로그인 시도를 줄이기 위해 이를 변경하려고 합니다.

    이 가이드에서는 /superldap 위치를 사용하지만 고유한 값을 선택해야 합니다.

    Alias를 지정하는 줄을 수정해야 합니다. 이것은 IfModule mod_alias.c 블록에 있어야 합니다. 완료되면 다음과 같이 표시됩니다.

    <예비>

    완료되면 파일을 안전하게 닫고 닫습니다.

    HTTP 가상 호스트 구성

    다음으로 현재 가상 호스트 파일을 수정해야 합니다. 편집기에서 루트 권한으로 엽니다.

    sudo nano /etc/apache2/sites-enabled/000-default.conf
    

    내부에는 다음과 같은 단순한 구성 파일이 표시됩니다.

    <예비>

    도메인 이름 또는 IP 주소에 대한 정보를 추가하여 서버 이름을 정의하고 모든 HTTP 요청이 HTTPS 인터페이스를 가리키도록 리디렉션을 설정하려고 합니다. 이는 마지막 섹션에서 구성한 별칭과 일치합니다.

    논의한 변경 사항은 다음과 같습니다. 자신의 값으로 빨간색으로 표시된 항목을 수정합니다.

    <예비>

    완료되면 파일을 저장하고 닫습니다.

    HTTPS 가상 호스트 파일 구성

    Apache에는 기본 SSL 가상 호스트 파일이 포함되어 있습니다. 그러나 기본적으로 활성화되어 있지 않습니다.

    다음을 입력하여 활성화할 수 있습니다.

    sudo a2ensite default-ssl.conf
    

    그러면 sites-available 디렉토리의 파일이 sites-enabled 디렉토리로 연결됩니다. 이제 다음을 입력하여 이 파일을 편집할 수 있습니다.

    sudo nano /etc/apache2/sites-enabled/default-ssl.conf
    

    이 파일은 마지막 파일보다 조금 더 복잡하므로 변경해야 할 사항에 대해서만 설명합니다. 아래의 모든 변경 사항은 파일의 가상 호스트 블록 내에 있어야 합니다.

    먼저 ServerName 값을 서버의 도메인 이름 또는 IP 주소로 다시 설정하고 ServerAdmin 지시문도 변경합니다.

    <예비>

    다음으로, 우리가 만든 키와 인증서를 가리키도록 SSL 인증서 지시문을 설정해야 합니다. 지시문은 파일에 이미 존재해야 하므로 지시문이 가리키는 파일을 수정하기만 하면 됩니다.

    <예비>

    마지막으로 해야 할 일은 전체 phpLDAPadmin 설치에 대한 암호 보호를 구현할 위치 블록을 설정하는 것입니다.

    phpLDAPadmin을 제공하는 위치를 참조하고 생성한 파일을 사용하여 인증을 설정하여 이를 수행합니다. 이 콘텐츠에 액세스하려는 사람은 누구나 유효한 사용자로 인증해야 합니다.

    <예비>

    완료되면 파일을 저장하고 닫습니다.

    변경 사항을 모두 구현하려면 Apache를 다시 시작하십시오.

    sudo service apache2 restart
    

    이제 실제 인터페이스로 이동할 수 있습니다.

    phpLDAPadmin 웹 인터페이스에 로그인합니다.

    phpLDAPadmin 소프트웨어에 필요한 구성을 변경했습니다. 이제 사용을 시작할 수 있습니다.

    서버의 도메인 이름 또는 공용 IP 주소와 구성한 별칭을 방문하여 웹 인터페이스에 액세스할 수 있습니다. 우리의 경우 이것은 /superldap였습니다.

    <예비>

    처음 방문하면 사이트의 SSL 인증서에 대한 경고가 표시될 수 있습니다.

    경고는 브라우저가 인증서에 서명한 인증 기관을 인식하지 못한다는 것을 알려주기 위한 것입니다. 우리가 자체 인증서에 서명했으므로 이는 예상되는 문제이며 문제가 아닙니다.

    "계속 진행\ 버튼 또는 브라우저에서 제공하는 유사한 옵션을 클릭합니다.

    다음으로 Apache에 대해 구성한 암호 프롬프트가 표시됩니다.

    htpasswd 명령으로 생성한 계정 자격 증명을 입력합니다. 기본 phpLDAPadmin 랜딩 페이지가 표시됩니다.

    페이지 왼쪽에 표시되는 "로그인\ 링크를 클릭하십시오.

    로그인 프롬프트로 이동합니다. 로그인 "DN\은 사용할 사용자 이름과 같습니다. 여기에는 "cn\ 아래의 계정 이름과 위에서 설명한 것처럼 "dc\ 섹션으로 구분된 서버에 대해 선택한 도메인 이름이 포함됩니다.

    phpLDAPadmin을 올바르게 구성한 경우 관리자 계정에 대한 올바른 값으로 미리 채워져야 합니다. 우리의 경우에는 다음과 같습니다.

    cn=admin,dc=test,dc=com
    

    비밀번호는 LDAP 구성 중에 구성한 관리자 비밀번호를 입력하십시오.

    기본 인터페이스로 이동합니다.

    조직 단위, 그룹 및 사용자 추가

    이 시점에서 phpLDAPadmin 인터페이스에 로그인됩니다. 사용자, 조직 단위, 그룹 및 관계를 추가할 수 있습니다.

    LDAP는 데이터 및 디렉토리 계층 구조를 구성하는 방법에 있어 유연합니다. 기본적으로 원하는 종류의 구조를 만들고 상호 작용 방식에 대한 규칙을 만들 수 있습니다.

    이 프로세스는 Ubuntu 12.04와 Ubuntu 14.04에서 동일하므로 Ubuntu 12.04에 대한 LDAP 설치 문서의 "조직 단위, 그룹 및 사용자 추가\ 섹션에 설명된 단계를 따를 수 있습니다.

    이 설치에서 단계는 완전히 동일하므로 따라하면서 인터페이스 작업을 연습하고 장치를 구성하는 방법에 대해 배우십시오.

    결론

    이제 Ubuntu 14.04 서버에 OpenLDAP가 설치 및 구성되어 있어야 합니다. 또한 phpLDAPadmin 프로그램을 통해 구조를 관리하기 위한 웹 인터페이스를 설치하고 구성했습니다. 전체 응용 프로그램을 보호하는 SSL 및 암호를 강제 적용하여 응용 프로그램에 대한 몇 가지 기본 보안을 구성했습니다.

    우리가 설정한 시스템은 매우 유연하며 필요에 따라 조직 스키마를 설계하고 리소스 그룹을 관리할 수 있어야 합니다. 다음 가이드에서는 시스템 인증을 위해 이 LDAP 서버를 사용하도록 네트워크로 연결된 컴퓨터를 구성하는 방법에 대해 설명합니다.

    저스틴 엘링우드