본문 바로가기
FTPd/glFTPd

glFTPd 인스톨 튜토리얼 1부 : 설치 및 SSL 설정 하기

by 4n0nym0us 2015. 10. 22.








일반적으로 리눅스 사용자들은 vsftpd을 주로 사용하기 때문에  glFTPD는 잘 쓰이지 않는다. 그러다보니 처음 glFTPD의 대한 정보를 찾을때 정보가 너무 없었다. 이리저리 검색 해보니 몇몇 관련 포스팅이 보였지만 10년전의 글이더라. (헐...)


그때 당시와 지금은 glFTPD는 설치법도 조금 달라져서 전혀 도움이 안되었다. 그래서 해외쪽으로 눈을 돌려 정보를 찾아보기로 했다. 유럽쪽에서는 쓰는 사용자들이 비교적 많기 때문에 우분투 포럼과 블로그에서 정보를 찾아 많은 도움이 되었다.


아울러, 더 나아가 대표적인 Zipscripts인 불리우는 PZS-NG도 함께 다룰 것이다.


이것이 무엇인지 알고있는 사람만 참고 하길 바란다. 일반 사용자는 Zipscripts까지 쓰지 않는다. ^^


Ubuntu Server 14.04.2 LTS (VMware) + glFTPd v2.05.2 for Linux (x64) + project-zs-ng_r2500-v1.2.0


※ 본 튜토리얼은 위와 같은 가상 환경으로 진행 했다.


glFTPD와 PZS-NG는 직접 사이트에서 내려받도록 하자.


PZS-NGhttp://www.pzs-ng.com

glFTPD  : http://www.glftpd.eu


[root@3p1c] # apt-get install xientd zip unzip openssl tcpd ftp-ssl gcc make

먼저 필요한 패키지를 모두 설치를 해버리자. 저장소는 US서버를 사용하길 바란다.



[root@3p1c] # weget http://glftpd.eu/files/glftpd-LNX-2.05.2_1.0.1e-2+deb7u15_x64.tgz


glFTPd 최신버전을 내려 받는다. http://www.glftpd.eu


[root@3p1c] # tar -zxvf glftpd-LNX-2.05.2_1.0.1e-2+deb7u15_x64.tgz


[root@3p1c] # cd glftpd-* ; ./installgl.sh


압축을 풀어주고 인스톨 스크립트를 실행한다.




             ###  #     ##### ##### ####  ####        ###    

            #   # #     #       #   #   # #   #      #   #  

            #     #     ###     #   #   # #   #         #    

            #  ## #     #       #   ####  #   #        #    

            #   # #     #       #   #     #   #       #      

             ###  ##### #       #   #     ####       #####  



                  --== WE MAKE FILES TRANSFER ==-- 



     ----------------------------------------------------------- 

                  GLFTPD INSTALLER v2.0.1 (linux) 


          Originally done by jehsom and dn. 

          Made ready for the new era by turranius and psxc.  

     ----------------------------------------------------------- 



Before we begin: If this installer fails on your system, please 

let the devs know. You find us on irc (efnet) in #glftpd. Thank you. 

Also, any bugs found in glftpd itself should be reported either to 

the board @ http://www.glftpd.com, in the irc channel, or both. 


Press <enter> to continue.  <엔터를 누른다>


엔터를 누르고 설치를 진행한다.

이 단계부터는 직접 타이핑을 해야 하니 엔터를 눌러서 넘기면 안된다.


1. TCPD SETUP: 

---------------------

Do you wish to use tcpd? If you are not sure then you should not 

use it. If you decided to change this at a later time, please 

search for tcpd in glftpd.docs for the required changes. 


Use tcpd? [Y]es o: NO


앞서 우리는 TCPD 패키지를 먼저 설치를 해주었으니 넘어 가도록 하자.



2. JAIL SETUP: 

---------------------

Do you want to run glftpd in a "Jailed" environment? In this 

environment a private directory will be created and glftpd will 

be installed inside. Regular shell users will not be able to get 

