Oracle_Unix_Server
Solaris 11.4에서 FTP 서비스 완벽 설정 가이드
kerasi
2025. 6. 23. 15:39
728x90
반응형
Solaris 11.4에서 FTP 서비스 완벽 설정 가이드
Solaris 11.4는 Oracle의 최신 Unix 운영체제로, 엔터프라이즈 환경에서 안정적인 파일 전송 서비스를 제공하기 위한 다양한 FTP 옵션을 제공합니다. 이 가이드에서는 Solaris 11.4에서 FTP 서비스를 설정하고 운영하는 방법을 자세히 알아보겠습니다.
Solaris 11.4 FTP 서비스 개요
Solaris 11.4는 ProFTPD를 기본 FTP 서비스로 사용합니다:
ProFTPD (기본 FTP 서버)
- Solaris 11.4의 표준 FTP 데몬
- 고급 기능을 제공하는 모듈형 FTP 서버
- 가상 호스트, SSL/TLS 지원, 고급 로깅
- 엔터프라이즈급 보안 및 성능 기능
in.ftpd (레거시 옵션)
- 이전 버전과의 호환성을 위해 제공
- 간단한 설정과 가벼운 리소스 사용
- 특별한 경우가 아니면 권장하지 않음
ProFTPD 기본 설정 (Solaris 11.4 표준)
서비스 활성화
# FTP 서비스 상태 확인
svcs -a | grep ftp
# ProFTPD 서비스 활성화
svcadm enable svc:/network/ftp:default
# 서비스 상태 확인
svcs ftp
기본 설정 파일
Solaris 11.4의 ProFTPD 설정은 다음 파일들을 통해 관리됩니다:
# 주요 설정 파일 위치
/etc/proftpd.conf # ProFTPD 메인 설정 파일
/etc/ftpd/ftpusers # FTP 접근 금지 사용자 목록
/var/log/proftpd.log # ProFTPD 로그 파일
ProFTPD 고급 설정
기본 proftpd.conf 설정
Solaris 11.4의 실제 기본 ProFTPD 설정 파일 내용:
# /etc/proftpd.conf 기본 설정
ServerName "FTP server"
ServerIdent off
ServerType standalone
DefaultServer on
Port 21
Umask 022
# DoS 공격 방지를 위한 최대 자식 프로세스 수 제한
# 30개 이상의 동시 연결이 필요한 경우 이 값을 증가시킬 수 있음
# 이는 standalone 모드에서만 작동하며, inetd 모드에서는
# xinetd와 같은 서비스별 프로세스 제한을 허용하는 inetd 서버를 사용해야 함
MaxInstances 30
# 서버가 실행될 사용자 및 그룹 설정
User ftp
Group ftp
# 일반적으로 파일을 덮어쓸 수 있도록 허용
AllowOverwrite on
# Oracle Solaris ZFS/VFS가 이미 충분한 캐싱을 제공하므로
# proftpd 파일 시스템 캐시를 비활성화
FSCachePolicy off
# 기본적으로 SITE CHMOD 사용을 차단
<Limit SITE_CHMOD>
DenyAll
</Limit>
# PAM을 인증의 최종 권한으로 설정
AuthOrder mod_auth_pam.c* mod_auth_unix.c
# 사용자 조회를 위해 시스템 라이브러리 사용
PersistentPasswd off
# Root 로그인은 명시적으로 활성화해야 함. 기본적으로 허용되지 않음
# 무엇을 하고 있는지 알고 있는 경우에만 허용
#RootLogin on
# 연결 시 표시할 메시지
DisplayConnect /etc/issue
주요 설정 항목 해설
기본 서버 설정
- ServerName: FTP 서버 이름 (클라이언트에게 표시)
- ServerIdent off: 서버 식별 정보 숨김 (보안 강화)
- ServerType standalone: 독립 실행형 서버로 동작
- Port 21: 표준 FTP 포트 사용
보안 관련 설정
- MaxInstances 30: 최대 30개의 동시 연결 허용 (DoS 공격 방지)
- User/Group ftp: FTP 서비스 실행 계정
- FSCachePolicy off: ZFS 캐싱과의 충돌 방지
- RootLogin 주석 처리: 루트 로그인 기본 차단
인증 설정
- AuthOrder: PAM 인증을 우선으로 설정
- PersistentPasswd off: 시스템 사용자 데이터베이스 사용
사용자 접근 제어
# ftpusers 파일 - FTP 접근 금지 사용자 (기본 위치)
echo "root" >> /etc/ftpd/ftpusers
echo "bin" >> /etc/ftpd/ftpusers
echo "daemon" >> /etc/ftpd/ftpusers
echo "sys" >> /etc/ftpd/ftpusers
# proftpd.conf에서 사용자 제한 설정 추가
cat >> /etc/proftpd.conf << 'EOF'
# 특정 사용자만 로그인 허용
<Limit LOGIN>
AllowUser ftpuser1
AllowUser ftpuser2
DenyAll
</Limit>
# 기본 홈 디렉토리 제한 (chroot)
DefaultRoot ~
# 유효한 쉘이 없는 사용자도 로그인 허용
RequireValidShell off
EOF
실제 적용 예시
기본 설정에 추가할 수 있는 일반적인 설정들:
# /etc/proftpd.conf에 추가 설정
cat >> /etc/proftpd.conf << 'EOF'
# 로깅 설정
SystemLog /var/log/proftpd.log
TransferLog /var/log/proftpd-xfer.log
# 타임아웃 설정
TimeoutIdle 600
TimeoutLogin 120
# 익명 FTP 설정 (선택사항)
<Anonymous /var/ftp>
User ftp
Group ftp
UserAlias anonymous ftp
RequireValidShell off
<Limit WRITE>
DenyAll
</Limit>
</Anonymous>
EOF
ProFTPD 서비스 관리
# ProFTPD 서비스 시작/중지/재시작
svcadm enable svc:/network/ftp:default # 서비스 시작
svcadm disable svc:/network/ftp:default # 서비스 중지
svcadm restart svc:/network/ftp:default # 서비스 재시작
# 설정 파일 문법 검사
proftpd -t
# ProFTPD 프로세스 확인
ps -ef | grep proftpd
# FTP 포트(21번) 상태 확인
netstat -an | grep 21
# 출력 예시 (Solaris 11.4):
# *.21 *.* 0 0 256000 0 LISTEN
# 위와 같이 LISTEN 상태로 표시되면 FTP 서비스가 정상적으로 실행 중
# 더 자세한 포트 확인
netstat -an | grep :21
# 또는 특정 프로토콜만 확인
netstat -tln | grep :21 # TCP 리스닝 포트만
연결 테스트
# 로컬에서 FTP 접속 테스트
ftp localhost
# 원격에서 연결 테스트 (telnet 사용)
telnet server_ip 21
# 정상 연결 시 다음과 같은 응답을 받게 됩니다:
# 220 FTP server ready.
보안 강화 설정
SSL/TLS 설정
# SSL 인증서 생성
openssl req -new -x509 -days 365 -nodes \
-out /etc/ssl/certs/proftpd.pem \
-keyout /etc/ssl/private/proftpd.key
# ProFTPD SSL 설정 추가
cat >> /etc/proftpd.conf << 'EOF'
# SSL/TLS 설정
<IfModule mod_tls.c>
TLSEngine on
TLSRequired on
TLSRSACertificateFile /etc/ssl/certs/proftpd.pem
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
TLSCipherSuite ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP:+eNULL
TLSOptions NoCertRequest
TLSVerifyClient off
TLSLog /var/log/proftpd-tls.log
</IfModule>
EOF
접속 제한 및 모니터링
# 동시 접속 제한
MaxInstances 30
MaxClientsPerHost 3
# 대역폭 제한 (KB/s)
TransferRate STOR 1000
TransferRate RETR 2000
# 타임아웃 설정
TimeoutIdle 600
TimeoutLogin 120
TimeoutStalled 3600
방화벽 설정
# FTP 포트 방화벽 규칙 추가
# 기본 FTP 포트 (21) 허용
firewall-cmd --permanent --add-service=ftp
firewall-cmd --reload
# 또는 특정 포트 허용
pfctl -f /etc/firewall/pf.conf
로깅 및 모니터링
로그 파일 위치
# 시스템 로그
/var/log/messages
/var/log/syslog
# FTP 특화 로그
/var/log/xferlog # 전송 로그
/var/log/ftpd.log # FTP 데몬 로그
로그 분석
# 최근 FTP 접속 확인
tail -f /var/log/xferlog
# 실패한 로그인 시도 확인
grep "FAILED LOGIN" /var/log/messages
# 파일 전송 통계
awk '{print $7}' /var/log/xferlog | sort | uniq -c | sort -nr
성능 튜닝
시스템 매개변수 조정
# TCP 버퍼 크기 조정
ndd -set /dev/tcp tcp_recv_hiwat 65536
ndd -set /dev/tcp tcp_xmit_hiwat 65536
# 동시 연결 수 제한
ndd -set /dev/tcp tcp_conn_req_max_q 1024
FTP 특화 최적화
# ftpaccess에 성능 관련 설정 추가
passive ports 2048 3048
throughput /var/ftp/incoming/* 8192 1024
문제 해결
일반적인 문제와 해결방법
연결 거부 문제
# 서비스 상태 확인
svcs -xv ftp
# FTP 포트(21번) 사용 확인
netstat -an | grep 21
# 포트 리스닝 상태 자세히 확인
netstat -an | grep 21
# 예상 출력 (Solaris 11.4):
# *.21 *.* 0 0 256000 0 LISTEN
# 만약 출력이 없다면 FTP 서비스가 시작되지 않은 것
# LISTEN 상태가 아니라면 서비스에 문제가 있는 것
# 방화벽 규칙 확인 (Solaris 11.4)
firewall-cmd --list-all
# 또는
ipfstat -io
권한 문제
# FTP 홈 디렉토리 권한 확인
ls -la /var/ftp/
# 사용자 FTP 권한 확인
finger username
로케일(언어 설정) 문제
# 현재 로케일 설정 확인
locale
# FTP 클라이언트 연결 시 한글 등 멀티바이트 문자로 인한 문제
# 예: 사용자명이나 디렉토리명에 한글이 포함된 경우
# 로케일 관련 환경변수 확인
echo $LANG
echo $LC_ALL
# UTF-8 로케일로 설정 (권장)
export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
# proftpd.conf에 문자셋 설정 추가
cat >> /etc/proftpd.conf << 'EOF'
# 문자셋 설정
UseEncoding UTF-8 EUC-KR
EOF
# 서비스 재시작 후 적용
svcadm restart svc:/network/ftp:default
성능 문제
# 시스템 리소스 확인
vmstat 1 5
iostat 1 5
# 네트워크 상태 확인
netstat -i
백업 및 복구
설정 파일 백업
# FTP 설정 백업 스크립트
#!/bin/bash
BACKUP_DIR="/backup/ftp-config-$(date +%Y%m%d)"
mkdir -p $BACKUP_DIR
# 설정 파일 백업
cp /etc/ftpd/* $BACKUP_DIR/
cp /etc/proftpd.conf $BACKUP_DIR/ 2>/dev/null
# 압축
tar -czf $BACKUP_DIR.tar.gz $BACKUP_DIR
rm -rf $BACKUP_DIR
echo "FTP configuration backed up to $BACKUP_DIR.tar.gz"
모범 사례
보안 모범 사례
- 루트 계정의 FTP 접근 금지
- 강력한 암호 정책 적용
- SSL/TLS 암호화 사용
- 정기적인 로그 모니터링
- 불필요한 사용자 계정 제거
- 적절한 로케일 설정 (UTF-8 권장)
성능 모범 사례
- 적절한 동시 연결 제한 설정
- 대역폭 제한을 통한 리소스 관리
- 정기적인 로그 파일 로테이션
- 시스템 리소스 모니터링
운영 모범 사례
- 정기적인 설정 백업
- 테스트 환경에서 설정 변경 사전 검증
- 문서화된 변경 관리 프로세스
- 재해 복구 계획 수립
- 다국어 환경 고려한 문자셋 설정
마무리
Solaris 11.4의 FTP 서비스는 전통적인 in.ftpd부터 고급 기능을 제공하는 ProFTPD까지 다양한 옵션을 제공합니다. 환경의 요구사항에 맞는 적절한 FTP 솔루션을 선택하고, 보안과 성능을 고려한 설정을 통해 안정적인 파일 전송 서비스를 구축할 수 있습니다.
중요한 것은 정기적인 모니터링과 보안 업데이트를 통해 FTP 서비스를 안전하게 운영하는 것입니다.
"이 포스팅은 쿠팡 파트너스 활동의 일환으로, 이에 따른 일정액의 수수료를 제공받습니다."
728x90