SFTP 사용자 생성 및 CentOS에서 chroot로 연결-사용자 인증 오류


18

Digital Ocean과 함께 CentOs 릴리스 6.4를 가지고 SFTP 사용자를 성공적으로 생성하여 사용자 자신의 chroot 홈 디렉토리에 탈옥하고 싶지만이 문제가 발생하는 것이 두렵습니다.

나는 많은 것들을 시도했는데, 너무 많이 여기에 나열하기에는 너무 많았을 것입니다. 대부분이 틀렸거나 이해가되지 않을 것입니다.하지만 올바른 과정이어야한다고 생각한 것은 :-

에 대한 그룹을 만듭니다 sftp:-

groupadd sftp

사용자를 작성하고 홈 디렉토리를 설정하십시오.

useradd -d /var/www/vhosts/domain.com dummyuser

사용자의 비밀번호를 설정하십시오.

passwd dummyuser

사용자 그룹을 'sftp'로 변경하십시오.

usermod -g sftp dummyuser

사용자의 쉘을 /bin/false:-

usermod -s /bin/false dummyuser

sshd_config( /etc/ssh/) 에서 서브 시스템 편집 :-

#Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

sshd_config파일 맨 아래에 다음을 추가 하십시오.

Match group sftp
    X11Forwarding no
    ChrootDirectory %h
    AllowTcpForwarding no
    ForceCommand internal-sftp

다음 디렉토리가 모두 있는지 확인하십시오 root:root.

/var
/var/www
/var/www/vhosts
/var/www/vhosts/domain.com

그런 다음 dummyuserWinSCP 의 사용자와 SFTP를 통해 서버에 로그인하려고 하면 다음과 같은 결과가 나타납니다.

Authentication log (see session log for details):
Using username "dummyuser".

Authentication failed.

내가 달성하고자하는 것은 사용자를 홈 디렉토리로 옮기는 것입니다. 또한 vsftpd를 설정하고 구성했습니다. 사용자는 정상적으로 로그인 할 수 있지만 전체 서버에 액세스 할 수는 있습니다.

편집하다

언급을 잊어 버린 다음 다시 시작했습니다 sshd.

service sshd restart

WinSCP에서 오류가 발생하면 여기 에 대한 도움말 페이지가 있습니다 .

로그 결과

/var/log/secure

실제 서버 이름을로 바꿨습니다 server_name.

 Apr 28 14:20:56 server_name sshd[9944]: Accepted password for dummyuser from 80.194.255.4 port 44402 ssh2
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session opened for user dummyuser by (uid=0)
 Apr 28 14:20:56 server_name sshd[9946]: fatal: bad ownership or modes for chroot directory component "/var/www/vhosts/"
 Apr 28 14:20:56 server_name sshd[9944]: pam_unix(sshd:session): session closed for user dummyuser

다시 시작 했습니까 sshd? 서버의 로그 파일에 무엇입니까?
faker

예, 죄송합니다. 질문 끝에 추가하는 것을 잊었습니다 (지금 포함). 지금까지 '세션 로그'파일을 찾지 못해 어떤 로그 파일 (및 위치)을보고 있어야합니까? 감사.
zigojacko

을 살펴보고 싶을 것 /var/log/secure입니다.
faker

훌륭합니다, 감사합니다-도움이됩니다 (로그 항목으로 질문 업데이트).
zigojacko

치명적이 나는 의심하지만 나쁜 소유권의 chroot 디렉토리 구성 요소 "의 / var / www /에서 가상 호스트 /"뭔가 모드 등 vhosts이다 root:root.
zigojacko

답변:


14

일반적인 함정입니다.
chroot 홈까지의 모든 폴더는 소유해야하며 root사용자 만 쓸 수 있어야합니다 .
폴더가 그룹 인 경우에도 폴더를 쓸 수 없습니다 root.


4
방금 이것을 편리하게 확인하는 요령을 배웠습니다.namei -l /var/www/vhosts
clockworkgeek

5

CentOS 6.5에서 sftp를 찾아서 성공적으로 구성했습니다 : http://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

sshd 구성 편집 :

vim / etc / ssh / sshd_config

#Subsystem      sftp    /usr/libexec/openssh/sftp-server (comment out the default with "#")

add:

Subsystem sftp internal-sftp
Match Group sftp-only
ChrootDirectory /var/www/%u
    AllowTCPForwarding no
    X11Forwarding no
    ForceCommand internal-sftp

종료하고 저장하십시오.

그때:

mkdir /etc/skel2
groupadd sftp-only
getent group |grep sftp-only  (take note the GID (Group ID).  Here, in my example it's 500)

"testuser"라는 새 사용자 (GID 500을 사용하는 sftp 전용 그룹의 구성원) :

useradd --base-dir /var/www --gid 500 --skel /etc/skel2 --create-home --shell /sbin/nologin testuser

(빈 / etc / skel2를 사용하므로 CentOS에서 기본적으로 .bashrc 등이 ​​복사되지 않습니다)

mkdir -p /var/www/testuser/home/testuser

chown root:sftp-only /var/www/testuser
chmod 750 /var/www/testuser

chown root:root /var/www/testuser/home
chmod 755 /var/www/testuser/home

chown testuser:sftp-only /var/www/testuser/home/testuser
chmod 770 /var/www/testuser/home/testuser

따라서이 예에서는 웹 사이트를 관리하는 외부 컨설팅 회사에 안전하게 액세스 할 수 있도록했습니다. 이 모든 작업을 만든 후에는 다음을 수행 할 수 있습니다.

mkdir /var/www/testuser/home/testuser/www.somesite.com
chown testuser:apache /var/www/testuser/home/testuser/www.somesite.com
chmod xxx (permissions to the website as needed, usually 750 so apache would get read access)

필요에 따라이 모든 것을 미세 조정할 수 있습니다.

이것이 도움이 되었기를 바랍니다!

Guy Boisvert IngTegration Inc. http://www.ingtegration.com


서버 결함에 오신 것을 환영합니다! 이 이론적으로 질문에 대답 할 수 있습니다 동안, 바람직 할 것이다 여기에 대한 대답의 본질적인 부분을 포함하고 참조 할 수 있도록 링크를 제공합니다.
masegaloeh

1
sshd 설정을 변경 했으므로 다시 시작하는 것이 좋습니다.service sshd restart
Loïc
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.