본문 바로가기
서버/리눅스 서버

5.1 우분투 / 데비안 vsftpd 로컬 계정 쉘 로그인 방지하기

by ㅋㅋ잠자 2015. 1. 10.
반응형

안녕하세요. 도정진입니다.

   

오늘은 vsftpd 계정 생성과 관련하여 보안 이슈를 설명드릴려고 합니다.

   

실제로 제 블로그에 있는 방식대로 진행을 하게 되면 실제 우분투 계정을 통해서 FTP 로 접속을 하게 됩니다. 그런 도중에 공개 FTP나 사용자가 여러명 있을 경우에는 약간 문제가 생기는데요. 생성한 FTP 전용 계정에 대해서 SSH 쉘 접속이 가능해지는 문제가 생깁니다.

   

물론 가상계정 인증을 통해서 문제를 해결할 수 있거나 외부에서 SSH로 접속을 하지 못하겠금 설정을 하시면 됩니다만 가상계정 설정이 귀찮고, SSH 가 없으면 서버 관리가 힘들어지기 때문에 아래의 방법을 사용합니다.

   

(OpenMediaVault 는 웹 UI가 있어서 SSH가 없어도 괜찮겠지만 말입니다...)

   

1. 쉘로그인을 못하게 막습니다.

2. VSFTP PAM 인증 관련 파일을 수정합니다.

   

지금부터 이 두가지 방법을 적용해 보겠습니다.

   

   

   

   

1. /etc/passwd 파일 수정

   

/etc/passwd 부분을 보면 아래의 구조로 되어 있습니다.

   

   

그럼 이 구조를 잘 보겠습니다. (OpenWRT 와 친해지기 부분에서 설명이 될꺼지만 미리 ㅎㅎ)

   

root:x:0:0:root:/root:/bin/bash

① ②③④⑤ ⑥ ⑦

   

이렇게 되어 있습니다.

   

1. 사용자 계정 이름

   

2. 사용자 비밀번호

여기에 비밀번호가 암호화 되서 작성될 수도 있지만 일반적으로는 암호화된 비밀번호는 /etc/shadow 에 저장됩니다.

   

3. 사용자 UID

실제로 1~99 까지는 다른 미리 정의된 계정을 위해 예약되어 있고 100~999 까지는 관리자나 시스템 계정/그룹 을 위해 사용됩니다. 대부분 adduser 를 통해 계정을 생성하게 되면 1000 부터 시작합니다.

   

4. 사용자 GID (사용자 그룹입니다.)

   

5. 사용자 계정 정보 (설명같은 부분입니다. 알기 편하게)

   

6. 사용자 계정 홈 디렉터리

   

7. 사용자 로그인 위치 (쉘)

   

   

이런식으로 구성이 되어 있습니다. 쉘로그인을 방지하기 위해서 위 그림을 보시면 /usr/sbin/nologin 이라는 것도 있고 /bin/false 라는 것도 있습니다. 실제로 제가 리눅스를 그렇게 깊이 알지 못하기 때문에 두가지의 차이점은 잘 모르겠습니다.

   

이번에는 /bin/false 로 설정을 하겠습니다. 대상 계정의 줄에서 뒷부분만 바꿔 주시면 됩니다.

   

   

제 서버에서 adduser 기능을 통해 media 라는 계정을 만든것입니다. 홈 디렉터리는 제가 원하는 위치로 조정하였고 뒷부분 변경을 통해 로그인을 불가능하게 만들어 줍니다. 뒷부분은 처음에는 /bin/bash 라고 되어 있습니다. 그것을 /bin/false 로 바꿔 주시면 됩니다.

   

   

그 후 FTP 접속을 위 계정으로 접속해 보시면 분명 Login Fail 이라고 로그인이 안될 것입니다.

   

그럼 바로 2번째를 참고하세요. ㅎㅎ

   

   

   

   

   

   

2. VSFTPD PAM 인증 관련 수정하기

   

PAM 인증이란 Pluggable Authentication Module 이라고 하는 것으로 사용자를 인증하고 그 사용자의 서비스에 대한 액세스를 제어하는 모듈화된 방법이라고 합니다. 그 이외의 설명은 생략합니다.

   

/etc/pam.d/vsftp 파일을 열어봅니다.

   

맨 마지막 줄에 # 을 추가하고 코멘트 처리를 하고 저장을 합니다.

   

   

그리고 vsftpd 를 재시작 합니다.

   

service vsftpd restart

   

그 후 /bin/false 로 처리된 계정에 대해서도 로그인이 됩니다.

   

   

   

감사합니다.

반응형

댓글