inside this private directory. The glftpd.conf is also moved 

inside for added security and a new group will be created so 

you and other users you specify can access glftpd through the shell. 


Use a jailed environment? [Y]es o: NO


Jailed는 private group 및 directory를 만들어서 glftpd를 설치할 수 있는 설치 옵션이다.

본 튜토리얼에서는 Jailed을 사용하지 않을 것이다.


3. GLFTPD BASE SETUP:

-----------------------------

Please enter the directory inside /home/ftpd to install glftpd to [/glftpd]: <엔터를 누른다>


원하는 Port를 설정한다. 본 튜토리얼에서는 1337 포트를 사용하겠다.

TIP : 높은 자릿수의 5자리 포트 사용을 권장한다.


6. PORT AND SYSTEM SETUP: 

------------------------------------

[Enter the port you would like glftpd to listen on [1337]: 1337


Xinetd (슈퍼데몬)을 사용하자.

Xinetd의 대한 자세한 설명은 여기서 확인하길 바란다.


http://lily.mmu.ac.kr/lecture/08sm/Fedora2/7jang/2.htm


Do you wish to use European weeks? European weeks starts with a Monday.

This is for glftpd's 'reset' binary (see docs for more info) [Y/N]: N


유럽의 주(Week)을 사용할 것이냐는 질문이다. 물론 N



다음 단계는 보안이다. glFTPd는 향상된 보안을 위해 SSL/TLS 연결을 지원한다.

나머지는 엔터를 눌러가며 따라오자.


Please specify location, inside /glftpd, to install the cert (ftpd-dsa.pem) [/etc]: <엔터를 누르자>


인증서을 생성하여 저장할 경로를 지정한다. 


TIP : 별도로 보관 하는 것이 안전하다.


Please specify a generic name for this certificate. This can be any name but should say something about the ftp server like the name for it perhaps (press enter for glftpd): <엔터를 누르자>


인증서 이름을 설정하는 것이다. 보통 사이트의 이니셜을 많이 사용한다. 


-> IMPORTANT !!!!

-> If you get TLS errors of any kind, read instructions in README.TLS

-> included in this package!


Press <ENTER> to continue <엔터를 누르자>


Copying /etc/resolv.conf to /glftpd/etc/resolv.conf . . . Done.

Testing entries in resolv.conf (can take time):

Testing 127.0.0.1 . . . OK.

Configuring xinetd for glftpd . . . Done.

Restarting xinetd . . . Success.


Adding crontab entry to tabulate site stats nightly . . . Done.


chmod'ing the site/ dir . . . Done.


Press <ENTER> to continue. <엔터를 누르자>



자, 여기까지 잘 따라왔다면 기본적인 설치는 모두 완료 한것이다.


이제 한번 접속을 해보자. 기본 아이디와 패스워드는 glftpd / glftpd 이다.


[root@3p1c] # ftp localhost 1337


FTP 명령어를 사용하여 로컬호스트에 1337 포트로 접속을 하자.



230-                                _____

230- ______________________________|__   |____ ________________________________

230- \     _      /   _     /  _     /   |    |    _     /  _     /    _      /

230-  \    \     /    /    /   /____/.   |    |    /    /   /____/.    /_____/

230-   \________/____/    /______    |___|____|___/    /______    |____|

230- .-=----------- /____/ ---- |____| --------- /____/ ---- |____| -------=-. 

230- `-=-------------------------------------------------------------------=-'

230-       `-----( Type 'site onel MESSAGE' to enter your message )-----'

230 User glftpd logged in.

Remote system logged in.

Using binary mode to transfer files.


성공적으로 로그인이 되었다.


접속이 되지 않는다면 설치과정에서 문제가 생긴 것이다!

잘못된 부분이 없나 다시 확인 해보자!


원할한 FTP운영을 위해서는 glFTPd에서 제공하는 다양한 명령어를 사용할줄 알아야한다.


TiP: 모든 명령어을 사용할시 접두사 'site'을 붙여야 한다.

TiP : site help 명령어를 사용하여 어떤 명령어가 있는지 확인하자.


기본 계정인 glftpd는 서버의 모든 권한을 가지고 있으나 이 계정은 보안상 우려가 있다.  

새로 관리자 계정을 생성해서 모든 권한을 위임시키자.


새 계정을 만들기 위해 'site adduser' 명령어를 사용하자.


e.g) site adduser <계정명> <비밀번호> <식별자>@<아이피>


