웹 서버 문서 루트에 SFTP를 구성하는 방법 > 테크게시판

본문 바로가기
사이드메뉴 열기

테크게시판 HOME



웹 서버 문서 루트에 SFTP를 구성하는 방법

페이지 정보

작성자 인바이트미 댓글 0건 조회 150회 작성일 20-03-31 12:02

본문

웹 서버 문서 루트에 SFTP를 구성하는 방법


0732ed33a33c9610c2596786b8ce51fa_1585623753_0056.png

SFTP는 강력한 보안 모델과 기존 FTP 및 FTPS보다 설정이 쉬워 요즘 가장 선호되는 제품입니다. 이 가이드에서는 사용자가 웹 서버 문서 루트에 업로드 할 수 있도록 SFTP를 구성합니다.

소개

이 가이드에서는 다음 두 가지 시나리오를 가정합니다.

  • SFTP 사용자는 웹 문서 루트에만 액세스 할 수 있어야합니다.
  • SFTP 사용자는 SSH를 통해 터미널에 로그인 할 수 없어야합니다.

SFTP 한 명의 사용자를 사용하여 문서 루트에만 액세스하려는 경우 아래 1 단계를 계속하십시오 .

다중 개발자 환경과 같이 여러 SFTP 사용자가 문서 루트에 업로드하도록 하려면 페이지 아래의 2 단계로 건너 뜁니다 .

SFTP는 SSH 전송 계층을 기반으로합니다. SSH는 기본적으로 Ubuntu Server에 설치해야합니다. 그렇지 않은 경우 다음을 사용하여 설치할 수 있습니다.

sudo apt install ssh

1. 한 명의 사용자를위한 SFTP 설정

한 사용자에 대해 SFTP를 설정하는 것은 적은 양의 구성만으로 간단합니다.

1.1 사용자 추가

루트 계정 또는 sudo 권한이있는 계정을 사용하여 웹 서버 문서 루트에 파일을 업로드하지 않는 것이 좋습니다. 이러한 이유로, 우리는이라는 새로운 사용자를 만들 것입니다 webdev– 당신이 원하는대로 이것을 호출 할 수 있습니다.

sudo adduser webdev

비밀번호를 생성 하고 Enter를 눌러 모든 기본값을 승인하십시오.

1.2 SFTP 테스트

이제 FTP 클라이언트에서이 사용자를 사용하여 로그인 할 수 있습니다. 이 예제에서는 FileZilla를 사용합니다.

서버 호스트를 입력하고 SFTP 프로토콜을 선택하고 사용자 및 암호를 입력 한 다음 연결 을 클릭 하십시오 .

로그인 할 수없고 "연결 끊김 : 지원되는 인증 방법을 사용할 수 없습니다 (서버 전송 : 공개 키)
"메시지가 표시 되면 아래 1.3 단계로 건너 뜁니다.

로그인하면 사용자의 홈 폴더로 이동합니다 webdev.

여기에는 두 가지 문제가 있습니다. 첫 번째는 사용자의 홈 폴더가 아닌 문서 루트로 이동하는 것입니다. 다른 문제는 사용자가 홈 폴더 외부를 탐색하고 전체 서버를 볼 수 있다는 것입니다!

1.3 사용자를 문서 루트로 제한

이제 사용자 webdev를 문서 루트로 제한 하고 SSH 액세스도 비활성화합니다. SFTP를 통해서만 로그인 할 수 있기를 바랍니다.

여는 것으로 시작 sshd_config

sudo nano /etc/ssh/sshd_config

파일의 맨 아래로 스크롤하여 앞에 부호를 Subsystem sftp추가 하여 줄 을 주석 처리하고 그 아래에 #붙여 넣 Subsystem sftp internal-sftp습니다.

/ etc / ssh / sshd_config
#Subsystem sftp        /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

이 아래에 새로운 Match User지시문 을 추가 할 것 입니다. ChrootDirectory해당 디렉토리가 문서 루트  의 디렉토리 인지 확인하십시오 예를 들어, 문서 루트가 /var/www/html/이면 ChrootDirectoryis /var/www/입니다. 여러 도메인을 설정하는 방법에 대한 이전 가이드 중 하나를 따라하는 경우, 문서 루트가에 위치 할 수있다 /var/www/mydomain.com/public_html이 경우에, 당신의, ChrootDirectoryIS/var/www/mydomain.com/

