2015.10.29 18:46
일반적으로 SFTP를 사용하게 되면 FTP와는 다르게 root 권한을 가지고 있지 않은 일반계정으로도 SFTP를 사용하여 접속하게 되면 접속폴더 상위의 폴더까지 접근이 가능합니다. 개인이 혼자서 사용하는 서버라면 상관없겠지만, 호스팅 서비스를 하거나 여러 사용자들이 접속할 수 있는 서버라면 사용자들 간에 격리가 필요합니다. 그렇지 않다면 사용자 누구나 루트폴더에 접근할 수 있기 때문에 보안, 해킹에 취약한 단점이 있습니다.
이 때, 상위폴더로 접근할 수 없게 설정하는 방법으로는 2가지가 있습니다.
첫번째로는 상위 폴더로 접근할 수 없게 퍼미션을 조정하는 방법이 있고, 두번째로는 SFTP에서 chroot 기능을 이용하여 사용자의 홈 폴더를 root 폴더로 지정하는 방법이 있습니다.
1. 퍼미션 조정
- chmod를 이용하여 주요한 폴더들의 권한을 711로 부여하여 접근을 제어
예, chmod 711 /home
chmod 711 /etc 등..
2. chroot 설정
- chroot는 임시로 루트 디렉토리를 설정하는 명령어로, 일반적인 루트 디렉토리가 아닌 다른 디렉토리(예, /etc, /home 등..)를 임시로 루트 디렉토리인 것처럼 설정할 수 있습니다. 단, 주의할 점은 chroot를 설정한 계정 또는 그룹은 ssh를 사용할 수 없습니다.
설정방법은 아래와 같습니다.
ㄱ. ssh 설정 변경
# vi /etc/ssh/sshd_config
-> Subsystem sftp /usr/lib/openssh/sftp-server : 주석처리
-> Subsystem sftp internal-sftp : 추가
ㄴ. 문서 맨 마지막에 Match 구문 추가(user : test)
-> Match User test
ChrootDirectory /home/test
ForceCommand internal-sftp
X11Forwarding no
AllowTCPForwarding no
이 때, ChrootDirectory는 반드시 홈디렉토리가 아닌 다른 디렉토리를 지정해도 상관없습니다.
# service sshd restart
ㄷ. chroot가 적용된 디렉토리의 소유자를 root로 변경해야 접속이 가능합니다.
# chown root /home/test
또한 해당 계정의 권한도 755로 변경합니다.
# chmod 755 /home/test
이렇게 설정한 뒤 test 계정으로 SFTP를 접속해도 쓰기 권한을 가지고 있지 않기 때문에 홈 디렉토리 내에서는 아무런 활동을 할 수 없기 때문에 접속이 되지 않습니다. 이런 경우 /home/test 안에 임의의 폴더를 생성하여 해당 폴더에 쓰기권한을 부여해주는 방법이 있습니다.
# mkdir www(임시 디렉토리)
# chown root:test /home/test/www
# chmod 775 /home/test/www : 쓰기 권한 부여
이렇게 설정하게 되면 test 계정으로 SFTP를 접속하게 되면 /home 디렉토리 상위폴더로 접근 불가능 한 chroot가 적용 된 것을 확인할 수 있습니다.
번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
---|---|---|---|---|
386 | cdp 백업 프로세스 관련 | 호스트웨이 | 2015.09.07 | 1486 |
385 | Linux vmstat 명령어 | 호스트웨이 | 2015.09.08 | 1609 |
384 | 잘못푼 압축파일(tar.gz) 지우는 방법 | 호스트웨이 | 2012.12.07 | 1648 |
383 | sftp 서비스 막기 | 호스트웨이 | 2012.12.27 | 1695 |
382 | 우분투 서버에 JDK7 설치하기 | 호스트웨이 | 2015.09.13 | 1804 |
381 |
2015년 7월1일 윤초 발생 관련 점검 방안
![]() | 호스트웨이 | 2015.06.30 | 1986 |
380 |
리눅스 whereis 명령어
![]() | 호스트웨이 | 2012.09.28 | 1992 |
379 | 현재 접속 사용자(머신/디바이스)수 알아내기 | 호스트웨이 | 2012.11.16 | 2005 |
378 |
Linux 외장 저장장치 mount
![]() | 호스트웨이 | 2015.09.10 | 2006 |
377 | Log file 주기적으로 정리하기 | 호스트웨이 | 2015.09.08 | 2142 |
376 | queryperf 설치 및 사용 방법 (DNS 스트레스 테스트) | 호스트웨이 | 2012.11.29 | 2223 |
375 |
locate 명령어를 이용해 빠르게 지정한 파일 찾기
![]() | 호스트웨이 | 2012.12.12 | 2252 |
374 | 특정 파일이 소속된 rpm 패키지 찾기 | 호스트웨이 | 2012.12.14 | 2260 |
373 |
arch 명령어를 통해 컴퓨터 종류 알기
![]() | 호스트웨이 | 2012.11.16 | 2270 |
372 |
kbd_mode 명령어를 통해 인식중인 키보드모드 출력 및 변경하기
![]() | 호스트웨이 | 2012.11.06 | 2282 |
371 | top 사용 추가 tip | 호스트웨이 | 2015.09.15 | 2321 |
370 | 리눅스 free 명령어 | 호스트웨이 | 2012.12.26 | 2423 |
369 |
limits.conf 설명
![]() | 호스트웨이 | 2012.11.09 | 2596 |
368 | /proc 디렉터리내 파일 정보 알아보기 | 호스트웨이 | 2012.11.21 | 2614 |
367 | free -m 에서 free (남는 메모리 양) 최소량 제한하기 | 호스트웨이 | 2012.12.21 | 2689 |