SSH용 포트(기본 22)로 SFTP 연결해서 쓰는 방법을 이전 포스팅들에서 설명하였습니다.


sFTP가 보안에는 유리한데, FTP/FTPS(FTPES)보다 속도면에서 불리할 거예요. 그래서 FTPES를 쓰는 게 어떨까 싶어서 기웃거려 봤습니다.

그런데 vsftpd로 FTP서버를 구축하더라도 우분투 계정에 연결되더군요. 하지만 저는 FTP때문에 계정정보(패스워드)가 노출될 위험이 올라가는 게 싫었습니다. 그래서 서브계정을 만들까 하고 방법을 찾다가...


로그인도 못하고, 홈디렉토리도 없는 '불쌍한' 사용자 계정 생성

이런 포스팅을 봤습니다. FTP 용으로 딱이겠죠? 그래서 응용해봤습니다.


저는 GROUP과 계정을 모두 만들 겁니다. 둘을 연결시킬 거고요.

우선 그룹 이름을 (마음 속으로) 정합니다. 그리고 해당 그룹명이 이미 존재하는지 살펴봅시다. 터미널 창(단축키 Ctrl+Alt+T)에서 아래처럼 명령어를 입력해보세요.


▲ compgen -g

또는 cut -d ":" -f 1 /etc/group

또는 awk -F':' '{if(\$3>=500)print \$1}' /etc/group


우분투 내의 모든 그룹명을 확인할 수 있습니다. 만약 이미 존재한다면? 생각했던 그룹명을 바꿔야죠.ㅠㅠ 그리고 아래처럼 입력하여 그룹을 추가합니다.


▲ sudo groupadd aaaftpgroup

(저는 그룹명을 aaaftpgroup으로 정했습니다. 잘 추가됐는지 확인하고 싶다면 compgen -g 쳐보세요.)


그룹 생성 완료. 이제 깡통계정을 만들 차례입니다.

원하는 계정명이 이미 등록되어 있는지 살펴야겠죠? 터미널 창에서 아래처럼 입력 후 살펴봅니다.


▲ compgen -u

또는 cut -d ":" -f 1 /etc/passwd

또는 awk -F':' '{if(\$3>=500)print \$1}' /etc/passwd


그리고 아래처럼 명령어를 입력해서 깡통계정 생성+그룹에 연결합니다.


▲ sudo adduser --ingroup aaaftpgroup --shell /bin/false --no-create-home aaaftpuser

(저는 사용자명을 aaaftpuser로 정했습니다. 잘 추가됐는지 확인하고 싶다면 compgen -u 쳐보세요.)


끝났습니다.



▲ 확인 차원에서 ll /home 이라고 쳐서 홈디렉토리를 살펴보면 계정명 디렉토리가 없고요...(nautilus 같은 파일관리자 프로그램으로 확인해도 됩니다.)


▲ groups 사용자명 형식으로 입력해보면 해당 사용자가 속한 그룹이 나옵니다. 잘 연결된 것 같죠?


▲ cat이든 gedit든 아무거나 써서 /etc/passwd 파일 열어서 계정정보 확인해보면... aaa계정은 bash 쓰도록 설정되어 있는데 aaaftpuser는 false죠? 제대로 손발이 묶였습니다.


확인 작업까지 모두 끝났습니다.

------------------------------------------

요약!

sudo groupadd 그룹명

sudo adduser --ingroup 그룹명 --shell /bin/false --no-create-home 사용자명

------------------------------------------

참!! 이렇게 세팅하고 파일질라 클라이언트+sftp로 vsftpd 연결용 계정을 써서 접근해보면 루트 디렉토리 목록이 전부 노출될 겁니다. 쓰기작업은 안 될테지만 찝찝하죠.


[우분투 16.04] 계정의 SSH 연결을 막고, SFTP 최상위 디렉토리를 임의로 지정하기

위의 포스팅을 참고해서...


▲ /etc/ssh/sshd_config 마지막 부분에 "다른 우분투계정 소유의" 홈디렉토리를 연결시키는 식으로 조치하면

(root 소유의 아무 디렉토리를 연결해도 무방 => 해봤는데 접속이 뚫리네요.)


▲ SFTP 연결 자체가 안 될겁니다.

vsftpd 세팅할 때 깡통계정 소유의 디렉토리 경로로 바꾸면 SFTP 연결이 가능해질테니, 나중에 적절히 조치하세요.


다음 포스팅은 vsftpd 설치/세팅하는 과정이 되겠네요.

반응형