FTP 프로토콜은 가장 오래된 프로토콜 중 하나(40년 이상)이지만 간단한 파일 전송 프로토콜이 필요한 곳에서는 여전히 널리 사용됩니다. 모든 버전의 Microsoft 운영 체제에 FTP 서버를 설치할 수 있습니다. ftp 서비스의 마지막 심층 현대화는 Windows 7 / Server 2008 R2에서 이루어졌습니다(사실 서비스 코드는 거의 처음부터 작성되었습니다). 서비스 보안이 크게 향상되었으며 여러 가지 새로운 기능이 등장했습니다. 특히 Windows의 FTP 서버를 사용하면 FTP 사용자 격리를 구성할 수 있습니다. . 단일 FTP 서버에 있는 자신의 폴더에 대한 많은 사용자의 액세스를 제한할 수 있습니다.
격리로 인해 사용자는 자신의 폴더로만 작업할 수 있고 FTP 디렉토리 트리에 올라갈 수 없습니다(사용자의 최상위 ftp 수준 디렉토리가 FTP 서버의 루트로 표시됨). 따라서 FTP 서버에 있는 다른 사용자의 데이터에 대한 액세스를 방지할 수 있습니다. FTP 사용자 격리는 여러 사용자에게 단일 파일 저장소에 대한 개별 액세스를 제공해야 하는 경우 ISP/호스팅 제공업체에서 널리 사용됩니다.
이전 Windows 버전과 마찬가지로 Windows Server 2016/2012 R2의 FTP 서비스(sFTP 및 TFTP와 혼동하지 마십시오)는 IIS 서비스를 기반으로 하고 긴밀하게 통합되며 단일 관리 관리 인터페이스가 있습니다.
이 문서에서는 Windows Server 2016/2012 R2에 IIS 기반 FTP 서버를 설치하고 FTP 사용자 격리를 구성하는 방법을 보여줍니다. (이 설명서는 Windows 10 및 8.1에도 적용됩니다.)
Windows Server 2016/2012 R2에 FTP 서버 역할을 설치하는 방법
FTP 서비스 옵션을 선택하여 서버 관리자 콘솔을 사용하여 FTP 서비스를 설치할 수 있습니다. 및 FTP 확장성 웹 서버(IIS) -> FTP 서버 섹션에서 .
또한 단일 PowerShell 명령으로 FTP 서버 역할을 설치할 수 있습니다.Install-WindowsFeature Web-FTP-Server
FTP 서버 관리 콘솔을 설치하려면 다음 명령을 실행하십시오.
Install-WindowsFeature -Name "Web-Mgmt-Console"
FTP 사이트 생성, FTP 사용자 권한 관리
서버 관리자를 시작하고 IIS 관리 콘솔(인터넷 정보 서비스 관리자)을 엽니다.
새 FTP 사이트 만들기(사이트 -> FTP 사이트 추가 ).
FTP 사이트 이름:MyTestSite
FTP 사이트의 루트 디렉토리:C:\inetpub\ftproot
네트워크를 통해 전송되는 FTP 데이터를 보호하기 위해 FTP에 대해 SSL을 구성할 수 있습니다(이 경우 세션 중에 ftp 사용자가 보낸 모든 데이터 및 암호/계정이 암호화됨). 그러나 데모에서는 이것이 필요하지 않습니다. 다른 모든 설정은 기본값으로 유지됩니다.
PowerShell 모듈 WebAdministration을 사용하여 FTP 사이트를 관리할 수 있습니다. . 예를 들어, 새 FTP 사이트를 만들려면 다음 명령을 실행하기만 하면 됩니다.
Import-Module WebAdministration
# Set the FTP site name
$FTPSiteName = 'CORP_FTP'
#FTP folder
$FTPRoot = 'D:\www\FTPRoot'
#FTP port
$FTPPort = 21
New-WebFtpSite -Name $FTPSiteName -PhysicalPath $FTPRoot -Port $FTPPort
새 FTP 사이트를 선택하고 익명 인증을 비활성화합니다. FTP 인증 섹션. 기본 인증 활성화해야 합니다.
Windows Server 2016/2012 R2의 FTP 서비스는 도메인 또는 로컬의 두 가지 계정 유형을 사용할 수 있습니다. 계정 유형에 따라 FTP 디렉터리 구조와 사용자 격리 설정에 약간의 차이가 있습니다. 설명을 쉽게 하기 위해 로컬 Windows 계정을 사용합니다.
ftp_user1이라는 FTP 사용자를 생성합니다. , ftp_user2 및 ftp_user3 . ftp_users 그룹도 생성 여기에는 이러한 사용자가 포함됩니다. 로컬 사용자 및 그룹에서 로컬 사용자를 만들 수 있습니다. 컴퓨터 관리 섹션 콘솔.
명령 프롬프트에서(또는 PowerShell을 사용하여) 로컬 사용자 및 그룹을 만들 수도 있습니다. 로컬 그룹 만들기:net localgroup ftp_users /add
새 로컬 사용자 생성:net user ftp_user1 /add *
그룹에 사용자 추가:net localgroup ftp_users ftp_user1 /add
같은 방법으로 두 명의 다른 사용자를 생성합니다.
ftp_users 그룹에 대해 C:\inetpub\ftproot 디렉터리에 대한 읽기 및 쓰기 권한을 할당합니다.
LocalUser라는 이름의 디렉터리를 만듭니다. (이름이 같아야 합니다. 중요합니다!!! ) C:\inetpub\ftproot 폴더에 있습니다. 그런 다음 C:\inetpub\ftproot\LocalUser 폴더에 ftp_user1, ftp_user2, ftp_user3이라는 이름으로 3개의 디렉토리를 만듭니다.
참고 <강하다>. 계정 유형에 따라 다음 디렉터리 구조를 만들어야 합니다(%FtpRoot%\ 아래에서 FTP 사이트의 루트를 의미하며 이 경우 C:\inetpub\ftproot\).계정 유형 | 홈 디렉토리 명명 구문 |
익명 사용자 | %FtpRoot%\LocalUser\Public |
로컬 Windows 계정 | %FtpRoot%\LocalUser\%UserName% |
도메인 Windows 계정 | %FtpRoot%\%UserDomain%\%UserName% |
특수 IIS 관리자 또는 ASP.NET 계정 | %FtpRoot%\LocalUser\%UserName% |
IIS 콘솔로 돌아가서 새 규칙을 만듭니다(AllowRules 추가 ) FTP 승인 규칙 사이트의 섹션. ftp_users 그룹에 읽기 및 쓰기 권한이 있어야 한다고 지정합니다.
Windows Server 2016/2012 R2에서 FTP 사용자 격리를 구성하는 방법
FTP 사용자 격리 구성으로 이동하겠습니다. FTP 사용자의 격리는 전체 서버가 아니라 FTP 사이트 수준에서 구성됩니다. FTP 사용자 격리를 사용하면 각 사용자에 대한 ftp-home 폴더를 구성할 수 있습니다.
FTP 사용자 격리 열기 FTP 사이트의 설정에서.
이 섹션에는 여러 설정이 포함되어 있습니다. 처음 두 가지는 사용자 격리를 제안하지 않습니다.
- FTP 루트 디렉토리 (사용자의 FTP 세션은 FTP 사이트의 루트 디렉토리에서 시작됨);
- 사용자 이름 디렉토리 (사용자는 사용자 이름으로 물리적/가상 디렉토리로 시작합니다. 디렉토리가 없으면 사이트의 루트 FTP 디렉토리에서 세션이 시작됩니다.)
다음 세 가지 옵션은 다양한 사용자 격리 모드입니다.
- 사용자 이름 디렉터리(전역 가상 디렉터리 비활성화) 는 사용자의 ftp 세션이 ftp 사용자와 이름이 같은 물리적/가상 디렉토리에 격리되어 있음을 나타냅니다. 사용자는 자신의 디렉토리(루트 ftp-디렉토리)만 볼 수 있으며 그 이상(FTP 트리의 상위 디렉토리)으로 이동할 수 없습니다. 모든 전역 가상 디렉터리는 무시됩니다.
- 사용자 이름 물리적 디렉토리(글로벌 가상 디렉토리 활성화) 는 사용자의 ftp 세션이 ftp 사용자 계정의 이름과 같은 이름을 가진 물리적 디렉터리에 격리되어 있음을 나타냅니다. 사용자는 디렉토리 위로 이동할 수 없습니다. 그러나 생성된 모든 전역 가상 디렉터리는 사용자가 사용할 수 있습니다.
- Active Directory에 구성된 FTP 홈 디렉토리 – FTP 사용자는 Active Directory 계정(FTPRoot 및 FTPDir 속성) 설정에 지정된 홈 디렉터리 내에서 격리됩니다.
필요한 격리 모드를 선택합니다(두 번째 옵션을 사용하여 ftp 사용자를 격리합니다).
FTP 사이트 설정을 변경하면 Microsoft FTP 서비스(FTPSVC)를 다시 시작하는 것이 좋습니다.FTP 서버에 액세스하기 위한 Windows 방화벽 규칙 구성
FTP 서버 역할을 설치하면 사용자가 FTP에 액세스하는 데 필요한 모든 규칙이 Windows 방화벽 설정에서 자동으로 활성화됩니다.
FTP가 수동 FTP 모드에서 올바르게 작동하려면 사용자가 RPC 포트 범위(1025-65535)에 연결해야 합니다. 외부 방화벽에서 이러한 모든 포트를 열지 않도록 FTP 데이터 전송에 사용되는 동적 TCP 포트의 범위를 제한할 수 있습니다.
- FTP 방화벽 지원 열기 섹션 FTP 사이트 설정 및 데이터 채널 포트 범위 필드는 FTP 연결에 사용할 포트 범위를 지정합니다. 예를 들어 – 50000-50100;
- 변경 사항을 저장하고 IIS를 다시 시작합니다(
iisreset
); - Windows 제어판을 열고 제어판\시스템 및 보안\Windows 방화벽\허용된 앱으로 이동합니다.
- 방화벽을 통한 액세스가 허용된 애플리케이션 목록에 FTP 서버에 대한 권한이 포함되어 있는지 확인하십시오. 역할.
그런 다음 고급 보안이 포함된 Windows 방화벽 설정에서 다음 규칙이 활성화되어 있는지 확인하십시오.
- FTP 서버(FTP 트래픽 입력) – TCP 프로토콜, 포트 21,
- FTP 서버 패시브(FTP 패시브 트래픽 인) – 로컬 포트 주소 1024-65535(이 경우 50000-50100)
- FTP 서버 보안(FTP SSL 트래픽 인) – 포트 990(FTP를 SSL과 함께 사용하는 경우)
- FTP 서버(FTP 트래픽 출력) – 포트 20,
- FTP 서버 보안(FTP SSL 트래픽 출력) – 포트 989(FTP를 SSL과 함께 사용하는 경우).
따라서 외부 FTP 사용자가 사이트에 연결할 수 있도록 라우터(게이트웨이, 방화벽)에서 이러한 포트를 열어야 합니다.
Windows에서 FTP 서버 연결 테스트
Test-NetConnection cmdlet을 사용하여 FTP 서버의 포트 가용성을 확인할 수 있습니다.
Test-NetConnection -ComputerName yourftpservername -Port 21
또는 ftp 사용 명령:
ftp yourftpservername
FTP 클라이언트를 사용하거나 파일 탐색기에서 직접 FTP 사이트에 연결해 보십시오(주소 표시줄에 ftp://yourservername/ 지정).
사용자 이름과 비밀번호를 입력하세요.
이제 사용자의 파일(사용자의 FTP 사이트 루트)이 있는 홈 디렉토리에 액세스할 수 있습니다. 보시다시피 사용자 세션은 격리되고 사용자는 ftp 서버에서 자신의 파일만 봅니다.
팁. 익명 액세스(모든 익명 사용자)를 사용하려면 모든 사용자가 자격 증명을 사용하여 FTP 서버에 연결할 수 있습니다. 익명 또는 손님 사용자 이름으로 이메일 주소를 비밀번호로. FTP 사이트에 익명으로 연결하면 세션이 LocalUser\Public 디렉터리로 제한됩니다(물론 Public 디렉터리는 미리 만들어야 함).
FTP 로그를 사용하여 FTP 서버에 대한 사용자 액세스에 대한 정보를 볼 수 있습니다. 로그 파일은 기본적으로 c:\inetpub\logs\logfiles에 저장됩니다. u_exYYMMDD.log 폴더 파일.
FTP 서버에 대한 활성 사용자 연결을 보려면 PowerShell 또는 "현재 FTP 세션을 통해 IIS 성능 카운터 값을 사용할 수 있습니다. ” 섹션을 IIS 콘솔에서 확인하십시오. 이 콘솔에서 FTP 사용자의 이름과 IP 주소를 보고 필요한 경우 ftp 세션 연결을 끊을 수 있습니다.
그래서 Windows Server 2016/2012 R2 기반의 사용자 격리로 FTP 사이트를 구성하는 방법을 살펴보았습니다. 격리 모드에서 사용자는 사용자 이름에 해당하는 루트 디렉터리에 액세스하기 위해 로컬 또는 도메인 자격 증명을 사용하여 FTP에서 인증됩니다.