[리눅스 서버] SSH Server

 

OpenSSH는 컴퓨터간에 원격으로 파일을 제어하거나 파일을 전송하는 데 사용할 수있는 SSH (Secure Shell) 프로토콜 제품군의 무료 버전이다.
이러한 기능을 수행하는 데 사용되는 기존 도구 (예 : telnet 또는 rcp)는 사용시 일반 텍스트로 사용자의 암호를 전송하기 때문에 안전하지 않다.
OpenSSH는 안전하고 암호화 된 원격 제어 및 파일 전송 작업을 용이하게하는 서버 데몬 및 클라이언트 도구를 제공하여 기존 도구를 효과적으로 대체한다.

OpenSSH 서버 데몬은 sshd 이다.
원격 컴퓨터가 ssh 클라이언트 프로그램을 가지고 접속을 한다면, 그 OpenSSH 서버는 인증 후에 원격 조종 세션을 만든다.
만약 원격 사용자가 scp 를 가지고 OpenSSH 서버를 연결하면, 그 OpenSSH 서버 데몬은 인증 후에 서버와 클라이언트 간에 안전한 파일 복사를 시작한다.

OpenSSH는 일반 암호, 공개 키, 그리고 Kerberos 티켓을 포함하는 여러가지 인증 방법을 사용할 수 있다.

 

1. 설치

서버에 OpenSSH가 설치되엉 있지 않다면, apt를 활용해서 설치하자.

 

2. 설정

(1) 기본설정
OpenSSH 서버 데몬인 sshd의 기본 설정파일은 /etc/ssh/sshd_config 파일이다.


(2) SSH Keys

SSH 키는 암호없이 두 호스트 간의 인증을 허용하게 할 수 있으며, SSH 키 인증은 개인 키(private key)와 공용 키(public key)의 두 가지가 있다.

위와 같이 실행하며, RSA 알고리즘을 이용한 키가 생성된다. 기본적으로 공개 키는 ~/.ssh/id_rsa.pub 파일에 저장되며, 개인 키는 ~/.ssh /id_rsa 에 저장된다.
이제 id_rsa.pub 파일을 원격 호스트로 복사하고, 다음을 입력하여 ~ / .ssh / authorized_keys에 추가하자.

끝으로, authorized_keys 파일에 대한 사용 권한 다시 확인해보자. 인증된 사용자에게만 읽기 및 쓰기 권한이 있어야하며, 사용 권한이 올바르지 않으면 아래와 같이 변경한다.

여기까지 설정을 마치면 이제 암호를 묻지 않고 호스트에 ssh로 접속 할 수 있다.

 

3. SFTP 퍼미션 조정과 chroot 설정을 통한 상위폴더 접근 제한

SSH 서버를 이용하면 SSH를 이용한 SFTP도 사용할 수 있다. 별도의 설정없이 SSH 기본 설정으로도 SFTP를 사용할 수 있다.
하지만, 이경우에는 다른 FTP 서버들을(ProFTP, vsFTP) 최초 설치하였을 때와 마찬가지로 chroot 설정이 디폴트로 되어 있지 않아, 웹호스팅 서비스를 제공하거나 여러 사용자들이 접속할 수 있는 서버라면 chroot를 설정하여 사용해야 한다.

사용자가 홈디렉토리를 벋어나지 못하게 하는 방법은 2가지 있다.
첫번째는 사용자가 상위 폴더로 접근 할 수 없도록 퍼미션을 조정하는 방법이고,
두번째는 SFTP의 chroot 기능을 이용하여 사용자의 홈디렉토리를 root 디렉토리로 지정하는 방법이 있다. 단, 이때에는 SSH를 사용할 수 없다.

여기서는 웹호스팅 상황을 가정하여 퍼미션 조정과 chroot 설정을 함께 사용하여 설정해보자.
참고로, SFTP의 chroot와 속도 때문에 SFTP를 사용하기 싫다면 ProFTP나 vsFTP 에서 간단하게 chroot 기능을 설정한 후 SSL/TLS 사용자 인증을 사용하여 FTPS를 이용하는 방법도 있다.

(1) 퍼미션 조정
chroot를 이용하여 주요한 폴더들의 권한을 711로 부여하여 접근을 제한한다. 예를 들어,

 

(2) chroot 설정
앞에서도 이야기했지만 SFTP에서 chroot를 설정할 때 chroot를 설정한 계정 또는 그룹은 ssh를 사용할 수 없다는 점을 유념하자.

여기서는 홈디렉토리를 벋어나지 못하게 하는 그룹으로 지정할 것이고, 해당 그룹을 sftp_group라고 가정한다. 또한, sftp_group에 포함된 사용자를 sftp_user로 하겠다.

/etc/ssh/sshd_config에서 “Subsystem sftp /usr/lib/openssh/sftp-server” 부분을 주석처리하고 아래 내용을 설정파의 맨 뒤에 추가한다. 내용이 많지만 간단히 말하면 sftp_users 그룹에게 자신의 홈디렉토리를 벋어나지 못하게 제한한다는 내용이다.

저장 후 SSH 서버를 재시작시키고,

다음으로, sftp_group에 소속된 사용자의 홈디렉토리 소유자를 root로 변경하고, 퍼미션도 755로 변경한다.

여기까지 설정한 뒤 sftp_users 사용자는 SFTP로 접속해도 쓰기 권한이 없기 때문에 아무런 활동도 할 수 없다. 웹사이트의 홈디렉토리인 public_html에 접근하여 사용할 수 있도록 쓰기권한을 부여해주자.

이렇게 설정하면 sftp_users 계정으로 SFTP를 접속하면 choot가 적용된 것을 확인 할 수 있다.

 

근데, 난 그냥 vsftp 서버에 chroot 적용하고, SSL/TLS 인증 사용하는 것이 더 좋다. 더 빠르고… ^^

 

 

[참고자료]
1. 우분투 서버 가이드>>Remote Administration>>OpenSSH 서버
2. HOSTWAY 서버운영가이드>SFTP 퍼미션 조정 및 chroot 설정으로 상위폴더 접근 제한하기
3. OpneSSH Manual Pages

 


댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다