PAM이 등장한 이후로 싫습니다.
관리자 수준의 Debian Squeeze에서 PAM 디버깅을 켜려면 어떻게해야합니까?
찾을 수있는 모든 리소스를 확인했습니다. Google, 맨 페이지 등 내가 아직 시도하지 않은 유일한 것은 (단지 감히 내가 PAM을 싫어한다고 언급 했습니까?) PAM의 라이브러리 소스를 파고 있습니다.
나는 해결책을 찾기 위해 구글에 아무것도 시도하지 않았다. 내가 지금까지 찾은 것 :
http://www.bitbull.ch/wiki/index.php/Pam_debugging_funktion ( /etc/pam_debug
)와
http://nixdoc.net/man-pages/HP-UX/man4/pam.conf.4.html ( debug
PAM 항목에 대한 옵션 에서 /etc/pam.d/
).
아니, 작동하지 않습니다. PAM 출력 없음, 없음, 절대 침묵.
솔루션을 검색하는 동안 독일의 주유소 인 Pam 링크도 따라갔습니다. 글쎄요, 아마도 수십억 건의 적중에서 단서를 숨길 수도 있지만, 나를 발견하기 전에 내가 죽었을 것입니다.
나머지는 참고로
어떤 문제가 있었습니까?
데비안 스퀴즈로 업그레이드 한 후 뭔가 이상해졌습니다 (음, 어, 한 번, Etch 바로 위에 있었던 것이 었습니다. 따라서 아마도 데비안의 잘못이 아니며 오랫동안 오래 지속 된 설정입니다. PAM과 관련이 있다는 인상을 즉시 받았지만 실제로 무슨 일이 있었는지 몰랐습니다. 나는 완전히 어두워졌고 혼자 남겨졌으며 어렸을 때 힘이 없었습니다. 일부 ssh 로그인은 작동했지만 일부는 작동하지 않았습니다. 재미 있었어. 에 실마리도 ssh -v
없고 실마리도 /var/log/*
없습니다. “인증 성공”또는 “인증 실패”, 때로는 동일한 사용자가 동시에 한 세션에서 동시에 다른 세션에서 실패한 경우도 있습니다. 그리고 당신이 정말로 잡을 수있는 것은 없습니다.
다른 옵션의 기차를 파고 난 후에 알 수있었습니다. 이 nullok
와 nullok_secure
데비안 특별는. 뭔가 나사 /etc/securetty
와에 따라 tty
로그인이 거부되거나되지 않은 (다소 랜덤). 정말 좋은, 휴!
수정은 쉬웠고 이제는 모든 것이 다시 정상입니다.
그러나 이것은 미래에 그러한 혼란을 디버깅하는 방법에 대한 의문을 남겼습니다 . PAM이 처음으로 견과류를 운전하는 것은 아닙니다. 최종 솔루션을보고 싶습니다. “아마겟돈”에서와 같이 최종이 아니라 “해결됨”에서와 같은 최종. 감사.
아, BTW, 이것은 다시 PAM이 등장한 이후로 미워하는 것이 좋다는 내 믿음을 강화 시켰습니다. 내가한다고 언급 했습니까?
답변
시도해 볼 몇 가지 사항 :
syslog에서 디버그 메시지 로깅을 활성화 했습니까?
cp /etc/syslog.conf /etc/syslog.conf.original
vi /etc/syslog.conf
다음 줄을 추가하십시오.
*.debug /var/log/debug.log
로 종료하십시오 :wq!
.
touch /var/log/debug.log
service syslog restart
다음과 같이 모든 모듈에 대해 디버깅을 활성화 할 수 있습니다.
touch /etc/pam_debug
또는 관련 행 /etc/pam.d/system-auth
또는 다른 /etc/pam.d/*
파일 의 끝에 “디버그”를 추가하여 원하는 모듈에 대해서만 디버깅을 활성화 할 수 있습니다.
login auth required pam_unix.so debug
그런 다음에 디버깅 메시지가 나타나기 시작해야합니다 /var/log/debug.log
. 이것이 당신을 도울 수 있기를 바랍니다!
답변
적어도 CentOS 6.4에서는 /etc/pam_debug
사용되지 않습니다.
pam_warn.so 모듈이 설치되어 있으면 다음과 같이 로깅 출력을 얻을 수 있습니다.
auth required pam_warn.so
success required pam_warn.so
등.이 모듈은 언제라도 인증 프로세스를 방해하지 않지만 syslog를 통해 의미있는 내용을 기록합니다.
최신 정보
코드를 조사하고 일부 컴파일을 수행 한 후 (1) 소스를 통해이 디버그 모드를 활성화 할 수 있으며 (2) RHEL 패치로 인해 해당 기능을 거의 사용할 수 없게합니다 (적어도 pam_unix 모듈). 어쨌든 코드를 패치하는 것이 좋습니다.
이것이 RHEL에서 작동하게하려면 Linux-PAM … src.rpm (1.1 버전의 경우)을 가져 와서 spec 파일을 다음과 같이 변경하십시오.
-
로 시작하는 줄 찾기
% configure \
그 후에 –enable-debug \
- % patch2로 시작하는 행을 제거하거나 주석 처리하십시오 (이전 행 위).
그런 다음 rpm을 빌드하고 설치하십시오 (강제로 기존 패키지를 덮어 쓰기). 이제 /var/run/pam-debug.log 파일을 만듭니다 :
install -m 622 /dev/null /var/run/pam-debug.log
파일이 존재하지 않으면 디버그 출력이 stderr로 전송됩니다.
-
내 생각에 stderr로 보내는 것은 어리석은 일이며 패치 충돌을 일으키는 원인입니다. libpam / include / security / _pam_macros.h 파일로 이동하여 파일 의 4 줄을 교체하여 해당 동작을 변경할 수 있습니다.
로그 파일 = stderr;
와
return;
빌드시 도달 불가능한 명령문에 대한 경고가 표시되지만 무시할 수 있습니다. sed 스크립트에서이 변경을 수행하고 패치 후에 RPM의 % prep 섹션에 넣을 수 있습니다 …
sed -i 's/logfile = stderr;$/return;/' libpam/include/security/_pam_macros.h
이 작은 패치를 수행하면 제대로 다시 작동하므로 % patch2를 복원 할 수 있습니다.
답변
CentOS 6.4의 PAM에서 디버그 로그를 활성화하는 방법을 찾으려고 몇 시간을 보냈습니다. 이 질문은 데비안을위한 것이지만, 다른 사람들이 이미 가지고있는 시간을 들이지 않아도되기 위해 CentOS에서 어떻게해야하는지 적어 보겠습니다.
결과적으로 pam
CentOS 패키지 에서 디버그 로그를 활성화하는 것은 간단합니다. 어려움은 패키지를 다시 컴파일해야한다는 사실에서 비롯됩니다. 따라서 먼저 여기pam-1.1.1-13.el6.src.rpm
에서 SRPM (예 :)을 찾으 십시오 . SRPM에서 패키지를 컴파일하는 방법을 모르는 사람들 은 RPM 빌드 환경 설정 단계를 참조하십시오 .
주요 단계는 다음과 같습니다. 스펙 파일을 열고 호출 --enable-debug
의 %build
섹션에 추가하십시오 configure
. 재 컴파일! 새로 만든 패키지를 다시 설치하십시오. 마지막으로 디버그 로그를 작성할 파일을 작성하십시오.
$ sudo touch /var/run/pam-debug.log
파일을 만들지 않으면 터미널에서 많은 로그가 날아가므로 유용하지 않을 수 있습니다.
답변
데비안과 우분투 (및 다른 배포판)에는 모든 pam 출력이 기록되는 특수 로그 파일이 있습니다.
/var/log/auth.log
나는 하루 반 동안 pam 관련 문제로 고생하고 마침내이 로그 파일에 대해 알아 냈고 광기에서 자신을 구했습니다.
다음은 계획대로 진행되지 않을 때이 파일의 내용 샘플입니다.
Jul 10 09:31:14 vagrant-ubuntu-trusty-64 pamtester: pam_userdb(vsftpd:auth): user_lookup: could not open database `/etc/vsftpd_users.db': No such file or directory
Jul 10 09:36:20 vagrant-ubuntu-trusty-64 sudo: vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
작동 할 때의 모습은 다음과 같습니다.
Jul 10 09:47:00 vagrant-ubuntu-trusty-64 sshd[5222]: pam_unix(sshd:session): session closed for user vagrant
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: error: Could not load host key: /etc/ssh/ssh_host_ed25519_key
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: Accepted publickey for vagrant from 10.0.2.2 port 54652 ssh2: RSA dd:3b:b8:2e:85:04:06:e9:ab:ff:a8:0a:c0:04:6e:d6
Jul 10 09:50:58 vagrant-ubuntu-trusty-64 sshd[5584]: pam_unix(sshd:session): session opened for user vagrant by (uid=0)
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 sudo: vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 sudo: pam_unix(sudo:session): session opened for user root by vagrant(uid=0)
Jul 10 09:51:13 vagrant-ubuntu-trusty-64 sudo: pam_unix(sudo:session): session closed for user root
Jul 10 09:51:41 vagrant-ubuntu-trusty-64 pamtester: pam_userdb(vsftpd:auth): user 'foo' granted access
Jul 10 09:51:44 vagrant-ubuntu-trusty-64 sudo: vagrant : TTY=pts/1 ; PWD=/home/vagrant ; USER=root ; COMMAND=/bin/cat /var/log/auth.log
Jul 10 09:51:44 vagrant-ubuntu-trusty-64 sudo: pam_unix(sudo:session): session opened for user root by vagrant(uid=0)
pam 디버그 로깅을 활성화 할 수있는 다른 가능성은 없습니다.
답변
/ etc / securetty로 문제가 생겼으며 tty (약간 임의 임)에 따라 로그인이 거부되었는지 여부. 정말 좋은, 휴!
조금 확장 해 주시겠습니까?
securetty의 맨 페이지 당 :
the file contains the device names of terminal lines (one per line, without leading /dev/) on which root is allowed to login.
당신이 묘사하는 행동은 securetty가 정상적으로 작동하는 것처럼 들립니다 (실제로 루트로 로그온했다고 가정).
일부 ssh 로그인은 작동했지만 일부는 작동하지 않았습니다.
여기에도 PAM 이외의 제한이있을 수 있으므로 사용자의 /etc/ssh/sshd_config
모습에 대한 통찰력을 제공하는 데 도움이 될 수 있습니다 .
특히, 당신의 설명에서 :
- 루트로 로그인하려고했지만 실패한 경우이 행이 다음에 있기 때문일 수 있습니다
sshd_config
.PermitRootLogin no
- 일부 사용자 / 그룹 작업, 그리고 다른 사람하지 않을 경우 하나의 이유에서 사용할 수
sshd_config
의AllowGroups
또는AllowUsers
. 샘플 라인은 다음과 같습니다.
AllowGroups users admins
물론 PAM이 문제의 일부일 수도 있지만, 다른 방법으로 설명 할 수있는 것처럼 ‘주요 증상’이 나에게 들립니다.
답변
Asket … 난 당신의 게시물을 정말 사랑했습니다 🙂 나는 지난 15 시간 동안 이런 것들과 싸우고 있었다 … (나는 30 분 휴식을했을지도 모른다)
어떻게 든 당신이 한 모든 일을 수행하여 작동하게했습니다. 즉, / etc / pam_debug가 있고 pam 항목을 디버그합니다. 그러나 내 경우와 같이 고군분투하고 pam_mysql
있었고, 나는 팸 항목을 verbose=1
한 번 더 넣어야했습니다 debug
.
mailsystem:~# cat /etc/pam.d/smtp
auth required pam_mysql.so debug sqllog=1 verbose=1 user=mail passwd=imverysecret host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1 logtable=log_auth logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logtimecolumn=time
account sufficient pam_mysql.so debug sqllog=1 verbose=1 user=mail passwd=imverysecret host=127.0.0.1 db=mail table=mailbox usercolumn=username passwdcolumn=password crypt=1 logtable=log_auth logmsgcolumn=msg logusercolumn=user logpidcolumn=pid loghostcolumn=host logtimecolumn=times
“sqllog”는 DB에 로그를 작성하는 것입니다.
아마도 이것이 약간 도움이 될 것입니다.
우리는 모두 PAM을 싫어합니다. 행운을 빕니다!