1. 설치 전 준비 및 패키지 설치
가장 먼저 시스템의 패키지 목록을 최신 상태로 업데이트한 뒤, vsftpd 패키지를 설치합니다. 터미널(Ctrl + Alt + T)을 열고 아래 명령어를 순서대로 입력해 주세요.
# 1. 패키지 목록 업데이트
sudo apt update
# 2. vsftpd 설치
sudo apt install vsftpd -y
설치가 완료되면 vsftpd 서비스가 시스템 백그라운드에서 자동으로 작동하기 시작합니다. 아래 명령어로 작동 상태가 active (running)인지 확인할 수 있습니다.
sudo systemctl status vsftpd
2. 기본 및 보안 설정 (vsftpd.conf)
설정 파일을 수정하기 전, 잘못된 입력으로 작동이 멈추는 상황을 대비해 기존 원본 파일을 반드시 백업해 둡니다.
# 원본 설정 파일 백업
sudo cp /etc/vsftpd.conf /etc/vsftpd.conf.bak
이제 텍스트 편집기(nano)를 사용해 본격적인 환경 설정을 시작해 보겠습니다.
sudo nano /etc/vsftpd.conf
🔒 핵심 보안 및 기본 설정 수정 항목
파일이 열리면 다음 항목들을 찾아서 요구사항에 맞게 수정합니다. (기존 줄의 맨 앞에 주석 기호인 #이 있다면 지워서 활성화해 주세요. 만약 해당 항목이 파일에 존재하지 않는다면 파일 맨 아래에 추가하면 됩니다.)
- 익명 사용자 접속 차단:
anonymous_enable=NO - 로컬 사용자 접속 허용:
local_enable=YES - 쓰기 권한 활성화 (파일 업로드 허용):
write_enable=YES - 사용자 홈 디렉토리 격리 (chroot): 사용자가 본인의 홈 디렉토리 상위 폴더(시스템 주요 영역)를 탐색하지 못하도록 격리합니다.
chroot_local_user=YES allow_writeable_chroot=YES
⚠️ 보안 주의사항 (allow_writeable_chroot=YES)
chroot_local_user=YES옵션만 적용했을 때, 사용자의 홈 디렉토리에 쓰기 권한이 남아 있으면 vsftpd가 보안 취약점을 염려해 접속을 전면 차단(500 OOPS 에러)해 버립니다. 이를 정상적이고 안전하게 해결하기 위해allow_writeable_chroot=YES옵션을 꼭 함께 기재해 주셔야 합니다.
수정이 완료되었다면 Ctrl + O를 누른 뒤 엔터를 쳐서 저장하고, Ctrl + X를 눌러 편집기를 빠져나옵니다.
3. SSL/TLS 암호화 적용 (FTPS 설정)
비밀번호와 데이터를 패킷 가로채기(Sniffing) 공격으로부터 보호하기 위해 자가 서명(Self-signed) 인증서를 생성하고 이를 FTP 서버에 바인딩합니다.
🔑 3-1. SSL 인증서 생성
다음 명령어를 입력하여 90일 동안 유효한 RSA 2048비트 개인키와 인증서를 생성합니다. (입력 시 중간에 국가코드나 조직명을 묻는 질문은 엔터를 쳐서 기본값으로 빠르게 생략해도 무방합니다.)
sudo openssl req -x509 -nodes -days 90 -newkey rsa:2048 -keyout /etc/ssl/private/vsftpd.pem -out /etc/ssl/private/vsftpd.pem
⚙️ 3-2. vsftpd 설정 파일에 SSL 적용
다시 설정 파일을 열어 생성한 인증서 정보를 입력해 줍니다.
sudo nano /etc/vsftpd.conf
파일 맨 아래로 이동하여 다음 텍스트를 그대로 복사하여 붙여넣어 줍니다. 만약 기존 파일에 rsa_cert_file 관련 항목이 있다면 지우거나 주석 처리해 주세요.
# SSL/TLS 활성화
ssl_enable=YES
allow_anon_ssl=NO
force_local_data_ssl=YES
force_local_logins_ssl=YES
# 인증서 경로 지정
rsa_cert_file=/etc/ssl/private/vsftpd.pem
rsa_private_key_file=/etc/ssl/private/vsftpd.pem
# 프로토콜 및 암호화 수준 설정 (보안상 TLS만 허용)
ssl_tlsv1=YES
ssl_sslv2=NO
ssl_sslv3=NO
require_ssl_reuse=NO
ssl_ciphers=HIGH
# 패시브 모드 포트 범위 지정 (방화벽 연결용)
pasv_min_port=40000
pasv_max_port=50000
동일하게 저장(Ctrl + O -> 엔터) 후 종료(Ctrl + X)합니다.
4. 방화벽 (UFW) 설정
리눅스 민트의 기본 방화벽인 UFW가 작동 중이라면 외부 컴퓨터에서 접속할 수 없습니다. FTP 기본 명령 전송 포트와 방금 지정한 패시브 포트 범위를 허용해야 합니다.
# 1. FTP 기본 명령 포트(21) 및 데이터 포트(20) 허용
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
# 2. 패시브 모드 포트 범위(40000~50000) 허용
sudo ufw allow 40000:50000/tcp
# 3. 방화벽 규칙 적용 및 확인
sudo ufw reload
sudo ufw status
5. 서비스 실행 및 접속 테스트
🔄 5-1. 서비스 재시작 및 자동 실행 등록
모든 설정을 반영하기 위해 vsftpd 서비스를 완전히 재시작하고, 컴퓨터가 재부팅되더라도 자동으로 실행되도록 설정합니다.
# 서비스 재시작
sudo systemctl restart vsftpd
# 부팅 시 자동 시작 등록
sudo systemctl enable vsftpd
🧪 5-2. 접속 테스트 방법
우리는 강력한 보안 설정(FTPS)을 적용했기 때문에 브라우저나 터미널의 단순 ftp 명령어로는 로그인이 차단될 수 있습니다. 검증된 오픈소스 FTP 프로그램인 FileZilla(파일질라)를 활용해 연결해 보세요.
- PC에 FileZilla를 다운로드한 뒤 실행합니다.
- 좌측 상단의 [파일] -> [사이트 관리자]로 이동합니다.
- 새 사이트를 추가하고 아래 옵션들을 대입해 줍니다.
- 프로토콜: FTP - 파일 전송 프로토콜
- 호스트: 리눅스 민트 서버의 IP 주소
- 암호화: 구조적 TLS를 통한 명시적 FTP 필요 (Explicit FTP over TLS)
- 로그온 유형: 일반
- 사용자/비밀번호: 리눅스 민트의 실제 로그인 계정
- 연결을 누르면 '알 수 없는 인증서' 팝업 경고가 나타납니다. 직접 생성한 자가 서명 인증서이므로 [항상 이 인증서 신뢰]에 체크하고 확인을 누르면 정상적으로 연결됩니다.
댓글 0
| 번호 | 제목 | 글쓴이 | 날짜 | 조회 수 |
|---|---|---|---|---|
| » | 리눅스 민트 FTP 서버(vsftpd) 설치 및 SSL/TLS 보안 설정 방법 | 샤두 | 2026.07.17 | 12 |