2012-06-09 3 views
2

PAM 모듈이 자체 JAAS LoginModule의 지침으로 설계된 방식을보고 있습니다. 한 가지 놀랍게도, 해시 된 암호에 액세스하는 데 사용 된 방법이 대부분 해시 방법 자체와 직각이지만,이 속성을 유용하게 사용할 PAM 모듈을 찾을 수 없었습니다. 내가 간과 한 보안 문제로 인한 것입니까 아니면 아직 탐험되지 않은 것입니까?pam 공유 해시

해시 암호 (LDAP, SQL, 일반 파일) 및 해시 방법 (MD5, SHA1)에 액세스하는 3 가지 방법이 있다고 가정 해 보겠습니다. 현재 각 액세스 방법에 대해 하나 이상의 PAM 모듈이 있으며, 각각 하나 이상의 해시 메소드를 구현합니다. 새로운 해시 메소드 (예 : BCrypt)를 추가하면 이러한 모든 액세스 메소드를 수정하여 새 해시 유형을 지원해야합니다. 더 나은 설계는 사용자 이름을 사용하여 해시 된 암호를 간단히 검색 한 다음 해시 확인을 수행하는 별도의 PAM 모듈 집합을 가지며 모듈간에 공유되는 해시 값을 사용하여 각 액세스 방법에 대해 하나의 PAM 모듈을 갖는 것입니다 (예 : 암호는). 내 암호를 저장하고 암호를 확인할 수 있도록 MD5를 사용하여 데이터베이스를 사용하는 경우 그래서, 내 구성은 다음과 같이 보일 것이다 :

이 구성 pam_sql에서
password required pam_sql.so 
password required pam_md5.so 

데이터베이스에서 해시 된 암호를 검색 (또는 사용자 이름 경우 실패 존재하지 않는다). 그런 다음 pam_md5는 해시 된 암호와 테스트 할 암호를 비교하고 일치하지 않으면 실패합니다. Bcrypt를 사용하는 다른 설정에서 pam_sql의 개발자가 새로운 해시 메소드를 업데이트 할 때까지 기다리지 않고 pam_bcrypt로 pam_md5를 교체하면됩니다.

답변

1

PAM에는 암호 해시 또는 암호 비교 방법 (해시 여부에 관계 없음)에 대한 지식이 없습니다. PAM은 모듈이 사용자와 "대화"할 수있는 기능을 제공합니다. 즉, 질문을하고 답변을 얻습니다. 물론 일반적인 질문은 "사용자 이름이 무엇입니까?" 그리고 "당신의 비밀 번호는 무엇입니까?" 모든 PAM에 대해 일부 모듈은 인증 프로세스의 결과를 결정하기 전에 사용자에게 5 가지 질문을하거나 전혀 묻지 않을 수 있습니다.

해시 된 암호를 처리하는 PAM 모듈의 하위 집합에 공통 서비스를 제공하는 PAM보다 하위 계층의 추상화가 필요합니다.

무엇이 질문입니까? 그런 추상화를 구현하고이를 표준으로 홍보하고 싶습니까?

+0

그런 표준은 모듈 호출간에 해시를 유지하는 항목의 이름을 정의하는 것보다 복잡하지는 않을 것이라고 생각합니다. 하지만 제 질문은 "보안상의 이유로 그러한 표준을 나쁜 생각으로 여기겠습니까? 아니면 단순히 아무도 그러한 필요성을 알지 못했습니까?" – petithug

+0

잘 알려진 특수 이름을 가진 PAM 항목을 사용하여이 서비스를 구현하는 것이 어렵지 않을 수도 있습니다. 나는 보안 문제를 보지 못했다. 나는 그것이 완료되지 않은 이유는 해시 된 패스워드를 사용하는 모든 전형적인 인증 방법은 이미 각 메소드에 의해 사용 된 특정 해시 포맷을 다루는 데 필요한 모든 기계류와 함께 왔다는 것입니다 (예 :'pam_unix'는 기존의 'crypt()') 해시가 원격으로 확인되고이 서비스가 적용되지 않을 수 있습니다 (예 : RADIUS, LDAP, IMAP 또는 HTTP 서버 제거에 대한 인증). – Celada