보안 명세 구현(FTP 서버)

2020. 2. 7. 16:14Security/물리보안&보안 요구 분석&거버넌스

목차

1. 보안 명세 요구 사항 확인

1-1. 보안 명세 요구 사항 확인

2. 사전 설정

2-1. ftp 설치 확인 및 설치

2-2. ftp 시작 

3. 보안 명세 구현

3-1. 자료 배포 디렉토리 설정

3-2. root를 제외하고 자신의 홈 디렉토리를 벗어날 수 없게 설정

3-3. ftpadmin 계정만 파일 업로드 가능

3-4. 리눅스 모든 사용자가 /home/ftp에서 자료 다운로드가 가능하도록 설정

3-5. 일반 사용자 업무 계정인 st01, st02, st03 계정은 ftp 접속을 불허.

4. 보안 명세 구현 확인

4-1. 자료 배포 디렉토리 설정 확인

4-2. 일반 계정의 chroot 적용 확인 

4-3. ftpadmin 계정의 파일 업로드 가능 확인

4-4. st01, st02, st03의 ftp 접속 가능 여부 확인

 

1. 보안 명세 요구사항 확인

1-1. 보안 명세 요구사항 확인

- 자료 배포 디렉토리 : /home/ftp 
- 리눅스 모든 사용자가 해당 디렉토리에서 다운 가능 
- root를 제외하고 자신의 홈 디렉토리를 벗어날 수 없다. 
- ftpadmin 계정만 파일 업로드 가능. 
- 일반 사용자 업무 계정인 st01, st02, st03 계정은 ftp 접속을 불허.

 

2. 사전 설정

2-1. FTP 설치 여부 확인 및 설치 

# yum list vsftpd

# yum list ftp

# yum -y install vsftpd

# yum -y install ftp

// vsftpd와 ftp 설치 확인 후 설치 

 

2-2. FTP 시작

# systemctl start vsftpd.service

# systemctl status vsftpd.service

// 시작 후 구동 확인

 

3. 보안 명세 구현

3-1. 자료 배포 디렉토리 설정 

# mkdir ftp

// /home에 자료 배포 디렉토리인 ftp 폴더 생성.

 

3-2. root를 제외하고 자신의 홈 디렉토리를 벗어날 수 없게 설정

<사용 명령어>

chroot_local_user 

- yes로 설정을 할 경우 사용자들은 자신의 계정에서 상위 디렉토리로 이동할 수 없음

- default 값은 no

 

chroot_list_enable

- chroot_local_user가 NO일 때는 chroot_list_file에 지정된 사용자만 chroot를 적용

- chroot_local_user가 YES일 때는 chroot_list_file에 지정된 사용자만 chroot를 적용하지 않음

 

chroot_list_file

- chroot가 적용될 계정을 적어주는 파일.

- 기본 경로는 /etc/vsftpd/chroot_list

 

# vi /etc/vsftpd/vsftpd.conf

 

chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

allow_writeable_chroot=YES

 

추가

 

// root를 제외하고는 전부 chroot를 설정 할 것 이기때문에 chroot_local_user는 yes로 설정

// chroot_list 파일에 chroot를 설정하지 않을 root를 작성

// allow_writeable_chroot=YES 옵션은 chroot 적용 사용자의 경우 이 설정이 반드시 필요.

# vi /etc/vsftpd/chroot_list

# cat /etc/vsftpd/chroot_list

// chroot_list 파일에 root가 작성된 것을 확인. 필요할 경우 파일을 직접 생성해준다

 

# systemctl restart vsftpd.service

 

3-3. ftpadmin계정만 파일 업로드 가능. 

- ftp 설정만으로는 ftpadmin 계정만 파일 업로드 할 수 있게 설정이 불가능

- 따라서 ftpadmin의 퍼미션을 조정

# chown -R ftpadmin.user /home/ftp

// /home/ftp 디렉토리 소유권한 소유자를 ftpadmin 으로 변경

 

# cd 755 /home/ftp

// /home/ftp 디렉토리의 ftpadmin만 파일의 업로드가 가능하고, ftp를 사용할 수 있는 그룹의 해당되는 계정만 파일의 실행 가능, 나머지는 접근이 불가능하도록 750으로 설정.

 

3-4. 리눅스 모든 사용자가 /home/ftp에서 자료 다운로드가 가능하도록 설정

<사용 명령어>

mount --bind [원본 디렉토리] [연결할 디렉토리]

- chroot 설정을 사용시 외부 디렉토리로 연결된 link 디렉토리에도 접근이 금지되는데 이럴때 사용

# mount --bind /home/ftp /home/bst15/ftp

# mount --bind /home/ftp /home/ftpadmin/ftp

# mount --bind /home/ftp /home/user1/ftp

# mount --bind /home/ftp /home/user2/ftp

# mount --bind /home/ftp /home/user3/ftp

// mount 하기전 계정의 하위 디렉토리에 /ftp를 작성후에 mount 명령어 수행.

 

3-5. 일반 사용자 업무 계정인 st01, st02, st03 계정은 ftp 접속을 불허.

<사용 명령어>

1. user_list 

- ftp의 접근 제한 파일은 user_list와 ftpusers가 있는데 여기서는 user_list를 사용.

- userlist_file(/etc/vsftpd/user_list)에 등록된 계정에 대한 접속 제어는 userlist_enable과 userlist_deny에 따라 결정.

- userlist_enable와 userlist_deny 모두 yes일 경우 user_list에 등록된 사용자는 접속이 불허

- userlist_enable는 yes, userlist_deny는 no일 경우 user_list에 등록된 사용자만 접속이 가능

- userlist_enable가 no로 설정 되 있을 경우 user_list 파일은 사용되지 않음(userlist_deny 설정은 무관)

# vi /etc/vsftpd/vsftpd.conf

 

# userlist_enable = YES

# userlist_deny = YES

// userlist_enable와 userlist_deny가 모두 yes로 설정 되어 있기때문에  user_list 파일에 등록된 사용자는 접속이 불허

// userlist_enable은 이미 적혀 있음.

# vi /etc/vsftpd/user_list

 

st01

st02

st03

 

추가

 

// st01, st02, st03를 접속하지 못하게 설정

 

4. 보안 명세 구현 확인

4-1. 자료 배포 디렉토리 설정 확인

- 일반 계정은 user1로 확인

- user1로 ftp 접속이 가능

- 자료 배포 디렉토리인 ftp 디렉토리 mount 확인

 

4-2. 일반 계정의 chroot 적용 확인

- chroot가 적용되어 자신의 홈 디렉토리를 벗어날 수 없는 것을 확인 

 

4-3. ftpadmin 계정의 파일 업로드 가능 여부 확인 

- ftpadmin이 아닌 계정에서는 파일의 업로드가 불가능

- ftpadmin 계정에서는 파일이 업로드가 되는 것을 확인

 

4-4. st01, st02, st03의 ftp 접속 가능 여부 확인

# systemctl restart vsftpd.service

// 서비스 재시작후 st01, st02, st03 계정으로 접속 확인. 접속이 안 되는 것을 확인할 수 있음.