본문 바로가기
서버구축 (WEB,DB)

ProFTPD 기반 SFTP 전용 서버 구성 보안 설정 및 최적화 관리

by 날으는물고기 2025. 1. 18.

ProFTPD 기반 SFTP 전용 서버 구성 보안 설정 및 최적화 관리

ProFTPD를 통해 SFTP 전용 서비스를 구성하려면 기본적인 설치부터 권한 관리, 로그 기록 및 모니터링까지 신경 써야 할 부분이 많습니다.

1. ProFTPD 설치 및 모듈 활성화

1.1 ProFTPD 설치

ProFTPD와 SFTP를 지원하는 mod_sftp 모듈을 설치해야 합니다.

sudo apt-get update
sudo apt-get install proftpd proftpd-mod-sftp

이 명령어는 ProFTPD와 SFTP 모듈을 설치합니다. mod_sftp 모듈은 SFTP 기능을 활성화하는 데 필요합니다.

1.2 서비스 활성화 확인

설치가 완료되면 ProFTPD 서비스가 정상적으로 설치되었는지 확인합니다.

sudo systemctl status proftpd

2. ProFTPD 설정 파일 구성

설정 파일에서 SFTP 기능을 활성화하고 FTP 기능은 비활성화하도록 설정을 변경합니다.

2.1 기본 설정 파일 열기

ProFTPD 설정 파일은 일반적으로 /etc/proftpd/proftpd.conf에 위치합니다. 해당 파일을 편집합니다.

sudo nano /etc/proftpd/proftpd.conf

2.2 SFTP 전용 서비스 설정

FTP 포트를 비활성화하고 SFTP 포트(일반적으로 22번)를 활성화하도록 설정합니다.

# FTP 비활성화
Port 0

# SFTP 설정
<IfModule mod_sftp.c>
    SFTPEngine on
    Port 22
    SFTPLog /var/log/proftpd/sftp.log
    SFTPHostKey /etc/ssh/ssh_host_rsa_key
    SFTPHostKey /etc/ssh/ssh_host_dsa_key
    SFTPAuthMethods password
    SFTPCompression delayed
</IfModule>

# 기본 홈 디렉터리와 루트 설정
<Global>
    DefaultRoot ~
    RequireValidShell off
</Global>

Port 0을 설정함으로써 FTP 서비스가 비활성화됩니다. mod_sftp.c 모듈을 통해 SFTP가 활성화되고, 로그 파일 경로 및 SFTP 키를 지정합니다. 키 파일은 기본적으로 /etc/ssh/ 경로에 위치한 SSH 키를 사용합니다.

2.3 사용자 제한 및 권한 설정

ProFTPD는 특정 사용자만 SFTP를 사용할 수 있도록 권한을 제어할 수 있습니다.

# 특정 그룹만 SFTP 사용 허용
<Limit LOGIN>
    AllowGroup sftpusers
    DenyAll
</Limit>

위와 같이 설정하면 sftpusers 그룹에 속한 사용자만 SFTP 접속이 가능합니다.

3. SFTP 사용자 및 그룹 설정

3.1 사용자 생성

SFTP 서비스를 사용할 사용자를 생성합니다.

sudo adduser sftpuser

3.2 그룹 생성 및 사용자 할당

SFTP 전용 그룹을 생성하고 해당 사용자에게 할당합니다.

sudo groupadd sftpusers
sudo usermod -aG sftpusers sftpuser

이렇게 하면 sftpusersftpusers 그룹에 속하게 되어 SFTP 접속이 가능합니다.

4. 로그 기록 및 모니터링

4.1 로그 설정

ProFTPD는 SFTP 서비스에 대한 로그를 남길 수 있으며, 이를 통해 모니터링할 수 있습니다. 기본적으로 SFTP 로그는 /var/log/proftpd/sftp.log에 기록되며, 설정 파일에서 변경할 수 있습니다.

 

설정 파일에 추가로 로그 기록에 대한 설정을 넣을 수 있습니다.

# 자세한 로그 기록
LogFormat sftp "%h %l %u %t \"%r\" %s %b"
ExtendedLog /var/log/proftpd/sftp_access.log sftp

4.2 실시간 모니터링

로그 파일을 실시간으로 모니터링하려면 tail 명령을 사용합니다.

sudo tail -f /var/log/proftpd/sftp.log

이 명령어는 SFTP 관련 로그를 실시간으로 모니터링하는 데 유용합니다.

5. 서비스 시작 및 확인

설정이 완료되면 ProFTPD 서비스를 재시작합니다.

sudo systemctl restart proftpd

서비스가 정상적으로 시작되었는지 확인합니다.