/ etc / ssh / sshd_config
Match User webdev
        ChrootDirectory /var/www/
        ForceCommand internal-sftp -u 0022
        X11Forwarding no
        AllowTcpForwarding no
        PasswordAuthentication yes

참고 : ForceCommand internal-sftp 이 사용자가 원하는 SSH를 통해 로그인하지 못하게합니다. rootSSH에서 영구적으로 잠길 수 있으므로 Linux 서버를 관리하는 데 사용하는 계정이나 계정을 추가하지 마십시오 !

-u 0022 SFTP를 통해 생성 된 폴더의 기본 권한을 755로 설정합니다 (기본값은 775이며 그룹을 사용하는 경우에만 필요함).

변경 사항 저장 및 닫기 나노 (보도 CTRLX를 누른 다음를 누릅니다 y과 ENTER)

sshd 서비스를 다시 시작하십시오.

sudo service sshd restart

사용자 root는 문서 루트  의 디렉토리를 소유해야합니다. 그렇지 않으면 SFTP가 연결을 거부합니다. 이것은 ChrootDirectory위와 일치해야 하므로, /var/www/또는 /var/www/mydomain.com/올바르게 입력하십시오!

sudo chown root:root /var/www/

이제 다시 로그인하여 문서 루트에 쓰도록하겠습니다.

SFTP FilZilla-문서 루트에 쓸 수 없습니다.

이를 해결하려면 문서 루트에 대한 추가 권한을 설정해야합니다.

1.4 디렉토리 권한

먼저 문서 루트에 대한 현재 권한을 확인하십시오. 귀하의 문서 루트는 /var/www/html/또는 /var/www/mydomain.com/public_html– 맞습니다!

ls -ld /var/www/html

아래 root에서 문서 루트 를 소유하고 있음을 알 수 있습니다 . 이것이 바로 사용자가 문서 루트에 webdev쓸 수없는 이유 입니다.

drwxr-xr-x 2 루트 루트 4096 6 월 19 일 12:17 / var / www / html

소유자를 webdev로 변경합시다. -R그리고 *리눅스하여 지시 아래하는 문서 루트에있는 모든 파일 및 폴더를 통해 반복적으로 실행합니다. 귀하의 문서 루트는 /var/www/html/또는 /var/www/mydomain.com/public_html– 맞습니다!

sudo chown -R webdev:webdev /var/www/html*

이제 권한을 다시 확인하십시오

ls -ld /var/www/html

아래 webdev에서 문서 루트를 소유하고 있음을 알 수 있습니다 .

drwxr-xr-x 2 webdev webdev 4096 6 월 19 일 12:17 / var / www / html

다시 로그인 한 후 권한이 올바르게 작동하도록 폴더를 작성하십시오.

FileZilla-지금 문서 루트에 쓸 수 있습니다

모두 준비되었습니다.

예를 들어 다중 개발자 환경에서 SFTP 사용자를 추가하려면 2 단계를 읽으십시오. 그렇지 않으면 작별 인사!

2. 여러 사용자를위한 SFTP

여러 사용자를위한 SFTP 설정에는 약간의 구성이 필요합니다.

2.1 SFTP 테스트

구성을 수행하기 전에 먼저 SFTP가 제대로 작동하는지 확인해야합니다. 루트 또는 개인 계정을 사용하여 로그인하십시오.

이 예제에서는 FileZilla를 사용합니다. 서버 호스트를 입력하고 SFTP 프로토콜을 선택하고 사용자 및 암호를 입력 한 다음 연결 을 클릭 하십시오 .

SFTP가 작동중인 경우 이제 그룹 설정을 계속할 수 있습니다.

2.2 그룹 생성

최적의 보안과 편의를 위해 그룹을 사용하여 문서 루트에 액세스 할 수있는 모든 사용자를 그룹화합니다. 예를 들어, 여러 웹 개발자가 문서 루트에서 작업하고 해당 활동을 감사하려고 할 수 있습니다. 또한 그룹을 사용하면 각 개별 사용자에 대한 권한을 구성하지 않고도 향후 새로운 SFTP 사용자를 쉽게 추가 할 수 있습니다.

웹 문서 루트에 대한 SFTP 액세스가 필요한 사용자를 위해라는 특수 그룹에 추가합니다 docrootonly원하는대로 호출 할 수 있습니다. 이 그룹은 사용자가 문서 루트 위에서 찾아 볼 수 없도록 chrooted사용하는 웹 /etc/ssh/sshd_config문서 루트입니다. Linux의 Chroot 를 사용하면 사용자를 특정 디렉토리에 "감옥"할 수 있습니다.

