존재하지 않는 사용자의 로그인을 허용하도록 OpenSSH의 sshd를 얻을 수 있습니까?


6

전용 서버에서 펑키 한 일을하기 위해 sshd를 설정하려고합니다. (말하자면, 이상한 질문을하는 이유에 대해 걱정할 필요가 없습니다. OpenSSH를 어떻게 남용 할 수 있는지 실험하고 있습니다.)

사용자가 만든 이름을 사용하여 시스템에 로그인 할 수있게하고 싶습니다. 예를 들면 :

$ ssh joeschmoe@crazysshserver.com

시스템에 (UNIX) 사용자가 없습니다. joeschmoe.

그들이 연결되면, 나는 그들이 존재하는 사용자로 로그인되도록하고 싶다. guest, 그리고 환경에 무언가를 joeschmoe 그래서 나는 그들이 누구로 로그인했는지 안다.

유닉스 사용자와 ssh 사용자의 개념을 분리 할 수 ​​있습니까?



아니, 그건 ssh, 고객. 이렇게하면 사용자가 다른 형식을 사용하게되지만 궁극적으로 서버에 실제 사용자로 로그인하도록 요청합니다. 클라이언트가 존재하지 않는 사용자로 로그인하도록 요청하는 방법을 찾고 있습니다. 섬기는 사람 실행하는 쉘을 소유 할 사용자를 결정하십시오.
Peeja

알 수없는 사용자를 허용하려면 시스템 인증 서비스 (PAM?)를 사용하여 원숭이에게해야합니다. 주요 사업.
Yedric

네. 나는 그것으로 멋지다. PAM 모듈을 작성하는 방법을 알고 있다고 가정합니다. 가능한가?
Peeja

답변:


2

모든 사용자가 로그인 할 수있게하려면 비밀번호 확인을 건너 뛰고 처음 로그인 할 때 계정을 만드십시오.

  1. 설치 libpam-script. 예 :

    sudo apt-get install libpam-script

  2. 의 인증 섹션 /etc/pam.d/sshd, 바꾸다 pam_unix.sopam_script.so. 일부 Linux 배포판은 자동으로 변경됩니다. 예를 들어, Ubuntu 14.04에서, pam_script.so 에 추가됩니다. /etc/pam.d/common-auth 포함 된 /etc/pam.d/sshd.

  3. 몹시 떠들어 대다 /usr/share/libpam-script/pam_script_auth 다음 내용으로

    #!/bin/bash adduser $PAM_USER --disabled-password --quiet --gecos "" exit 0

  4. 다음을 통해 스크립트를 실행 가능하게 만드십시오.

    chmod +x /usr/share/libpam-script/pam_script_auth

  5. 행복하게.


1
UNIX 사용자로 추가 할 수 있습니까? 나는 그들이 새로운 유닉스 사용자를 창조하는 것을 원하지 않는다. 나는 그들이 guest.
Peeja

2

나는 꽤 비슷한 경우에 대해 연구 해왔다. 필자의 경우 호스트 기반 인증으로 이것을 구현하기로 결정했습니다. 사용자를 생성해야하는 곳을 이해해야하고 getpwnam 호출이 이름 서비스 전환에 구현 된 것이 가장 좋습니다. 필자는 PAM에서 사용자 생성을 구현할 수 없다고 생각하지만 실제로 PAM 모듈을 호출하기 전에 SSH에서 사용자 세부 정보가 필요하다고 생각합니다. 그러나 인증 유형에 따라 다를 수 있습니다.

호스트 기반 인증을 사용하고 동일한 사용자 이름에 로그인하는 방법을 설명하는 내 블로그 게시물 : https://funinit.wordpress.com/2018/01/29/host-based-ssh-as-sso/
적절한 방식으로 getpwnam을 구현하는 NSS 서비스 라이브러리가있는 Github 프로젝트 : https://github.com/cinek810/libnss-pool

모든 사람을 손님으로 로그인하려면 다른 NSS 라이브러리 (ato는 모두를 의미합니다)를 확인할 수 있습니다. https://github.com/donapieppo/libnss-ato


0

불행히도, OP가 원하는 것을 할 수는 없습니다. 나는 최근에 똑같은 것을 조사해 왔으며 OpenSSH는 사용자가 입력하는 사용자 이름을 항상 사용하고 PAM이 소개하려고 시도하는 사용자 이름의 변경 사항은 무시한다는 점을 발견했습니다. 해당 사용자가 / etc / passwd에 없으면 OpenSSH는 중요한 정보 (UID, GID 및 로그인 쉘 포함)를 조회 할 수 없으므로 로그인을 허용하지 않습니다.

참고: https://www.redhat.com/archives/pam-list/2009-January/msg00004.html

한가지 대안은 PAM 인증 단계에서 사용자를 직접 작성하는 것인데, 데이비드는 자신의 대답에서 설명했습니다. 필자는이 솔루션을 테스트 한 결과 실행 가능하다고 판단했습니다. UID는 일반적으로 32 비트이므로 UQL을 모두 사용하지 않아도됩니다.  그러나 / etc / passwd 및 / etc / shadow 파일이 길어지고 길어질수록 시스템 성능이 느려지고 느려질 수 있습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.