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.