기계적 인조 인간

sftp chroot jail을 설정하는 방법

SFTP Server Chroot Configuration | How to Setup Chroot SFTP in Linux

SFTP Server Chroot Configuration | How to Setup Chroot SFTP in Linux

차례:

Anonim

이 자습서에서는 사용자를 홈 디렉토리로 제한하는 SFTP Chroot Jail 환경을 설정하는 방법에 대해 설명합니다. 사용자는 SFTP 액세스 만 가지며 SSH 액세스는 비활성화됩니다. 이 지침은 Ubuntu, CentOS, Debian 및 Fedora를 포함한 최신 Linux 배포판에서 작동합니다.

SFTP 그룹 생성

각 사용자에 대해 OpenSSH 서버를 개별적으로 구성하는 대신 새 그룹을 작성하고 모든 루트 사용자를이 그룹에 추가합니다.

다음 groupadd 명령을 실행하여 sftponly 사용자 그룹을 작성하십시오.

sudo groupadd sftponly 원하는대로 그룹 이름을 지정할 수 있습니다.

SFTP 그룹에 사용자 추가

다음 단계는 sftponly 그룹으로 제한하려는 사용자를 추가하는 것입니다.

이것이 새로운 설정이고 사용자가 존재하지 않는 경우 다음을 입력하여 새 사용자 계정을 만들 수 있습니다.

sudo useradd -g sftponly -s /bin/false -m -d /home/username username

  • -g sftponly 옵션은 -g sftponly 에 사용자를 추가합니다. -s /bin/false 옵션은 사용자의 로그인 쉘을 설정합니다. 로그인 쉘을 /bin/false 하면 사용자는 SSH를 통해 서버에 로그인 할 수 없습니다. -m -d /home/username 옵션은 useradd에게 사용자 홈 디렉토리를 작성하도록 지시합니다.

새로 만든 사용자의 강력한 암호를 설정하십시오.

sudo passwd username

그렇지 않으면 제한하려는 사용자가 이미 존재하는 경우 sftponly 그룹에 사용자를 추가하고 사용자의 쉘을 변경하십시오.

sudo usermod -G sftponly -s /bin/false username2

사용자 홈 디렉토리는 root가 소유해야하며 755 권한이 있어야합니다.

sudo chown root: /home/username sudo chmod 755 /home/username

사용자 홈 디렉토리는 루트 사용자가 소유하므로 홈 디렉토리에 파일 및 디렉토리를 작성할 수 없습니다. 사용자의 집에 디렉토리가없는 경우 사용자가 완전히 액세스 할 수있는 새 디렉토리를 작성해야합니다. 예를 들어 다음 디렉토리를 만들 수 있습니다.

sudo mkdir /home/username/{public_html, uploads} sudo chmod 755 /home/username/{public_html, uploads} sudo chown username:sftponly /home/username/{public_html, uploads}

웹 응용 프로그램이 사용자의 public_html 디렉토리를 문서 루트로 사용하는 경우 이러한 변경으로 인해 권한 문제가 발생할 수 있습니다. 예를 들어, WordPress를 실행중인 경우 파일을 소유 한 사용자로 실행되는 PHP 풀을 작성하고 웹을 sftponly 그룹에 추가해야합니다.

SSH 구성

SFTP는 SSH의 하위 시스템이며 모든 SSH 인증 메커니즘을 지원합니다.

텍스트 편집기로 SSH 구성 파일 /etc/ssh/sshd_config 십시오.

sudo nano /etc/ssh/sshd_config

일반적으로 파일 끝에서 Subsystem sftp 시작하는 행을 검색하십시오. 행이 해시 # 시작하는 경우 해시 # 제거하고 다음과 같이 수정하십시오.

/ etc / ssh / sshd_config

Subsystem sftp internal-sftp

파일 끝쪽으로 다음 설정 블록:

/ etc / ssh / sshd_config

Match Group sftponly ChrootDirectory %h ForceCommand internal-sftp AllowTcpForwarding no X11Forwarding no

ChrootDirectory 지시문은 chroot 디렉토리의 경로를 지정합니다. %h 는 사용자 홈 디렉토리를 의미합니다. 이 디렉토리는 루트 사용자가 소유해야하며 다른 사용자 나 그룹이 쓸 수 없어야합니다.

SSH 구성 파일을 수정할 때 특히주의하십시오. 잘못된 구성으로 인해 SSH 서비스가 시작되지 않을 수 있습니다.

완료되면 파일을 저장하고 SSH 서비스를 다시 시작하여 변경 사항을 적용하십시오.

sudo systemctl restart ssh

CentOS 및 Fedora에서 ssh 서비스의 이름은 sshd .

sudo systemctl restart sshd

구성 테스트

SFTP chroot를 구성 했으므로 chroot 사용자의 신임 정보를 사용하여 SFTP를 통해 원격 시스템에 로그인을 시도 할 수 있습니다. 대부분의 경우 FileZilla와 같은 데스크탑 SFTP 클라이언트를 사용하지만이 예에서는 sftp 명령을 사용합니다.

sftp 명령과 원격 서버 사용자 이름 및 서버 IP 주소 또는 도메인 이름을 사용하여 SFTP 연결을여십시오.

sftp [email protected]

사용자 비밀번호를 입력하라는 메시지가 표시됩니다. 연결되면 원격 서버에 확인 메시지와 sftp> 프롬프트가 표시됩니다.

[email protected]'s password: sftp>

아래와 같이 pwd 명령을 실행하고 모든 것이 예상대로 작동하면 명령이 / 를 반환해야합니다.

sftp> pwd Remote working directory: /

ls 명령을 사용하여 원격 파일 및 디렉토리를 나열 할 수도 있으며 이전에 작성한 디렉토리를 볼 수 있습니다.

sftp> ls public_html uploads

결론

이 학습서에서는 Linux 서버에서 SFTP Chroot Jail 환경을 설정하고 홈 디렉토리에 대한 사용자 액세스를 제한하는 방법을 학습했습니다.

기본적으로 SSH는 포트 22에서 수신 대기합니다. 기본 SSH 포트를 변경하면 자동 공격의 위험을 줄임으로써 서버에 추가적인 보안 계층이 추가됩니다. SSH 키 기반 인증을 설정하고 비밀번호를 입력하지 않고 서버에 연결할 수도 있습니다.

ssh sftp 보안