Nginx 는 Linux 의 PAM 메커니즘 을 이용 하여 각종 로그 인 을 통합 합 니 다.

수요
    회사 내부 에는 다양한 시스템 이 있 습 니 다. 모든 시스템 은 사용자 가 비밀 번 호 를 로그 인해 야 합 니 다. 하나의 사용자 이름과 비밀번호 로 모든 시스템 에 접근 할 수 있 습 니까?
  나의 방안
1. 모든 사용 자 는 회사 메 일과 메 일 비밀 번 호 를 사용 하여 시스템 에 로그 인 합 니 다. 사용자 가 이 직 한 후에 메 일 을 삭제 한 후에 사용자 가 각 시스템 에 다시 로그 인 할 수 없 도록 보장 합 니 다.
 2. Linux PAM 기반 메커니즘
 3. 모든 응용 은 Nginx 뒤에 있 고 Nginx 는 PAM 시스템 과 의 상호작용 을 책임 집 니 다.
 4. 각 시스템 의 응용 프로그램 은 사용자 인증 에 관심 이 없어 야 합 니 다. HTTP Header 를 통 해 현재 로그 인 한 사용 자 를 얻 을 수 있 습 니 다.
  구체 적 절차
1.  인증 응용 시스템 에 따라 인증 URL 요청 작성
    예 를 들 면http://xxxxx/login.jsp?user=xxxx&password=xxxx 
    인증 성공 반환 0, 실패 반환 - 1
2.  PAM 사용SCRIPT 에서 이 URL 인증 을 통합 합 니 다.
  메모: yum install pam 사용 하지 마 세 요.script
  1) PAM 다운로드 및 컴 파일SCRIPT 모듈
     다운로드 주소:https://github.com/jeroennijhof/pam_script
  2) 컴 파일 절차
     aclocal
      autoheader
      libtoolize
      automake -a
      autoconf
      ./configure
      make
     컴 파일 된 pamscript. so 를 lib 디 렉 터 리 로 복사 합 니 다. 저 는 / lib 64 / security / pam 입 니 다.script.so
   3) 문서 에 따라 스 크 립 트 작성
pam_script_acct  pam_script_auth pam_script_passwd pam_script_ses_close  pam_script_ses_open
pam_script_auth 인증 에 사용 되 며 인증 시스템 과 도 킹 합 니 다. 스 크 립 트 는 다음 과 같 습 니 다.
 
stamp=`/bin/date +'%Y%m%d%H%M%S %a'`
# get the script name (could be link)
script=`basename $0`
#
LOGFILE=/var/log/pam-script.log
echo $stamp $script $PAM_SERVICE $PAM_TYPE                                \
        user=$PAM_USER ruser=$PAM_RUSER rhost=$PAM_RHOST                \
        tty=$PAM_TTY                                                        \
        args=["$@"]                                                        \
        >> $LOGFILE
chmod 666 $LOGFILE > /dev/null 2>&1
   URL
URL="http://authUrl?user=$PAM_USER&password=$PAM_AUTHTOK";
RET=`curl $URL 2>/dev/null`

#echo "-----------------------"
#echo $RET
if [ "$RET" = "0" ]; then
  exit 1;
fi

# success
exit 0

 3. PAM 시스템 에 인증 추가
    /etc / pam. d 다음 neulion 인증 모듈 새로 만 들 기
    내용 은 다음 과 같다.
   
auth    required    pam_script.so  dir=/usr/bin/neulion  <<<

 4. test. sh 를 써 서 검증 하기
PAM_USER=neil.mao PAM_AUTHTOK=xxxxxxx /usr/bin/neulion/pam_script_auth
5. Nginx 의 PAM 모듈 다운로드
    http://web.iti.upv.es/~sto/nginx/
6. Nginx 다운로드 
      wget http://nginx.org/download/nginx-1.4.4.tar.gz
컴 파일 스 크 립 트 유사:
./configure--prefix=/etc/nginx --sbin-path=/usr/sbin/nginx--conf-path=/etc/nginx/nginx.conf --error-log-path=/var/log/nginx/error.log--http-log-path=/var/log/nginx/access.log --pid-path=/var/run/nginx.pid--lock-path=/var/run/nginx.lock --http-client-body-temp-path=/var/cache/nginx/client_temp--http-proxy-temp-path=/var/cache/nginx/proxy_temp--http-fastcgi-temp-path=/var/cache/nginx/fastcgi_temp--http-uwsgi-temp-path=/var/cache/nginx/uwsgi_temp--http-scgi-temp-path=/var/cache/nginx/scgi_temp --user=nginx --group=nginx--with-http_ssl_module --with-http_realip_module --with-http_addition_module--with-http_sub_module --with-http_dav_module --with-http_flv_module--with-http_mp4_module --with-http_gunzip_module --with-http_gzip_static_module--with-http_random_index_module --with-http_secure_link_module--with-http_stub_status_module --with-mail --with-mail_ssl_module--with-file-aio --with-ipv6 --with-cc-opt='-O2 -g -pipe -Wp,-D_FORTIFY_SOURCE=2-fexceptions -fstack-protector --param=ssp-buffer-size=4 -m64 -mtune=generic'--add-module=/root/ngx_http_auth_pam_module-1.3
7. 통합 테스트
   nginx 의 conf 가입
   location /vos {
            auth_pam      "Please specify loginId"; <<             auth pam service name "neulion"; < < < < 인증 모듈, 위 에 설 치 된 것 에 따라            auth_pam_set_pam_env  on;             proxy_pass   http://10.7.1.70:80;  <<<<<<<<<  백 엔 드 시스템            client_max_body_size 1000m;             proxy_set_header Host $host;             proxy_set_header X-Real-IP  $remote_addr;             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;             proxy_set_header Remote-User $remote_user;  <<<<<<<< 로그 인 한 사용자       }
  그리고 브 라 우 저 접근: 사용자 이름과 비밀 번 호 를 입력 하고 인증 이 통과 되면 응용 프로그램 에 접근 할 수 있 습 니 다.
 8.  진일보
    1. 어떻게 일부 사용자 의 방문 응용 을 제한 합 니까?
         pam 설정 을 추가 할 수 있 습 니 다.
         auth    required    pam_listfile.so item=user sense=allow file=/etc/security/api.allow onerr=fail
         이 목록 에 있 는 사용자 만 로그 인 할 수 있 습 니 다.
   
   2. 인 증 된 로 그 는 어디에서 볼 까요?
       /var / log / pam script. log 에서 볼 수 있 습 니 다.
   3. 주의사항
     1) pam script. so 가 컴 파일 되 었 는 지 확인
     2) / etc / pam. d / neulion 인증 모듈 의 작성 이 정확 한 지 확인 하 십시오. 이것 을 수정 하면 다시 시작 할 필요 가 없습니다. 즉시 유효 합 니 다.
     3)    nginx 설정 에 있 는   auth pam service name 은 / etc / pam. d 에 존재 합 니 다.
  
 

좋은 웹페이지 즐겨찾기