- 일반적으로 FTP 서버를 이용한 파일 전송은 보안 기능이 적용 X
- 안전한 파일 전송을 위해 사용하는 가장 일반적인 방법 → SFTP와 FTPS를 사용
SFTP
- SFTP는 암호화된 SSH 연결을 이용
- SFTP는 서버 접속, 파일 전송, 그리고 파일 관리를 지원하기 위해 IETF(Internet Engineering Task Force)에서 개발한 네트워크 프로토콜
- SFTP를 사용하기 위해선 SSH2 프로그램을 설치한 후에 활성화 필요
SFTP의 특징
- 안전한 파일 전송
- SFTP는 안전한 파일 전송을 위해 SSH로 연결을 암호화
- 안전한 FTP 서버 접속
- 안전한 서버 접속을 위해 인증 방법으로서 패스워드 뿐만 아니라 공개키(Public Key)를 이용한 접속을 지원
- 대부분의 플랫폼에서 사용 가능
- SFTP는 Windows, Unix, linux 등 대부분의 플랫폼에서 지원
- SSH 서버가 제공하는 프로그램 (VSFTP 서버와 별개)
- VSFTP 서버와 별개의 프로그램이지만, 안전한 파일 전송을 지원한다는 점에서 FTP와 동일한 역할
SFTP 서버 설정
1. OpenSSH 패키지 다운
- sftp 명령어를 사용하려면 SSH 패키지가 필요
- OpenSSH 패키지를 설치하면 SSH 패키지를 설치 가능
$ yum install openssh-server openssh -y
2. SSH 서버의 설정 파일 변경
/etc/ssh/sshd_confg 파일을 수정
기존에 있던 설정을 internal-sftp로 변경 (아래에 설명)
$ vi /etc/ssh/sshd_config # 기존에 있던 Subsystem을 주석처리하고 새로운 Subsystem을 추가 # override default of no subsystems # Subsystem sftp /usr/libexec/openssh/sftp-server Subsystem sftp internal-sftp # Example of overriding settings on a per-user basis Match User sftp-users X11Forwarding no AllowTcpForwarding no # ChrootDirectory /home/%u ForceCommand internal-sftp
3. /etc/ssh/sshd_config 파일 내 적용 요소 설명
- #Subsystem sftp /usr/libexec/openssh/sftp-server
- 서브시스템으로 사용되던 기존 sftp 프로그램을 사용 X → 앞에 주석 추가
- Subsystem sftp internal-sftp
- SSH 서버에서 외부 프로그램을 사용
- 키워드 Subsystem에 이름 sftp와 명령어 internal-sftp를 지정
- internal-sftp는 Match Group sftp-users의 ChrootDirectory 옵션을 사용해 각 사용자 별로 chroot를 적용하기 위해 sftp-server 대신 사용
- Match Group sftp-users
- sftp를 사용할 그룹 이름과 옵션을 정의
- 그룹 안에 속한 사용자들은 ssh 및 scp를 사용 불가능 → 오직 sftp만 사용 가능
- X11Forwarding no → ssh 접속해서 GUI 기반의 어플리케이션 실행 X
- AllowTcpForwarding no → TCP 포워딩을 불가능
- chroot를 적용돼 자신의 홈 디렉토리를 루트(/) 디렉토리로 인식
- ChrootDirectory는 root로 적용될 디렉토리 위치를 지정
- %u → 인증된 사용자의 사용자 이름을 지정
- ForceCommand internal-sftp → internal-sftp를 강제 명령으로 실행
4. 그룹 생성 및 그룹에 사용자 포함
SFTP 사용이 적용될 그룹 sftp-users를 생성하기 위해 명령어 groupadd를 사용
그룹을 만든 후 사용자를 그룹에 포함 → 예시 : hippo 사용자
hippo 사용자의 홈디렉토리에 그룹 회원들이 접속할 수 있도록 권한을 변경
# 변경한 /etc/ssh/sshd_config을 새로 적용 $ systemctl restart sshd # sftp-users 그룹 생성 $ groupadd sftp-users # sftp-users 그룹에 root 사용자를 추가 # usermod -g sftp-users root를 하면 그룹 하나만 속함 -> 사용 X $ usermod -aG sftp-users root $ id root uid=0(root) gid=0(root) groups=0(root),10(wheel),1000(sftp-users) # hippo 사용자가 없기에 새로 추가 필요 $ id hippo id: hippo: no such user # hippo 사용자 추가 $ adduser hippo $ passwd hippo # sftp-users에 hippo 사용자 추가 $ usermod -aG sftp-users hippo # hippo 사용자가 정상적으로 생성되고 sftp-users에 들어있는 지 확인 # wheel 그룹에 속하려면 /etc/group의 wheel에 hippo를 추가해야 함 $ id hippo uid=1000(hippo) gid=1001(hippo) groups=1001(hippo),10(wheel),1000(sftp-users) # 권한 변경 $ chmod 755 /home/hippo $ ls -al /home drwxr-xr-x 2 hippo hippo 4096 Jan 30 21:54 hippo
리눅스 SFTP 클라이언트 테스트
접속하는 윈도우 SFTP 클라이언트
리눅스 클라이언트로 이용하여 테스트
리눅스 SFTP 접속 → IP 접속을 허용해줘야 함 (ACL 정책 확인 필요)
$ sftp -P 22000 root@[서버 IP] root@[서버 IP]'s password: Connected to [서버 IP]. # SFTP 접속 위치의 파일 확인 sftp> ls test.sh time # SFTP 현재 위치 확인 sftp> pwd Remote working directory: /root # SFTP 접속 해제 sftp> exit`
'OS(운영체제) > 리눅스(Linux)' 카테고리의 다른 글
리눅스 개요 (0) | 2024.03.10 |
---|---|
작업 예약 스케줄러(cron) 파일 (0) | 2022.07.23 |
RHEL7 - intel_idle과 C/G/S/P States (0) | 2022.07.21 |
P-State (Performance-state) → CPU를 사용하는 active 상태 (0) | 2022.07.21 |
C-State → CPU 사용량이 적은 idle 상태 (0) | 2022.07.21 |