Nginx 는 Linux 의 PAM 메커니즘 을 이용 하여 각종 로그 인 을 통합 합 니 다.
5047 단어 Linux유 틸 리 티 가이드
회사 내부 에는 다양한 시스템 이 있 습 니 다. 모든 시스템 은 사용자 가 비밀 번 호 를 로그 인해 야 합 니 다. 하나의 사용자 이름과 비밀번호 로 모든 시스템 에 접근 할 수 있 습 니까?
나의 방안
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 에 존재 합 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
바이너리 파일cat 또는tail, 터미널 디코딩 시 처리 방법cat으로 바이너리 파일을 보려고 할 때 코드가 엉망이 되어 식은땀이 났다. 웹에서 스크롤된 정보의 처리 방법과alias의 설정을 요약합니다. reset 명령을 사용하여 터미널을 재설정합니다.이렇게 하면 고치지 못하...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.