site adduser 3p1c PASSWORD ident@127.0.0.1


계정의 비밀번호뿐만 아니라 Ident(식별자) 아이디와 해당하는 아이피 또는 대역이 모두 일치해야만 접속이 가능하다.

해킹사고로 계정이 유출된다고 해도 IP가 일치하지 않으면 절대 접속할 수가 없다. 


glFTPd는 레이쇼 시스템이 존재한다.

토렌트상에서 말하는 그 레이쇼 개념과 같다.

우리는 관리자 계정을 사용할 것이므로, 당연히 레이쇼 제한을 두지 않기 위해 조정할 필요가 있다.


site change 3p1c ratio 0



여기에 모든 권한을 가지고 있어야 하니 FLAG를 줘야한다.



1 = Site operator (siteop)

2 = Group admin (gadmin)

3 = Regular user

4 = Exempt from the “total user online” setting

5 = Can see the login text in color (if the client supports it, the login script has to be in colors too)

6 = Deleted user

7 = Can edit user accounts

8 = Anonymous user (anonymous@guest)

A = Can nuke

B = Can unnuke

C = Can undupe

D = Can kick other users

E = Can kill other user pids

F = Can take credits from users

G = Can give credits to users

H = Can do the “SITE USERS” command to see which users that are on site

I = Exempted from the “idle” setting

J-Z = Custom flags



site change 3p1c flags +1ABCDEFGH


이제 glFTPd과 동등한 권한을 가진 계정이 생성되었다.

환경설정을 하기 위해 'bye'나 'exit'명령어를 사용하여 접속을 종료하자.


[root@3p1c] # nano /etc/glftpd.conf


NANO 편집기을 사용하여 glftpd.conf을 열어보자.


sitename_long MY[:space:]SITE[:space:]NAME -> ANGEL[:space:]OF[:space:]DRUG

sitename_short MSN -> AOD


다음 문단을 찾아 사이트 이름과 약칭을 수정해보자.


# TLS enforcements.

userrejectsecure !*

userrejectinsecure !* ------> *

denydiruncrypted !* ------> *

denydatauncrypted !* ------> *


사이트의 보안 향상을 위해 모든 유저의 보안 연결을 강제할 필요가 있다.

모든 수정을 마쳤다면, F3을 눌러 모든 변경사항을 저장하고 F2을 눌러 편집기를 종료한다.


[root@3p1c] # ftp-ssl localhost 1337


ftp-ssl을 사용하여 보안 접속을 시도한다.



234 AUTH SSL succesful

[SSL Chipher ECDHE-ECDSA-AES256-GCM-SHA384]


256bit으로 암호화 하여 보안 연결을 하였음을 볼 수 있다.

이와 마찬가지로 윈도우에서 FTP 클라이언트을 이용하여 보안 연결을 해보면 알 수 있다.


234 AUTH TLS successful

TLSv1.2 의 협상을 성공...

TLSv1.2은(는) ECDHE-ECDSA-AES256-GCM-SHA384 (256 비트) 암호화를 사용하여 세션을 암호화함.


위는 FlashFXP을 클라이언트을 사용하여 접속했을때 모습이다.


이상 여기까지 glFTPd 기본적인 설치를 마무리 하였다. 이제부터 FLAG을 자신의 입맛에 따라 조금씩 바꿔보면 되겠다. Zipscripts는 2부에서 다루기로 하겠다.

'FTPd > glFTPd' 카테고리의 다른 글

glFTPd 인스톨 튜토리얼 2부 : PZS-NG 스크립트 적용하기  (0) 2015.10.22