우분투에서 FTP 서버 설치 및 설정하기
FTP(File Transfer Protocol)는 서버와 클라이언트 간 파일을 전송하는 데 사용되는 오래된 프로토콜입니다. 이 글에서는 우분투(Ubuntu)에 **vsftpd(Very Secure FTP Daemon)**를 설치하고 설정하는 방법을 자세히 설명하겠습니다. 또한, Nginx 가상 호스팅 경로 설정까지 다뤄 FTP와 웹 서버를 통합하는 방법을 안내합니다.
1. vsftpd 설치
vsftpd는 경량이면서도 보안성이 높은 FTP 서버 소프트웨어입니다. 아래 명령어로 설치를 시작합니다.
sudo apt update
sudo apt install vsftpd -y
설치가 완료되면, vsftpd 서비스가 자동으로 시작됩니다.
sudo systemctl status vsftpd
출력 결과에서 active (running) 상태인지 확인합니다. 이 상태라면 FTP 서버가 정상적으로 실행되고 있는 것입니다.
2. vsftpd 기본 설정
설정 파일을 열어 서버 동작 방식을 구성합니다.
sudo nano /etc/vsftpd.conf
다음 항목들을 수정하거나 추가하세요:
# 익명 사용자 접속 비활성화
anonymous_enable=NO
# 로컬 사용자 접속 허용
local_enable=YES
# 파일 업로드 허용
write_enable=YES
# 로컬 사용자의 루트 디렉토리 설정 (필요 시 변경 가능)
local_root=/var/www/ftp
# SSL/TLS 비활성화 (테스트용으로만 사용)
ssl_enable=NO
설정을 저장한 후 파일을 닫습니다.
Ctrl + O # 저장
Ctrl + X # 종료
3. FTP서버 디렉토리구성
FTP 서버가 사용할 디렉토리를 생성하고 적절한 권한을 설정합니다. 여기서는 /var/www/ftp를 FTP 서버의 루트 디렉토리로 사용합니다.
sudo mkdir -p /var/www/ftp/upload
# 업로드 디렉토리에 쓰기 권한 부여
sudo chmod 730 /var/www/ftp/upload
sudo chown nobody:nogroup /var/www/ftp/upload
- /var/www/ftp 디렉토리는 읽기 전용으로 설정됩니다.
- /var/www/ftp/upload 디렉토리만 쓰기가 허용됩니다.
4. vsftpd 서비스 재시작
변경된 설정을 적용하려면 vsftpd 서비스를 다시 시작합니다.
sudo systemctl restart vsftpd
5. 방화벽 설정 (UFW 사용 시)
우분투 방화벽(UFW)을 활성화한 경우 FTP 포트를 허용해야 합니다.
# FTP 기본 포트 허용
sudo ufw allow 20/tcp
sudo ufw allow 21/tcp
# 방화벽 상태 확인
sudo ufw status
6. FTP 서버 테스트
FTP 클라이언트를 사용하여 서버에 접속할 수 있습니다. FileZilla와 같은 GUI 기반 클라이언트 또는 명령줄 FTP 도구를 사용할 수 있습니다.
- 호스트: 서버의 IP 주소
- 사용자 이름: 우분투 사용자 계정 이름
- 비밀번호: 우분투 사용자 계정 비밀번호
FileZilla를 사용하는 경우 다음 정보를 입력합니다:
- 호스트: ftp://<서버_IP>
- 포트: 21
- 프로토콜: FTP - 파일 전송 프로토콜
7. Nginx와의 통합 (가상 호스팅 설정)
FTP를 통해 업로드된 파일을 Nginx 웹 서버에서 제공하려면 가상 호스팅을 설정해야 합니다.
- Nginx 설치
sudo apt install nginx -y
- 가상 호스팅 파일 생성
Nginx 가상 호스트 설정 파일을 생성합니다.
sudo nano /etc/nginx/sites-available/ftp_site
다음 내용을 추가합니다:
server {
listen 80;
server_name ftp.example.com;
root /var/www/ftp;
index index.html index.htm;
location / {
autoindex on;
autoindex_exact_size off;
autoindex_localtime on;
}
}
- 심볼릭 링크 생성 및 Nginx 재시작
가상 호스팅 설정 파일을 활성화합니다.
sudo ln -s /etc/nginx/sites-available/ftp_site /etc/nginx/sites-enabled/
# 설정 테스트
sudo nginx -t
# Nginx 재시작
sudo systemctl restart nginx
- 테스트
웹 브라우저에서 http://ftp.example.com으로 접속하여 FTP 디렉토리의 파일 목록이 표시되는지 확인합니다.
8. 보안 강화 (선택 사항)
FTP는 기본적으로 암호화되지 않아 보안이 취약할 수 있습니다. 다음과 같은 방법으로 보안을 강화할 수 있습니다:
- SFTP 사용
SFTP는 SSH 프로토콜을 사용하여 데이터를 암호화합니다. 별도의 설정 없이 SSH 서버만 활성화하면 사용할 수 있습니다.
sftp username@server_ip
- SSL/TLS 활성화
vsftpd에서 SSL/TLS를 활성화하여 FTP 트래픽을 암호화할 수도 있습니다. 추가 설정이 필요하다면 요청해주세요.
이 가이드를 따라 우분투에서 FTP 서버를 성공적으로 설정하고, Nginx를 통해 파일을 웹에서 제공할 수 있습니다. 보안을 강화하기 위해 SFTP 또는 SSL/TLS를 사용하는 것을 권장합니다. 추가적으로 궁금한 점이 있다면 댓글로 남겨주세요!
'운영체제 (OS) > 리눅스 (Linux)' 카테고리의 다른 글
리눅스 서버 구축, 따라 하면 완성되는 설정법 (1) | 2025.01.31 |
---|---|
우분투 22.04 LTS 설치 후 꼭 해야 할 기본 설정 (1) | 2025.01.29 |
우분투에서 PHP 설치 및 Apache 연동 방법 완벽 가이드 (1) | 2025.01.28 |
[PHP 설정 가이드] PHP-FPM 완벽 설정 방법 (0) | 2025.01.28 |
우분투에서 MySQL/MariaDB 완벽 설치 및 설정 가이드 (1) | 2025.01.28 |