새로운 그룹을 만들어 봅시다 :

sudo groupadd docrootonly

2.3 새로운 SFTP 사용자 추가

root웹 서버 문서 루트에 파일을 업로드 하기 위해 계정 또는 sudo 권한이있는 계정 을 사용하지 않는 것이 좋습니다 따라서 제한된 계정으로 SFTP 사용자를 별도로 만들어야합니다.

여기에 원하는만큼 새 사용자를 추가 할 수 있습니다. 이 예에서는webdev

sudo adduser webdev

비밀번호를 생성 하고 Enter를 눌러 모든 기본값을 승인하십시오.

이 사용자 webdev를 그룹에 추가하십시오 docrootonly.

sudo usermod -a -G docrootonly webdev

2.4 그룹 제한

이제이 그룹의 모든 사용자를 문서 루트로 제한하고 SSH 액세스도 비활성화합니다. SFTP를 통해서만 로그인 할 수 있기를 바랍니다.

편집하여이 새 그룹을 문서 루트로 제한하십시오. sshd_config

sudo nano /etc/ssh/sshd_config

파일의 맨 아래로 스크롤하여 앞에 부호를 Subsystem sftp추가 하여 줄 을 주석 처리 #하고 붙여 넣습니다.Subsystem sftp internal-sftp

/ etc / ssh / sshd_config
#Subsystem sftp        /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp

이 아래에 새로운을 추가합니다 Match Group.

ChrootDirectory해당 디렉토리가 문서 루트  의 디렉토리 인지 확인하십시오 예를 들어, 문서 루트가 /var/www/html/이면 ChrootDirectoryis /var/www/입니다. 여러 도메인을 설정하는 방법에 대한 이전 가이드 중 하나를 따라하는 경우, 문서 루트가에 위치 할 수있다 /var/www/mydomain.com/public_html이 경우에, 당신의, ChrootDirectoryIS/var/www/mydomain.com/

/ etc / ssh / sshd_config
Match Group docrootonly
        ChrootDirectory /var/www/
        ForceCommand internal-sftp
        X11Forwarding no
        AllowTcpForwarding no
        PasswordAuthentication yes

참고 : ForceCommand internal-sftp 이 그룹의 사용자가 원하는 SSH를 통해 로그인 할 수 없습니다. SSH에서 영구적으로 잠겨있을 수 있으므로 root계정 또는 Linux 서버를 관리하는 데 사용하는 계정을 docrootonly그룹에 추가하지 마십시오 !

변경 사항 저장 및 닫기 나노 (보도 CTRLX를 누른 다음를 누릅니다 y과 ENTER)

sshd 서비스를 다시 시작하십시오.

sudo service sshd restart

2.5 디렉토리 권한 설정

chown Linux에서 파일 및 폴더의 소유자를 변경할 수 있습니다.

사용자 root는 문서 루트 위의 디렉토리를 소유해야합니다. 그렇지 않으면 SFTP가 연결을 거부합니다. 이것은 ChrootDirectory위와 일치해야 하므로, /var/www/또는 /var/www/mydomain.com/올바르게 입력하십시오!

sudo chown root:root /var/www/

사용자 root및 그룹 docrootonly은 문서 루트 (및 이미 보유한 파일 및 폴더)를 쓰려면 문서 루트를 소유해야합니다.

귀하의 문서 루트는 /var/www/html/또는 /var/www/mydomain.com/public_html– 맞습니다!

-R그리고 *리눅스 지시 문서 루트에있는 모든 파일 및 폴더를 통해 반복적으로 실행합니다.

sudo chown -R root:docrootonly /var/www/html*

그룹이 문서 루트에 대한 쓰기 액세스를 허용하려면 문서 루트 및 모든 하위 폴더에을 설정해야합니다 775다시, 문서 루트는 /var/www/html/또는 /var/www/mydomain.com/public_html입니다. 아래 명령은 문서 루트와 모든 하위 폴더를로 설정합니다 775.

sudo find /var/www/html/ -type d -exec chmod 775 {} \;

마지막으로, 문서 루트에서 생성 된 새로운 파일 / 폴더가 그룹 이름을 상속 받기를 원합니다.


댓글목록

등록된 댓글이 없습니다.