sudo systemctl status proftpd

또한, ss 또는 netstat 명령어를 사용하여 22번 포트가 열려 있는지 확인할 수 있습니다.

sudo ss -tuln | grep 22

6. SFTP 접속 테스트

최종적으로, SFTP 클라이언트를 사용하여 서버에 접속할 수 있는지 테스트합니다.

sftp sftpuser@your_server_ip

비밀번호를 입력하면 SFTP 세션이 시작됩니다. 접속이 안 될 경우, 방화벽이나 설정 오류를 점검해야 합니다.

요약

  1. ProFTPD 설치 및 SFTP 모듈 활성화: ProFTPD 설치 후 mod_sftp를 활성화하여 SFTP 서비스를 사용할 수 있습니다.
  2. FTP 비활성화 및 SFTP 전용 설정: FTP 서비스를 비활성화하고 SFTP만 사용하도록 설정 파일을 구성합니다.
  3. 사용자 및 그룹 관리: SFTP를 사용할 사용자와 그룹을 생성하고 권한을 설정합니다.
  4. 로그 기록 및 모니터링: SFTP 관련 활동을 로그 파일에 기록하고 실시간으로 모니터링합니다.

이 과정으로 ProFTPD를 이용해 SFTP 전용 서비스를 제공할 수 있습니다. 추가적으로 보안 강화를 위해 UFW나 다른 방화벽 규칙을 설정하거나 Fail2ban 같은 도구로 SFTP에 대한 공격 방어를 강화할 수 있습니다.

추가 보완 및 팁

  1. SSH 키 기반 인증 설정
    비밀번호 인증보다 보안이 강화된 SSH 키 기반 인증을 사용할 것을 권장합니다.
    • SFTPAuthMethodspublickey로 설정하고, 클라이언트의 공개 키를 /home/sftpuser/.ssh/authorized_keys에 추가하면 됩니다.
    • 설정 파일
      SFTPAuthMethods publickey
    • 사용자 홈 디렉토리 설정
      mkdir -p /home/sftpuser/.ssh
      chmod 700 /home/sftpuser/.ssh
      touch /home/sftpuser/.ssh/authorized_keys
      chmod 600 /home/sftpuser/.ssh/authorized_keys
      chown -R sftpuser:sftpuser /home/sftpuser/.ssh
  2. SFTP 사용자 격리 (Chroot Jail)
    기본적으로 ProFTPD의 DefaultRoot ~ 설정은 사용자의 홈 디렉토리를 루트로 설정합니다. 이외에 특정 디렉토리로 격리할 수도 있습니다.
    • 특정 디렉토리
      <Directory /sftp-data>
          <Limit WRITE>
              DenyAll
          </Limit>
      </Directory>
  3. 권한 강화
    • 디렉토리 및 파일 권한을 확인하여 불필요한 쓰기 권한이 부여되지 않도록 설정합니다.
    • 예:
      chmod 750 /sftp-data
      chown root:sftpusers /sftp-data
  4. 로그 회전 설정
    SFTP 로그 파일이 계속 증가하면 시스템에 부담을 줄 수 있으므로 logrotate 설정을 추가하여 관리합니다.
    • /etc/logrotate.d/proftpd 파일에 다음 내용을 추가
      /var/log/proftpd/*.log {
          daily
          missingok
          rotate 14
          compress
          delaycompress
          notifempty
          create 640 root adm
      }
  5. 방화벽 설정(UFW)
    SFTP 포트(기본 22)를 허용하고 불필요한 포트는 차단하여 보안을 강화합니다.
    • UFW 설정
      sudo ufw allow 22/tcp
      sudo ufw enable
  6. Fail2ban 설정
    비정상적인 SFTP 접근 시도를 차단하기 위해 Fail2ban을 설정합니다.
    • jail.local 파일에 아래 내용을 추가
      [proftpd]
      enabled = true
      port = 22
      filter = proftpd
      logpath = /var/log/proftpd/sftp.log
      maxretry = 3
      bantime = 600

점검 체크리스트

  1. 서비스가 정상적으로 작동하고 있는지 확인: sudo systemctl status proftpd
  2. 로그에서 오류 여부 확인: sudo tail -f /var/log/proftpd/sftp.log
  3. 방화벽 설정 확인: sudo ufw status
  4. 포트 개방 상태 확인: sudo ss -tuln | grep 22
  5. SFTP 접속 테스트: sftp -oPort=22 sftpuser@your_server_ip

위 내용을 적용하면 보안성과 신뢰성을 높이면서 ProFTPD 기반의 SFTP 전용 서비스를 안정적으로 운영할 수 있을 것입니다.

728x90

댓글