- ProFTPd는 모듈식으로 설계되었으며 유연성이 뛰어난 Linux 및 Unix용 FTP 서버로, 권한 및 사용자에 대한 세부적인 제어가 필요한 환경에 이상적입니다.
- 설정은 proftpd.conf 파일에 중점을 두고 있으며, 이 파일에는 디렉터리, 액세스 정책, 사용자, 수동 모드 및 고급 옵션이 정의됩니다.
- 자체 인증서를 사용하여 TLS(FTPES)를 사용하면 자격 증명과 데이터를 암호화하여 서버 보안을 크게 강화할 수 있습니다.
- 방화벽, 로그, 연결 제한을 적절히 관리하고 일반적인 오류를 해결하는 것은 안정적이고 안전한 서비스를 유지하는 데 핵심입니다.
리눅스 서버를 사용하고 웹 프로젝트 또는 기업 환경을 관리하는 경우, 조만간 특정 도구가 필요하게 될 것입니다. 강력하고 안전하며 유연한 FTP 서버바로 이 부분에서 ProFTPd가 진가를 발휘합니다. 시스템에 누가 어디서 접근할 수 있는지, 무엇을 할 수 있는지, 그리고 각 전송이 어떻게 암호화되는지까지 세부적으로 제어할 수 있도록 해줍니다.
이 가이드 전체를 통해 단계별 방법을 확인할 수 있습니다. Linux에 ProFTPd를 설치, 구성 및 보안 강화이 과정에서는 시스템 및 가상 사용자 생성, 디렉터리 제한, 익명 액세스, TLS 1.2 및 1.3을 사용한 FTPS/FTPES, 관리 명령, 일반적인 오류 해결 방법, 그리고 vsftpd 또는 pure-ftpd와 같은 다른 대안과의 비교 등을 다룹니다. 최종 목표는 보안 걱정 없이 바로 운영 가능한 FTP 서버를 구축하는 것입니다.
ProFTPd란 무엇이며, 리눅스에서 왜 그렇게 널리 사용되는 걸까요?
ProFTPd는 오픈 소스 FTP 서버입니다.이 소프트웨어는 크로스 플랫폼을 지원하며, 지시문과 설정 블록을 기반으로 하는 Apache와 매우 유사한 구성 방식을 가지고 있습니다. 대부분의 Linux 및 Unix 배포판(Debian, Ubuntu, CentOS, FreeBSD, NAS 시스템 등)에서 사용할 수 있으며, 다음과 같은 특징을 지닙니다. 모듈식 설계와 뛰어난 유연성.
두 가지 모드 모두에서 작동합니다. 독립형(독립 서버) 통합됨 inetd/xinetd이를 통해 트래픽이 적은 환경이나 수백 개의 동시 연결이 있는 서버에도 적용할 수 있습니다. 중앙 아카이브는 다음과 같습니다. /etc/proftpd/proftpd.conf 거의 모든 설정을 중앙 집중화하며, 디렉터리 기반 파일도 사용할 수 있습니다. .ftpaccess 철학적으로 매우 유사한 htaccess로 아파치.
FTP 프로토콜 자체는 다음을 사용합니다. 클라이언트-서버 아키텍처 기본적으로 제어 채널에는 TCP 포트 21이 사용됩니다. 데이터 채널의 경우 액티브 모드(구형 방식이며 NAT 환경에서 여러 문제가 발생함) 또는 수동 모드(PASV)요즘은 이게 일반적이죠. ProFTPd를 사용하면 정의할 수 있습니다. 패시브 포트 범위 및 가장무도회 주소 라우터와 방화벽 뒤에서 제대로 작동하려면 현대 네트워크에서 매우 중요합니다.
또한 해당 모듈이 기본 사양으로 포함되어 있습니다. mod_tls덕분에 당신은 들어 올릴 수 있습니다 FTPES 서버(TLS를 통한 명시적 FTP) 자격 증명과 데이터를 모두 암호화합니다. TLS 1.2 또는 TLS 1.3최신 암호화 스위트(예: AES-256-GCM)와 이를 지원하는 CPU를 사용하면 AES-NI성능이 매우 뛰어나고 암호화의 영향이 크게 줄어듭니다.
ProFTPd가 다른 FTP 서버에 비해 갖는 주요 이점
ProFTPd가 여전히 널리 사용되는 이유 중 하나는 여러 기능을 통합하기 때문입니다. 강력한 성능, 세밀한 제어 및 우수한 성능가장 간단한 방법은 아니지만, 가장 완벽한 방법 중 하나입니다.
우선, 그것은 다음과 같은 특징을 가지고 있습니다. 단일하고 고도로 구조화된 주요 구성 파일이전에 Apache를 사용해 본 경험이 있다면 매우 익숙한 지시문과 블록으로 구성되어 있습니다. 따라서 지시문 기반 웹 서버에 이미 익숙한 사용자에게는 학습 곡선이 더 완만합니다.
모듈식 설계 덕분에 필요한 구성 요소만 장착할 수 있습니다. 다음과 같은 모듈이 있습니다. SQL, LDAPRADIUS, IPv6, TLS/SSL, 할당량, 가상 사용자 그 외에도 훨씬 더 많은 기능을 제공합니다. 이를 통해 간단한 가정용 FTP 서버부터 수백 명의 사용자와 다양한 정책을 가진 여러 회사가 공동으로 사용하는 플랫폼까지 무엇이든 설정할 수 있습니다.
또한 중요합니다 권한이 없는 사용자도 실행할 수 있습니다. 유닉스와 유사한 방식으로 디렉터리와 권한을 격리합니다. 메인 프로세스가 엄격히 필요한 범위를 넘어서는 루트 권한을 갖지 않도록 함으로써, 공격 표면 및 잠재적 익스플로잇의 영향.
또 다른 흥미로운 점은 다음과 같습니다. 익명 디렉토리 엄격한 구조나 시스템 바이너리가 필요하지 않습니다. 게다가, SITE EXEC와 같은 명령어를 구현하지 않습니다.한때 널리 사용되었지만 지금은 보안상의 골칫거리로 여겨집니다.
성능, 안정성, 보안 및 확장성
파일 전송 서버에서는 단순히 "작동"하는 것만으로는 충분하지 않습니다. 제대로 작동해야 합니다. 부하가 걸린 상태에서도 빠르고 안정적이며 안전합니다.ProFTPd는 바로 그러한 목적으로 설계되었습니다.
속도 면에서 보면 그렇습니다. 대용량 파일 전송에 최적화되어 있습니다. 또한 여러 동시 연결을 관리할 수 있습니다. 이것이 바로 이 기능이 많이 사용되는 이유입니다. 교통량이 많은 환경에서 데이터 센터소프트웨어 저장소 및 공유 웹 호스팅.
안정성 측면에서 ProFTPd는 다음과 같은 특징을 가지고 있는 것으로 알려져 있습니다. 상당히 오류 허용성이 높음특정 문제(네트워크 오류, 정전 등)가 발생할 경우, 일반적으로 빨리 회복하세요이는 특히 중단이 시간과 비용 손실로 이어지는 중요한 서비스의 경우 더욱 중요합니다.
보안 측면에서 순수 FTP는 아무것도 암호화하지 않지만, ProFTPd는 다음과 같은 기능을 제공합니다. 서비스 강화를 위한 다양한 메커니즘사용자 및 그룹 기반 인증, 상세 활동 로그, IP 또는 네트워크 접근 제어, 연결 제한, TLS/SSL 통합, 권한 없는 사용자 실행 및 지원 격리된 경로 및 권한을 가진 가상 사용자.
또한 그것은 다음과 같은 점에서도 두드러집니다. 뛰어난 확장 성하드웨어 사양이 충분하다면, 이 시스템은 수많은 동시 접속과 사용자를 문제없이 처리할 수 있습니다. 모듈식 아키텍처 덕분에 전체 인프라를 재구축하지 않고도 기능을 확장할 수 있습니다(예: SQL 또는 LDAP를 통한 인증 추가).
ProFTPd의 단점 및 고려 사항
모든 것이 완벽하지는 않다는 것을 아는 것이 도움이 됩니다. 약점 또는 가장 흔한 단점 ProFTPd에서 그를 보고 큰 프로젝트에 투자하기로 결정했습니다.
첫 번째 측면은 다음과 같습니다. 구성 복잡성만약 더 간단한 서버를 사용해봤거나 리눅스 서비스 경험이 전혀 없다면, ProFTPd는 처음에는 다소 어렵게 느껴질 수 있습니다. 불가능한 것은 아니지만, 처음에는 좋은 튜토리얼을 따라하고 구문을 꼼꼼히 검토하여 사소한 실수를 피하는 것이 좋습니다.
또한 다음 사항을 기억하는 것도 중요합니다. 설정이 잘못된 FTP 서버는 공격의 쉬운 표적이 될 수 있습니다.이는 ProFTPd 자체의 문제가 아니라, 너무 많은 포트를 열어두거나, 통제되지 않은 익명 접속을 허용하거나, 연결을 암호화하지 않거나, 디스크 권한을 확인하지 않는 등의 문제 때문입니다. 무엇을 해야 할지 잘 모르겠다면, 보수적인 접근 방식을 취하고 꼭 필요한 경우에만 포트를 여는 것이 좋습니다.
또 다른 논쟁거리는 다음과 같습니다. ProFTPd는 일반적으로 더 많은 리소스를 소비합니다. vsftpd와 같은 다른 최소형 서버보다, 특히 여러 모듈을 로드하고 TLS를 집중적으로 사용할 때 성능이 더 떨어집니다. 하드웨어 사양이 매우 제한적인 환경에서는 구성을 세밀하게 조정하거나 더 가벼운 대안을 고려하는 것이 좋습니다.
또한 최신 버전이 아주 오래된 시스템과 항상 호환되는 것은 아닙니다.기존 서버를 계속 관리하는 경우 이전 버전만 사용할 수 있거나 적절한 옵션을 사용하여 소프트웨어를 직접 컴파일해야 할 수 있습니다.
상용 솔루션과는 달리, 다음과 같은 사항이 없습니다. 보장된 SLA가 포함된 공식 지원활발한 커뮤니티, 풍부한 문서 및 포럼을 접할 수 있지만, 설치 및 보안에 대한 최종 책임은 사용자에게 있습니다.
Linux에서 ProFTPd 설치 과정
대부분의 배포판에 ProFTPd를 설치하는 것은 상당히 간단합니다. 공식 저장소에서 찾을 수 있습니다.두 가지 옵션이 있습니다. 패키지 관리자를 사용하거나 소스 코드에서 컴파일하는 것입니다(요즘에는 흔하지 않은 방법입니다).
데비안 또는 우분투 기반 시스템에서는 터미널에서 다음 명령어를 실행하기만 하면 됩니다.
sudo apt install proftpd
일부 배포판(예: 구형 데비안 시스템)에서는 다음과 같이 볼 수 있습니다. 프로프트피드-기본이 경우 명령어는 다음과 같습니다.
sudo apt-get install proftpd-basic
CentOS 또는 RHEL 환경에서는 일반적으로 먼저 EPEL 저장소를 활성화한 다음 설치해야 합니다.
sudo yum 설치 epel 릴리스
sudo yum install proftpd
독립 실행형 또는 inetd: 실행 모드를 선택하세요
설치 과정에서 많은 배포판은 ProFTPd를 특정 사용자 권한으로 실행할지 묻습니다. 독립형 서버 또는 통합 inetd/xinetd이건 사소한 문제가 아닙니다.
만약 당신이 기대한다면 연결 수 감소 FTP를 아주 드물게 사용하는 경우에는 요청이 있을 때만 서비스를 시작하는 inetd/xinetd를 선택할 수 있습니다. 이렇게 하면 사용하지 않을 때 RAM과 CPU 사용량을 줄일 수 있습니다.
반면에, 당신의 목표가 구축하는 것이라면 다수의 사용자와 지속적인 트래픽이 있는 FTP 서버가장 논리적인 방법은 선택하는 것입니다. 독립이렇게 하면 ProFTPd 데몬이 메모리에 상주하면서 모든 연결을 직접 관리하고 부하가 걸렸을 때 더 나은 응답성을 제공합니다.
이 선택 사항은 나중에 해당 설정을 수정하여 변경할 수 있지만, 대부분의 실제 운영 환경에서는 다음과 같은 방식이 일반적입니다. 처음부터 독립 실행형 버전을 사용하세요.
서비스 시작, 중지 및 제어: SysVinit 및 systemd
설치가 완료되면 다음 사항을 숙지해야 합니다. 기본 서비스 관리 명령배포판에 따라 기존의 SysVinit 또는 systemd를 사용할 수 있습니다.
SysVinit이 설치된 시스템에서는 다음 명령으로 서버를 시작할 수 있습니다.
/etc/init.d/proftpd 시작
서비스 proftpd 시작
이를 막으려면:
/etc/init.d/proftpd 정지
서비스 프로프트PD 중지
설정 변경 후 다시 시작하려면 다음과 같이 하세요.
/etc/init.d/proftpd 재시작
서비스 proftpd 재시작
시스템이 systemd(오늘날 가장 일반적인 방식)를 사용하는 경우 명령어는 다음과 같습니다.
systemctl start proftpd
systemctl stop proftpd
systemctl restart proftpd
설정 파일만 수정하고 연결을 끊지 않고 다시 로드하려면 다음 옵션을 사용하십시오. 장전:
서비스 proftpd 재로드
systemctl reload proftpd
서비스 상태를 확인하려면 다음을 참조하세요.
서비스 proftpd 상태 o /etc/init.d/proftpd 상태 SysVinit에서, 그리고 systemctl 상태 proftpd systemd에서는 문제가 발생했을 경우 최근 오류 메시지도 확인할 수 있습니다.
시스템 시작 시 ProFTPd를 활성화합니다.
일반적으로 ProFTPd를 설치할 때는 다음과 같이 구성됩니다. 서버 부팅 시 자동으로 시작됩니다.그렇긴 하지만, 수동으로 활성화 또는 비활성화하는 방법을 알아두는 것은 유용합니다.
사용하는 배포판이 SysVinit을 지원하는 경우 다음 명령으로 자동 시작을 강제할 수 있습니다.
chkconfig proftpd 켜짐
systemd가 설치된 시스템에서는 다음과 같습니다.
systemctl enable proftpd
이는 매번을 보장합니다 리눅스 시스템이 재시작됩니다그러면 ProFTPd 서비스가 시작되어 수동 개입 없이 FTP 연결을 수락할 수 있게 됩니다.
주요 설정 파일: proftpd.conf
구성의 핵심은 다음과 같습니다. /etc/proftpd/proftpd.conf여기에서 디렉터리, 권한, 메시지, 사용자 제한, TLS 및 서버의 거의 모든 세부 사항을 제어할 수 있습니다.
파일을 편집하려면 그래픽 환경(예: 에디터)에서 원하는 편집기를 사용할 수 있습니다. gedit터미널 전용 환경까지 나노, 빔 또는 비:
sudo nano /etc/proftpd/proftpd.conf
이 파일에서 보면 많은 줄이 다음과 같이 시작하는 것을 알 수 있습니다. #파운드 기호는 해당 지침에 대한 의견이 제시되었음을 나타냅니다. 효과가 없다제거하세요 # 이는 ProFTPd를 구성할 때 매우 흔히 사용되는 해당 옵션을 활성화하는 것과 같습니다.
구조는 느슨한 지침(예: 서버 이름, IPv6를 사용하세요(등) 및 블록과 같은 것들 , 어느 하나 아파치에서 작동하는 방식과 유사합니다. 각 지시문에는 가능한 값이 있으며, 대부분 대안 값이 있습니다. 온 / 오프 기능을 활성화 또는 비활성화합니다.
호스트 이름, 기본 디렉터리 및 DefaultRoot
가장 먼저 정의해야 할 것 중 하나는 다음과 같습니다. 서버 이름 과 루트 디렉토리 어떤 사용자가 접근할 수 있습니까?바로 이 부분에서 지침이 중요한 역할을 합니다. 기본 루트안전에 매우 중요합니다.
기본 설정에서 다음과 같은 줄을 볼 수 있는 경우가 많습니다.
# 기본 루트 ~
패드를 제거하고 이대로 두면:
기본 루트 ~
모든 사용자가 그렇게 될 것임을 나타내는 것입니다. 개인 디렉토리(홈)에 잠겨 있습니다.이는 사용자가 자신에게 속하지 않은 시스템 디렉터리를 엿보는 것을 방지하는 간단하고 효과적인 방법입니다.
모든 FTP 사용자가 동일한 공유 디렉토리에 액세스하도록 하려면 다음과 같이 설정할 수 있습니다.
기본 루트 /home/ftp
이러한 방식으로 인증이 완료되면 모든 사용자는 해당 위치에 배치됩니다. /홈/ftp 특정 사용자나 그룹에 대한 예외를 설정하지 않는 한 (또는 사용자가 정의한 디렉터리)에 적용되지 않습니다.
고급 DefaultRoot: 사용자 또는 그룹에 따라 다른 액세스 권한 부여
지령 기본 루트 이 기능은 디렉터리와 사용자 그룹을 혼합하여 사용할 때 상당히 세밀한 조정을 가능하게 합니다. 기본 구조는 특정 그룹에만 루트 액세스 권한을 부여하거나 다른 그룹을 제외하는 등의 매개변수를 지원합니다.
사용자가 두 명 있다고 가정해 보세요. A y B사용자 A는 자신의 폴더에만 접근할 수 있도록 제한하고, 사용자 B는 파일 시스템(또는 훨씬 더 큰 파일 시스템 트리)에 대한 전체 접근 권한을 부여해야 합니다. 다음과 같은 코드를 사용할 수 있습니다.
DefaultRoot /home/ftp A
기본루트 / B
이 예시에서 사용자 A는 /home/ftp 디렉터리에만 접근할 수 있도록 제한되는 반면, 사용자 B는 시스템 내에서 자유롭게 이동할 수 있습니다(물론 유닉스 디스크 권한 규칙을 준수해야 합니다). 이는 단순화된 접근 방식이지만, 어떻게 구현할 수 있는지 명확하게 보여줍니다. 사용자별로 접근 권한을 다르게 설정합니다..
DefaultRoot 외에도 사용자 정의할 만한 가치가 있는 설정이 있습니다. 서버 이름 (식별 가능한 서버 이름) 및 다음과 같은 메시지 액세스그랜트 메시지 (연결 시 표시되는 환영 메시지) 및 액세스 거부 메시지 (오류 발생 시 오류 메시지)를 파일 끝에 추가하여 사용자에게 더 명확한 경험을 제공할 수 있습니다.
시스템 사용자 및 가상 사용자 관리
ProFTPd는 기본적으로 다음과 같습니다. 리눅스 시스템 자체의 사용자와 그룹을 사용합니다.즉, useradd 또는 adduser 명령어로 사용자를 등록하면 해당 사용자는 FTP를 통해 인증할 수 있습니다(명시적으로 차단하지 않는 한).
대부분의 배포판에서 홈 디렉터리가 있는 기본 사용자를 생성하려면 다음 단계만으로 충분합니다.
sudo adduser 사용자
도우미가 비밀번호와 몇 가지 추가 정보를 요청할 것입니다. 비밀번호는 나중에 다음 방법으로 변경할 수 있습니다.
sudo passwd user
여기에서 "사용자"는 FTP에 연결할 수 있으며, 구성된 내용에 따라 달라집니다. 기본 루트그는 집에 갇히게 되거나, 허가를 받은 다른 경로를 이용할 수 있을 것입니다.
사용자가 다음을 갖도록 하려면 FTP 접속은 가능하지만 시스템 셸에는 접속할 수 없습니다.예를 들어 가짜 셸을 할당할 수 있습니다. /빈/거짓 o /usr/sbin/nologin먼저, 셸 사용이 허용되어 있는지 확인하세요. / etc / 쉘그런 다음 해당 셸을 지정하여 사용자를 생성합니다.
sudo useradd user1 -d /home/user1 -m -s /usr/sbin/nologin
이러한 방식으로 user1은 ProFTPd에 인증하여 파일을 사용할 수 있지만, 시스템에 대화형으로 로그인할 수는 없습니다. 좋은 보안 관행 다양한 환경에서.
익명 접속: 언제 활성화하고 어떻게 제한해야 할까요?
익명 접속은 주로 다음과 같은 용도로 사용됩니다. 공용 다운로드 서버인증 없이 누구나 파일을 다운로드할 수 있는 소프트웨어 저장소 또는 미러 사이트. ProFTPd는 블록 기능을 사용하여 이를 구성할 수 있도록 지원합니다. .
일반적인 블록은 다음과 같은 형태일 수 있습니다(단순화):
사용자 ftp
그룹 없음
UserAlias 익명 ftp
RequireValidShell 끄기
최대 클라이언트 10
모두 거부
여기서 우리는 사용자를 나타내고 있습니다. FTP (홈 디렉터리가 일반적으로 /srv/ftp 또는 이와 유사한 경로인) 해당 서버가 공개 다운로드의 기본 서버 역할을 합니다. 최대 10개의 익명 연결이 동시에 허용됩니다. 글쓰기를 시도하는 모든 행위를 금지합니다. 익명 환경 내에서 (업로드, 삭제 등) 작업을 수행할 수 있습니다.
특정 디렉토리(예: 수신 디렉토리)에 대한 업로드를 허용하기로 결정했다면 차단을 추가해야 합니다. 보다 관대한 제한을 두되, 권한 및 공간 사용량을 신중하게 관리해야 합니다. 그렇지 않으면 제대로 관리하지 않을 경우 악용의 소지가 생길 수 있습니다.
사용자를 명시적으로 허용하고 거부합니다.
ProFTPd는 시스템 사용자 지원 외에도 다음과 같은 지침을 제공합니다. 선택적으로 접근을 허용하거나 차단합니다.특정 계정만 접근할 수 있도록 제한하고 싶을 때 매우 유용합니다.
proftpd.conf 파일의 끝부분에 다음과 같은 규칙을 추가할 수 있습니다.
AllowUser ruvelro
모두 거부
이렇게 하면 "ruvelro"라는 사용자만 로그인할 수 있는 권한이 부여됩니다. 다른 계정은 모두 거부됩니다.시스템 내에 존재함에도 불구하고.
여기서 알아야 할 기본 지침은 다음과 같습니다.
- 사용자 허용: 하나 이상의 특정 사용자에게 명시적으로 접근 권한을 부여합니다.
- DenyUser특정 사용자를 차단합니다.
- 모두 허용: 모든 사용자(익명 접속이 허용된 경우 익명 사용자 포함)에게 접근 권한을 부여합니다.
- 모두 거부예외 대상에 해당하지 않는 모든 사용자의 접근을 차단합니다.
이러한 규칙을 사용하면 매우 엄격한 정책을 구축할 수 있습니다. 예를 들어 특정 프로젝트 기간 동안 소수의 내부 계정이나 테스트 사용자만 서버에 액세스할 수 있도록 제한할 수 있습니다.
활동 로그 및 연결된 사용자
문제 진단 및 보안 모니터링은 필수적입니다. ProFTPd 로그를 검토하세요기본적으로 로그 파일은 다음 위치에 저장됩니다.
/var/log/proftpd/proftpd.log
살펴보시려면 간단히 다음 단계를 따르세요.
sudo 고양이 /var/log/proftpd/proftpd.log
마지막 몇 줄만 보고 싶거나 실시간으로 모니터링하고 싶다면 다음을 사용할 수 있습니다. 꼬리:
sudo tail -f /var/log/proftpd/proftpd.log
또한 ProFTPd에는 다음과 같은 유틸리티가 포함되어 있습니다. ftpwho y FTP 상담하다 사용자들이 실시간으로 연결됨그들이 무엇을 하고 있는지 확인하고 서버 활동의 스냅샷을 얻을 수 있습니다.
FTPS/FTPES를 TLS 1.2 및 1.3으로 구성합니다.
FTP 서비스를 인터넷에 노출하거나 민감한 정보를 처리하려면 사실상 필수적입니다. TLS를 사용하여 암호화를 적용하세요.ProFTPd를 사용하면 FTPS(암시적) 또는 더욱 유연한 FTPES(명시적)를 통해 전송할 수 있습니다.
En FTPES(명시적 FTP)클라이언트는 일반 FTP처럼 21번 포트에 연결하지만, 인증 전에 다음 작업을 시작합니다. TLS 협상이를 통해 기존 표준 포트를 계속 사용하면서 암호화를 강제할지 여부를 선택할 수 있습니다.
먼저 proftpd.conf 파일에 TLS 구성 파일이 포함되어 있는지 확인하십시오. 다음 줄을 찾으세요.
# /etc/proftpd/tls.conf 파일을 포함하세요
그리고 댓글을 삭제하세요:
/etc/proftpd/tls.conf 파일을 포함하세요.
그럼 당신은 인증서와 개인 키를 생성합니다.두 가지 옵션이 있습니다. 내장 도구를 사용하거나, proftpd-gencert거의 모든 것을 자동화하는 방법을 사용하거나, OpenSSL을 사용하여 키 길이와 같은 세부 사항을 제어하면서 수동으로 인증서를 생성할 수 있습니다.
OpenSSL을 이용한 수동 인증서 생성
프로세스를 직접 제어하고 싶다면 다음 방법을 사용하여 강력한 RSA 키를 생성할 수 있습니다.
openssl genrsa -out /etc/ssl/private/proftpd.key 4096
이 명령은 다음을 생성합니다. 4096비트 개인 키이는 현재 환경에 충분합니다. 다음으로, 다음 명령어를 사용하여 인증서(이 경우 자체 서명 인증서)를 생성합니다.
openssl req -new -x509 -days 1460 -key /etc/ssl/private/proftpd.key -out /etc/ssl/certs/proftpd.crt
이 과정에서 국가, 주, 시/도, 조직명, 조직 단위, 도메인(Common Name), 이메일 주소 등의 정보를 입력하라는 요청을 받게 됩니다. 내부 환경에서는 모든 정보가 완벽할 필요는 없지만, 외부 환경에서는 최대한 정확하게 입력하는 것이 좋습니다. 일반 이름은 도메인 또는 IP 주소와 일치해야 합니다. 클라이언트가 연결하는 데 사용할 것입니다.
개인 키에는 다음 사항이 포함되어야 합니다. 제한적 허가 (예를 들어, 루트 전용의 경우 600) 그리고 해당 인증서를 ProFTPd 프로세스에서 읽을 수 있어야 합니다. 일반적인 규칙은 다음과 같습니다.
chmod 600 /etc/ssl/private/proftpd.key
chmod 640 /etc/ssl/certs/proftpd.crt
ProFTPd에서 tls.conf 설정하기
인증서와 키를 받으셨다면 이제 설정을 조정할 차례입니다. /etc/proftpd/tls.conf일반적으로 주석이 달린 예제 블록이 함께 제공되므로 필요에 따라 수정할 수 있습니다. 최신 TLS에 초점을 맞춘 일반적인 구성은 다음과 같습니다.
TLSE 엔진 켜짐
TLSLog /var/ftpd/tls.log
TLS 프로토콜 TLSv1.2 TLSv1.3
TLS 필수 해제
TLSRSACertificateFile /etc/ssl/certs/proftpd.crt
TLSRSACertificateKeyFile /etc/ssl/private/proftpd.key
TLSVerifyClient 끄기
TLS 재협상 없음
이 지침에 따라 귀하는 TLS 엔진 활성화특정 로그에 이벤트를 기록하고 프로토콜 버전을 제한합니다. TLS 1.2 및 1.3클라이언트가 인증서를 사용하여 인증해야 하는 요구 사항을 비활성화하고 호환성 문제를 야기할 수 있는 불필요한 재협상을 방지합니다.
네가 원한다면 모든 연결에는 암호화가 필요합니다., 넣을 수 있어요 TLS 필수이러한 방식으로 TLS를 사용하지 않고 연결을 시도하면 즉시 거부됩니다.
변경 사항을 적용한 후에는 ProFTPd를 다시 시작하거나 새로 로드하는 것을 잊지 마세요. TLS 조정이 적용됩니다그런 다음 다음과 같은 클라이언트를 사용하여 연결을 테스트할 수 있습니다. FileZilla의모드 선택 명시적 TLS를 통한 FTP(FTPS) 그리고 처음으로 인증서를 수락하는 것.
저장 용량 및 할당량 관리
다중 사용자 환경에서는 단일 클라이언트만으로는 충분하지 않습니다. 디스크 전체를 파일로 채우세요그렇기 때문에 호스팅 서비스에서 사용자를 생성할 때나 ProFTPd의 할당량 모듈을 통해 각 계정의 용량을 제한하는 것이 일반적입니다.
많은 호스팅 패널에서는 다음을 정의할 수 있습니다. 최대 저장 크기 웹 인터페이스를 통해 FTP 계정으로 이러한 제한을 쉽게 설정할 수 있습니다. 자체 관리형 서버에서는 파일 시스템 할당량 또는 특정 ProFTPd 모듈을 사용할 수 있습니다.
핵심은 주기적으로 검토하는 것입니다. 여유 디스크 공간 그리고 용량이 부족해질 것 같으면 호스팅 플랜이나 용량을 업그레이드하세요. 할당량을 적절하게 설정하면 사용량이 급증하여 다른 서비스에 과부하가 걸리는 것을 방지할 수 있습니다.
안전한 접근: 방화벽 및 포트
FTP 클라이언트가 연결하려면 방화벽이 다음을 수행해야 합니다. 21번 포트로 들어오는 트래픽을 허용합니다. (그리고 사용자가 정의한 수동 포트 범위까지). 방화벽 도구에 따라 명령어가 달라지지만 기본 개념은 동일합니다.
와 iptables에 다음과 같은 방법을 시도해 볼 수 있습니다.
sudo iptables -I INPUT -p tcp –dport 21 -j ACCEPT
와 방화벽:
sudo firewall-cmd –permanent –zone=public –add-port=21/tcp
sudo 방화벽 명령 – 다시 로드
그리고 지주 다음과 같은 것:
sudo nft add rule ip filter input tcp dport { 21 } ct state new accept
사용하실 경우 이 점을 잊지 마세요. 수동 모드데이터 연결에 대해 선언한 포트 범위를 해제해야 합니다. 그렇지 않으면 "425 데이터 연결을 구축할 수 없습니다"와 같은 오류가 발생합니다.
ProFTPd에서 흔히 발생하는 오류와 해결 방법
ProFTPd 서버를 설정할 때 고려해야 할 사항이 여러 가지 있습니다. 상당히 흔한 오류 메시지 알아두면 정신이 나가지 않을 거예요.
클래식 "530 로그인 오류" 일반적으로 표시 잘못된 사용자 이름 또는 비밀번호입니다. 또는 권한 문제일 수 있습니다. 사용자가 시스템이나 가상 사용자 파일에 존재하는지 확인하고, FTP 접근 권한과 올바른 홈 디렉터리가 있는지 확인하십시오.
오류 "425 데이터 연결을 구축할 수 없습니다." 거의 항상 ~와 관련이 있습니다. 수동 모드 설정이 잘못되었거나 방화벽에서 포트가 차단되었습니다.proftpd.conf 파일에서 수동 포트 범위를 올바르게 정의하고, 방화벽에서 해당 포트를 열고, 중간 NAT가 올바르게 변환되는지 확인하십시오.
네가 본다면 “550 권한이 거부되었습니다”문제는 다음을 가리킵니다. 디스크 권한사용자가 해당 디렉터리 또는 파일에 대한 읽기, 쓰기 또는 수정 권한이 없습니다. 권한을 확인하십시오. chmod를 그리고 소유자는 chown하지필요한 정확한 수준으로 조정합니다.
광고 "이미 사용 중인 주소입니다." 일반적으로 다음을 나타냅니다. 다른 서비스가 21번 포트를 사용 중입니다. (또는 설정한 다른 버전). 다음과 같은 도구를 사용할 수 있습니다. netstat -tuln o ss-tuln 어떤 프로세스가 포트를 사용하고 있는지 확인하고 그에 따라 조치를 취합니다(해당 서비스를 중지하거나 ProFTPd 포트를 변경).
만약 당신이 얻게 된다면 "421 서비스를 이용할 수 없습니다. 제어 연결을 종료합니다."서버에 문제가 있을 가능성이 있습니다. 최대 연결 수에 도달했습니다. 매개변수에 다음과 같이 정의됨 MaxInstances 또는 MaxClients또는 전반적인 설정 오류가 있을 수 있습니다. 해당 값을 검토하여 지나치게 엄격한 제한을 초과하지 않았는지 확인하고, 방화벽이나 프록시가 연결을 조기에 차단하고 있는지 점검하십시오.
성능 문제 및 느린 연결 속도
때로는 명확한 오류가 나타나지 않더라도 FTP 연결에 문제가 있음을 알 수 있습니다. 비정상적으로 느림 혹은 시작 단계에서 막히는 것처럼 보일 수도 있습니다. 아주 흔한 원인은 다음과 같습니다. 역방향 DNS 확인이 활성화되었습니다. 그리고 잘못 구성되었습니다.
ProFTPd가 연결을 수신하면 연결을 시도할 수 있습니다. 역방향 DNS 클라이언트의 IP 주소에서 정보를 가져옵니다. DNS 응답이 없거나 매우 느린 경우, 로그인 시도마다 불이익이 발생합니다. 이를 방지하려면 다음 정책을 사용하여 이 기능을 비활성화할 수 있습니다.
UseReverseDNS 끄기
이는 특히 DNS 서버가 포화 상태이거나 잘못 구성된 환경에서 연결 프로세스 속도를 크게 향상시킵니다.
설치 후 안전 테스트
서버가 시작되고 연결을 수락한다고 해서 서버가 제대로 작동하고 있다는 의미는 아닙니다. 정말 안전해요설치 후에는 시간을 내어 기본적인 보안 테스트를 수행하는 것이 좋습니다.
첫 번째 단계는 확인하는 것입니다. 어떤 포트가 노출되는가 외부에서 확인할 수 있습니다. 외부 스캔 도구를 사용하여 포트 21과 사용자가 정의한 패시브 범위만 열려 있고, 불필요한 다른 서비스가 표시되지 않는지 확인할 수 있습니다.
당신도 다음을 시도해 보세요. TLS 구성 FTPES를 사용하는 경우, 보안 프로토콜(TLS 1.2/1.3)만 허용되고, 취약한 암호화 방식은 허용되지 않으며, 오래된 호환성 옵션이 활성화되어 있지 않은지 확인하십시오. 고급 클라이언트나 TLS 분석기와 같은 도구를 사용하면 각 연결에서 협상되는 내용을 확인할 수 있습니다.
동작을 테스트하는 것을 잊지 마세요. 로그인 시도 실패존재하지 않는 사용자, 잘못된 비밀번호, 승인되지 않은 IP 주소에서의 로그인 등 서버는 이러한 시도를 명확하게 거부하고 로그에 기록해야 합니다.
마지막으로, 시간을 내어 기록을 검토하세요 ProFTPd와 TLS를 통해 연결 시도, 오류, 암호화 협상 및 모든 이상 징후를 확인할 수 있습니다. 몇 가지 적절한 테스트를 통해 누군가가 악용하기 전에 잘못된 구성을 감지할 수 있습니다.
ProFTPd와 vsftpd, pure-ftpd 및 기타 대안들을 비교해 보세요.
리눅스 생태계에서는 FTP 서버를 설정하는 데 여러 가지 옵션이 있으며, 각 옵션마다 고유한 철학이 있습니다. ProFTPd는 그중 하나입니다. 매우 다재다능하고 강력함하지만 미니멀리즘을 추구한다면 항상 최선의 선택은 아닙니다.
vsftpd에 그는 ~로 유명하다 매우 안전하고 가볍고 보수적입니다.이 제품은 화려한 기능은 없지만, 처음부터 보안을 최우선으로 고려하여 설계되었습니다. 설치가 비교적 간편하고, 단순히 "작동하는" 제품을 원할 때 좋은 선택입니다.
순수한 FTPD 이는 매우 유연한 또 다른 대안이며, 다음과 같은 기능을 지원합니다. 데이터베이스, LDAP, 여러 Unix 시스템 및 TLS 암호화를 통한 인증모듈식 구조와 이식성이 뛰어나며, 다양한 유닉스 환경(리눅스, *BSD, 솔라리스 등)에서 우수한 성능을 보여주는 것이 특징입니다.
윈도우 시스템에서 매우 인기 있는 해결책은 다음과 같습니다. FileZilla 서버지원하는 FTPS 그리고 해당 환경에 맞게 특별히 설계되었습니다. 하지만 리눅스 환경에서는 ProFTPd, vsftpd 또는 pure-ftpd를 사용하는 것이 일반적으로 더 자연스럽습니다.
선택은 당신의 우선순위에 달려 있습니다. 세부적인 제어 및 확장성 (ProFTPd가 뛰어난 부분) 또는 극도의 단순성과 최소한의 리소스 소비 (vsftpd의 장점)를 원할 경우, 어떤 경우든 신중하게 설정하면 이러한 옵션들은 모두 유효합니다.
결론적으로 ProFTPd는 매우 흥미로운 조합을 제공합니다. 전력, 모듈성 및 보안 옵션 이러한 특징 덕분에 이 솔루션은 Linux 및 Unix 시스템에 FTP 서버를 설정하는 데 있어 가장 포괄적인 솔루션 중 하나입니다. 설정 파일을 꼼꼼히 이해하고, 사용자 및 권한을 적절하게 관리하고, 모범 사례에 따라 TLS를 활성화하고, 로그를 정기적으로 검토하면 조직의 요구 사항에 맞춰 확장할 수 있는 빠르고 안정적인 파일 전송 서비스를 구축할 수 있습니다.
