ioFTPD의 설치 방법은 어떻게 보면 무지 어렵고, 어떻게 보면 무지 쉽습니다. 그 만큼 가능한 능력이 넓다는 의미가 됩니다. 다양한 기능과 세부적인 내용으로 들어갈 때 부터 상당히 어렵게 느껴 질 것입니다. 하지만, 간단한 설치 정도라면, 생각보다 쉽게 할 수 있습니다.
그래서 여기서는 Quick Install 수준의 내용으로 서술하죠. 차후 FTP 운영에 자신이 붙어 연구에 연구를 하게 된 후 ioFTP Advanced 과정을 한번 심각하게 고려해보겠습니다. (가능성이.. 좀.. ㅋ)


1. ioFTPD 및 Windows(2000 또는 XP 또는 2003)ResourceKit 에 담긴 Service 관련 파일 받아 놓기.
  -> ioFTPD를 설치하려 준비 했다면 최소한 ioFTP 서버 프로그램 정도는 있을 것입니다. 만일 없다면 ioFTP 공식사이트(http://www.ioftpd.com)에서 다운 받으시면 됩니다.(대개 하나의 zip 파일로 압축되어 있을 겁니다.)
그리고 추가적으로 필요한 것은 Windows Resource Kit 안에 포함된 내용이 필요 합니다. 이 부분은 별도의 Windows Resouce Kit을 설치해서 빼돌리거나, 아니면 다음 강좌에 업로드 했으니, 그거라도 받아서 쓰시기 바랍니다. Resouce Kit에서 필요한 내용은 instsrv.exe, srvany.exe 입니다. 이 파일들은 ioFTPD를 서비스로 등록시키기 위해 필요한 파일들입니다.(이거 없이 하려면, 컴퓨터를 계속 로그인 해서 ioFTPD 프로그램을 실행 시켜줘야 합니다. -_-;;;)

2. ioFTPD 파일 설치
-> ioFTPD 파일의 압축을 풉니다. 압축을 풀면 ioFTPD 라는 폴더 아래에 다양한 폴더와 파일들이 나열 됩니다. 얼핏 보면, 리눅스의 파일 구조 같아 보일 겁니다. 무언가 상당한 포스를 느끼게 하는데, 이에 당황하지 말고 압축을 푼 폴더(ioFTPD 이하 모두) 적당한 위치에 그 내용을 복사(또는 이동)해 주시면 됩니다.
저 같은 경우 C:\ 에 이동시켜서, 지금 C:\ioFTPD 라는 폴더 안에 해당 하는 내용들이 전부 담겨 있답니다.
먼저 ioFTPD의 폴더 구조를 간단하게 살펴보도록 하죠. 설명을 위해서 필요한 내용이니깐 그냥 살펴보는 정도로 아시면 됩니다.(각 폴더의 위치는 제가 설치한 ioFTPD의 위치를 기준으로 삼았으니깐, 혹시나 다른 위치라면 그 위치에 맞게 생각해주세요)

  • c:\ioFTPD/cache : 캐쉬 파일을 담는 곳입니다. 이 폴더는 손댈 필요도 절대 손대서도 안된답니다.
  • c:\ioFTPD/etc :여기에 있는 파일은 다음과 같습니다.
    • UserIdTable : 사용자 내용을 담습니다. 보통 UID(UserID) 정보라고 합니다.
    • GroupIdTable : 그룹에 대한 정보를 담습니다. 보통 GID(GroupID) 정보라고 합니다.
    • default.vfs & admin.vfs : VFS(가상 파일 시스템 : Virtual File System) 설정 파일입니다. 처음에는 간단히 적는 방법을 제시한 예제 내용이 담겨 있습니다.
    • ioftpd.env : ioFTPD에서 사용되는 환경 변수 정의 된 내용입니다.
  • c:\ioFTPD/groups: 그룹 데이터 파일들이 담기는 곳입니다. 파일이름이 GID(Group ID) 입니다.
  • c:\ioFTPD/help : 도움말 파일들입니다.
  • c:\ioFTPD/lib : ioFTPD 동작 기반으로 TCL을 사용하는데, 그 TCL 라이브러리 들이 담겨 있습니다.
  • c:\ioFTPD/logs : Error.log 와 Sysop.log 같은 각종 Log 파일들이 담기는 곳입니다.
  • c:\ioFTPD/site : 처음 설치시에 설정된 사이트 의 초기 root 디렉토리입니다.물론 예제 설정에서 정한 위치일 뿐입니다.
  • c:\ioFTPD/source : 스크립터(기능 확장용 스크립트를 만드는 사람들)에게 유용할 만한 다양한 내용이 담긴 소스들입니다.
  • c:\ioFTPD/system : ioFTPD.exe, ioFTPD.ini, tcl84.dll 같이 실행 및 핵심 파일들이 담긴 곳 입니다.
  • c:\ioFTPD/text : 로그인 할때 보여주는 내용이나 각종 상태 보여줄때 및 명령어 결과 등을 보여줄때 나오는 문서들이 담긴 곳입니다. 여기 있는 내용을 편집해야 ftp 에 접속시보여주는 내용이나 특정 명령어 치면 현재 서버 상황을 보여주는 각종 내용들을 편집할 수 있습니다.
  • c:\ioFTPD/users : User 데이터 파일입니다. 파일이름이 UID(User ID) 입니다.

뭐 대충 위와 같은 구성으로 되어 있는데 일단은 그냥 저렇다는 것만 알아두셔도 대략적인 ioFTPD에 대한 파악을 하는데 나름대로 참고가 될겁니다.

3. VFS (Virtual File System) 파일 손보기
- 왜 이것 부터 해야 되는 지는 잘 모르겠습니다. 단지, 공식 사이트에서 제공하는 Quick Install 에서 이것 부터 먼저 나와 있고, 저 역시 이 부분 부터 먼저 했으니 그냥 하는 겁니다. ioFTPD 설치에 대해 어느 정도 익숙해지면 나름대로 설치에 대한 순서를 결정하셔도 될겁니다. .
먼저, /etc(이후, 경로에 대한 정보는 이렇게 적겠습니다. /etc의 의미는 "설치위치\etc"와 같습니다. 만일 c:\ioFTPD에 설치하셨다면 c:\ioFTPD\etc 와 같겠죠. 이해되시죠?)안에 있는 default.vfs 파일을 텍스트 에디터(메모장이나 에딧플러스 같은)로 안에 있는 default.vfs 를 여세요.
  대략 잡시러운 내용이 몇가지 들어가 있는데, 생초짜 아니시면 직관적으로 무슨 내용을 의미하는지 아실 겁니다. 여러 줄의 내용이 있지만, 한 줄, 한 줄이 각기 독립적인 내용입니다. 그 줄의 형식은 다음과 같을 것입니다.
        "원본_위치"  가상폴더
한줄을 예를 들자면
        "D:\ftp\Data"  /data
이렇게 적혀 있는데, 이 의미는 FTP 상에서 /data라는 폴더가 보이는데 실제 FTP 서버의 "D:\ftp\Data"라는 위치로 연결해 줍니다. 즉 사용자가 FTP 상에서 /data 안에 들어가면 "D:\ftp\Data"위치의 파일들을 볼 수 있게 됩니다.
이 부분을 적절히 편집하면, 여기저기 산재되어 있는 서버내의 폴더들을 FTP안에 묶어 버릴 수 가 있습니다. D 드라이브에 있던 F 드라이브에 있던 아무런 상관이 없어지는거죠.
ioFTPD에서는 로컬 서버내에 있는 하드 디스크만 연결되는 것이 아니고 외부 서버의 공유 폴더도 연결해 줄 수 있습니다. 예를 들자면,
        "\\testpc\share"    /extpcshare
과 같은 형태가 됩니다. 굳이 설명을 하자면, "\\testpc" 의 의미는 LAN 환경에 놓인 컴퓨터(또는 서버) 중 testpc 라는 의미가 되고 나머지 \share는 그 컴퓨터의 공유 폴더 이름을 의미하게 됩니다. \\testpc 와 같은 컴퓨터 이름이 잘 안되면 \\10.10.10.5 처럼 직접 IP 주소를 넣어도 상관 없습니다. 위의 예제 처럼 설정하면, FTP 상에서 /extpcshare 안에 들어가게 되면 \\testpc\share 안의 폴더 내용을 보여주게 됩니다.

4. ioFTPD.ini 설정하기.
-> 이 파일을 열어 보시면 딱 보시면 아시겠지만 일반적인 linux 스타일의 설정파일과 동일 하게 생겼습니다.
   맨 앞에 # 이 붙으면 주석!
   맨 앞에 ; 이 붙으면 해당 세팅을 해제를 하겠다는 의미입니다.
   자 그럼 실제 필요한 세팅 일부분만 해결해서 넘어가도록 하죠.
  4-1. DEVICE 설정
    -> 일반적인 상황이라면 처음 설정된 내용을 그대로 사용할 수 있습니다. 하지만 그것인 그냥 일반적인 상황일때 만 가능한 이야기 입니다. 만일 방화벽이나 공유기를 사용하고 있다면 다르게 설정할 필요가 있습니다.
       먼저 Device default 설정을 보시도록 하죠.
    [ANY]
    host = 0.0.0.0    <-   어떠한 IP간에 연결이 되는 어떤 IP 주소도 연결을 허락하는 의미죠.
    port = 1024-2048 <-  FTP포트를 의미하는 것은 아니고 FTP의 데이터를 송/수신 할때 쓰는 Port 번호죠. FTP 신호를 기다라는 포트와는 다르게 오로지 데이터 송/수신 하거나 Passive Mode 를 할때 사용합니다.
     Random = True <- 위의 포트 설정이 범위로 되어 있다면 그 포트 중 암것이나 하나 잡아서 들어간다는 것입니다.
  
   서버가 외부에 바로 노출되어 있다면 그냥 저렇게 써도 되지만, 만일 방화벽 안에 들어가 있다던가 공유기를 쓰고 있다면 몇가지를 다르게 설정하셔야 됩니다. 먼저 port 부분에서 저렇게 범위로 적지 말고 특정 포트를 하나 잡아 번호를 잡아 넣으셔야 됩니다. 뭐.. 적당히 1111 이라고 해도 좋고.. 9898 이라고 해도 좋고.. 자신이 좋을대로 하세요. 중요한 것은 하나의 포트로 잡아야 된다는 것입니다.
그리고 Random 부분에서도 단일 포트로 쓰기 때문에, 그냥 False 하세요.

   4-2. SERVICES 설정
    - 간단하게 하기 위해서 FTP_Service 만 다릅니다. 나머지 설정은 나중에 계속 다룰께요.
     [FTP_Service]
     Type = FTP
     Device_Name = Any <-- 위에서 사용하려고 적은 DEVICE이름을 적으면 됩니다. 저 위의 [Any]인 경우 옆처럼 Any를 적으면 됩니다.
     Port = 9999 <-- 이 부분이 FTP 접속을 위한 Port 번호 입니다.
     Description = My FTP Service  
     User_Limit = 10 <-- 최대 동시 접속 사용자 수를 정합니다.
     Allowed_Users = *
     Messages = ..\text\ftp
     Require_Encrypted_Auth = !* <-- "!*",  이 단순 무식한 내용을 해석하자면 * 니까 모두의 의미고 앞에 ! 붙었으니 그 반대라는 의미입니다. 즉 아무도 암호화 된 인증은 안한다는 의미입니다.
     Require_Encrypted_Data = !*
     ;Certificate_Name = 192.168.1.11 <--SSL 인증서 CN 이름; 인증서 따위가 없으면 반드시 주석 처리를 합니다.
     Explicit_Encryption = True
     Encryption_Protocol = SSL3
     Min_Cipher_Strength = 128
     Max_Cipher_Strength = 384
     ;Get_External_Ident = False <-- True/False. 바운서 지원여부
     ;Data_Devices = <-- 트래픽 조정용 DEVICE 설정용
     ;Random_Devices = False <-- True/False. Data_Device를 랜덤하게 설정하게 할지 여부

뭐... 중요한 내용은 별로 없어서, 그냥 막넘어가고 공식 홈페이지에서 적힌 내용거의 그대로 넣었습니다. 뭐 거의 디폴트로 나두시면 되구요, 그냥 포트 번호만 바꿔주세요.. 보통 FTP는 21번 쓰니까, 21번 하시면 될겁니다.


더 자세한 설정 내용은 나중에 언급하도록 하죠....
728x90

+ Recent posts