본문 바로가기
서버구축 (WEB,DB)

Nginx와 LDAP를 연동하여 사용자 인증을 구현하는 방법

by 날으는물고기 2023. 7. 28.

Nginx와 LDAP를 연동하여 사용자 인증을 구현하는 방법

Nginx와 LDAP를 연동하여 사용자 인증을 구현하는 방법을 설명드리겠습니다. LDAP( Lightweight Directory Access Protocol)은 디렉터리 서비스에 접근하기 위한 프로토콜로, 사용자 정보와 인증 정보를 저장하고 검색하는 데 사용됩니다. 이를 통해 Nginx 웹 서버를 보호하고 액세스를 제어할 수 있습니다.

 


이제 순서대로 설치와 설정을 진행해보겠습니다.

 

1. 필요한 패키지 설치
먼저 Nginx와 LDAP 모듈이 필요합니다. Nginx를 설치하고 컴파일하기 전에 다음 패키지를 설치합니다:

  • Nginx
  • Nginx 개발 헤더 (Nginx를 컴파일할 때 필요)
  • LDAP 라이브러리 및 개발 헤더


2. Nginx 컴파일
LDAP 모듈을 포함하여 Nginx를 컴파일합니다. 다음은 컴파일 단계입니다.

# Nginx 소스 코드 다운로드
wget http://nginx.org/download/nginx-x.x.x.tar.gz
tar -zxvf nginx-x.x.x.tar.gz
cd nginx-x.x.x

# LDAP 모듈 다운로드 (예: ldap2_module)
# ldap2_module을 사용하는 것을 추천합니다. 필요한 모듈에 따라 변경할 수 있습니다.
wget https://github.com/kvspb/nginx-auth-ldap/archive/master.tar.gz
tar -zxvf master.tar.gz

# Nginx 컴파일 (LDAP 모듈 추가)
./configure --add-module=path/to/nginx-auth-ldap-master
make
sudo make install

 

3. Nginx 구성
이제 Nginx를 설치했으므로 구성 파일을 작성합니다. 아래는 예시 Nginx 구성 파일 (/etc/nginx/nginx.conf) 입니다.

user www-data;
worker_processes auto;
pid /run/nginx.pid;

events {
    worker_connections 1024;
}

http {
    # 기존 설정 내용...

    ldap_server my_ldap_server {
        url ldap://ldap.example.com/ou=users,dc=example,dc=com?uid?sub?(objectClass=posixAccount);
        binddn "cn=nginx,ou=services,dc=example,dc=com";
        binddn_passwd "password";
        group_attribute uniquemember;
        require valid_user;
    }

    server {
        listen 80;
        server_name mydomain.com;

        location / {
            auth_ldap "Forbidden";
            auth_ldap_servers my_ldap_server;
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        }
    }

    # 기존 설정 내용...
}

위 구성에서 주의해야 할 점:

  • ldap_server: LDAP 서버 정보를 지정하는 블록입니다. url은 LDAP 서버 주소를 설정하고, binddn과 binddn_passwd는 Nginx가 LDAP 서버에 연결할 때 사용할 사용자 계정 정보를 지정합니다.
  • auth_ldap: 인증에 실패했을 때 반환할 메시지를 지정합니다.
  • auth_ldap_servers: 사용할 LDAP 서버 블록을 선택합니다.


4. Nginx 재시작
Nginx 구성 파일을 수정한 후, 변경 사항을 적용하기 위해 Nginx를 재시작합니다.

sudo nginx -t # 구성 파일 오류 확인
sudo service nginx restart # Nginx 재시작

 

이제 Nginx와 LDAP가 연동되었습니다. 웹 서버에 접속할 때 LDAP 인증이 필요하며, LDAP에 있는 사용자 계정으로 로그인해야 합니다.

참고: 이 예시에서는 LDAP 서버 주소, 사용자 계정 정보 등 실제 정보를 제공하지 않았습니다. 실제 서버에 적용할 때는 올바른 정보로 변경해야 합니다. 또한 auth_ldap 메시지 등을 필요에 따라 수정하거나 개선할 수 있습니다.

728x90

댓글