본문 바로가기
Linux/CentOS 7

[Cent OS 7] ftp 서버 구축 및 보안설정(vsftpd 설치)

by 인성패밀리 2021. 1. 3.
반응형

실습 환경은 CentOS 7 버전입니다.
VMware에 Linux를 부팅시키고 putty를 이용하여 접속하였습니다.
'#> [명령어]' // [주석]
[]안의 부분만 보시면 됩니다.
'#'은 관리자, '$'는 유저입니다.

 

아래 실습과정에서 SELinux는 비활성화 되어있는 상태입니다.

 

Cent OS 7에 ftp서버를 구축해보겠습니다.

ftp 클라이언트는 윈도우에서 FileZilla를 사용하겠습니다.

 

FileZilla는 구글링해서 나오는 사이트에서 다운받으시면 됩니다.

 

지금부터 리눅스에 ftp를 구축 및 보안 설정까지 해보겠습니다.

 

'#> yum install -y vsftpd' // 설치 명령어

'#> rpm -qa | grep ftp' // 설치 확인 명령어

 

설치 확인

 

'#> systemctl start vsftpd' // vsftpd 실행

'#> systemctl status vsftpd // vsftpd 실행 상태 확인

 

초록색이면 정상이다.

 

초록색으로 안 보이고 검은색으로 보이는 경우는 실행을 하지 않은 상태입니다.

만약 빨간색으로 보인다면 실행 파일에 에러가 있다는 뜻입니다.

이럴 경우 마음 편하게 재설치 하시면 됩니다.

 

삭제는 다음 명령어를 사용하면 됩니다.

'#> yum remove vsftpd'

 

FTP 설정 파일의 경로는 다음과 같습니다.

'/etc/vsftpd/vsftpd.conf'

 

위의 초록색으로 active가 정상적으로 된다면 여기서 바로 FTP를 사용해도 됩니다.

 

FTP 보안 설정에 대하여 알아보겠습니다.

 

FTP 설정 경로에는 아래와 같은 파일들이 존재합니다.

 

vsftpd 디렉터리 안의 파일

 

ftpusers는 파일안의 계정들은 접속이 불가합니다.

기본적으로 root가 포함 됩니다.

 

user_list는 ftpusers와 비슷합니다. 

 

vsftpd.conf는 FTP 설정 파일입니다.

 

해야할 보안 설정은 다음과 같습니다.

익명 계정접속 비허용

일반 계정은 자신의 디렉터리를 벗어나지 못함

일부 계정은 자신의 디렉터리를 벗어날 수도 있음

 

위와 같이 보안 설정을 하는 이유는

오픈된 FTP 라면 익명 계정을 허용시켜야하나 지금은 특정 사용자를 위한 FTP라 비허용했습니다.

일반 계정이 다른 디렉터리에 가서 다른 행동을 못하게 막아놓았습니다.

하지만 root 계정의 접속이 막혀있으므로 특정 사용자만이 상위 디렉터리로 이동이 가능하게 했습니다.

물론 특정 사용자가 root 권한을 가진 것은 아닙니다.

 

이외에도 상세하게 보안설정을 할 수 있으나 계정 설정 부분만 다루겠습니다.

 

'#> vi /etc/vsftpd/vsftpd.conf' // FTP 설정 파일 열기

 

12번 라인의 익명계정접속 허용 부분을 NO로 바꿉니다.

 

디폴트는 YES이다

 

101번, 102번, 104번 라인은 주석인 '#'을 제거합니다.

105번, 106번은 추가로 써줍니다.

 

#이 주석을 의미합니다.

 

다음은 '/etc/vsftpd' 밑에 chroot_list 파일을 생성합니다.

'#> touch chroot_list' 또는 '#> touch /etc/vsftpd/chroot_list'

두 명령어의 차이는 현재 디렉토리 위치에 따른 차이입니다.

 

chroot_list는 상위 디렉터리로 이동이 가능한 계정들의 목록입니다.

 

이제 테스트할 계정을 생성합니다.

하나는 일반 계정용인 test, 또 하나는 상위 디렉토리로 이동가능한 계정 test2입니다.

명령어는 다음과 같습니다.

 

'#> useradd test' // 계정 생성

'#> passwd test' // 비밀번호 생성

 

'#> useradd test2' // 계정 생성

'#> passwd test2' // 비밀번호 생성

 

useradd로 생성한 계정은 비밀번호가 없어 생성해 주어야 합니다.

 

vi 편집기로 chroot_list 파일을 열어 상위 디렉터리로 이동할 계정인 test2를 입력합니다.

'#> vi /etc/vsftpd/chroot_list'

 

chroot_list 안의 모습입니다. 보다시피 계정이름 말고 아무것도 없습니다.

계정을 입력하였다면 FTP를 재 시작합니다.

'#> systemctl restart vsftpd' // FTP 재 시작

 

이제 방화벽을 설정하겠습니다. FTP는 20번과 21번을 사용합니다.

방화벽에서 포트를 허용해야합니다. 

방화벽은 Cent OS 7의 기본 방화벽인 firewalld 대신에 iptables를 사용하겠습니다.

iptables 설정 파일 경로는 '/etc/sysconfig/iptables'입니다.

 

firewalld를 사용하여도 무방합니다.

위와 같이 20, 21번 포트를 허용했다면 iptables를 재 시작하여야 합니다.

'#> systemctl restart iptables' // 방화벽 재 시작

 

이제 FTP를 사용할 준비가 끝났습니다.

 

이제까지의 과정을 살펴보면 

vsftpd 설치

기본 보안 설정

방화벽 허용

여기까지가 FTP를 사용하기 위한 과정입니다.

 

FileZilla를 통해 FTP에 접속해보겠습니다.

 

좌측 상단 '파일(F)' -> '사이트 관리자(S)...'를 클릭합니다.

 

'New site'를 클릭하여 새 정보를 입력합니다.

 

이때 넣어주어야 할 정보는 접속할 IP, 사용자 계정 정보를 입력하면 됩니다.

이때는 일반 계정인 test를 입력하였습니다.

정보를 입력하고 '연결'을 누르면 접속이 됩니다.

 

정상적으로 접속이 된 모습입니다.

 

이때 접속이 안된다면 사이트 관리자에서 전송 설정을 하나씩 변경을 해보시면 됩니다.
이외의 오류는 오류 정보에 따라 조치가 달라집니다.

 

일반 계정인 test는 위의 파일명의 '..'을 더블클릭해보면 상위 디렉터리로 이동이 불가 합니다.

 

이번엔 상위 디렉터리로 이동 가능한 계정인 test2를 접속하여 보겠습니다.

 

상위 디렉터리로 이동이 가능한 모습이다.

 

여기까지 Cent OS 7에 FTP 서버 구축 및 보안 설정이였습니다.

 

긴 글 읽어주셔서 감사합니다.
오류나 틀린부분이 있으시면 댓글로 남겨주시면 감사하겠습니다.
여러분들과 같이 공부하는 공간이 되었으면 좋겠습니다.

반응형

댓글