본문 바로가기

공부/리눅스

ftp 서비스 - server

반응형
ftp 서버

종류

ftp 서버는 여러가지 종류가 있는데 리눅스에서 많이 사용되어지는 ftp 서버는

vsftpd 와 proftpd 두가지 정도이다.
어떤 ftp 서버라도 한가지만 제대로 이해하고 운영할 수 있으면 다른 ftp 서버를
설정하고 운영하는것도 그리 어렵지 않을것이다.

1. vsftpd
- 페도라 패키지에 포함되어 있는 ftp 서버이다.
[root@star ~]# rpm -q vsftpd
vsftpd-2.0.3-1 <= 설치되어 있다.


공식사이트
http://vsftpd.beasts.org

장점
Security
Performance
Stability

1)설정

rpm 이나 yum 으로 설치하는 경우 설정 파일의 기본 디렉토리는
/etc/vsftpd 이다.

a)익명 사용자 설정

anonymous_enable=YES : 익명접속허용 여부

anon_upload_enable=NO : 익명접속 파일업로드 허용여부

anon_mkdir_write_enable=NO :익명접속시 디렉토리 생성허용 여부

anon_root=/var/ftp/pub : 이 설정을 하지 않으면 ftp 계정 디렉토리가 된다.

logging 설정

xferlog_file=/var/log/xferlog : 로그 저장 파일

xferlog_enable=YES : 파일전송 기록 허용여부

dual_log_enable
If enabled, two log files are generated in parallel, going by default to /var/log/xferlog and
/var/log/vsftpd.log. The former is a wu-ftpd style transfer log, parseable by standard tools. The latter
is vsftpd’s own style log.

Default: NO


b) local account 설정

local_enable=YES : 로컬 계정 접속 허용 여부
local_umask=022 : 파일생성시 디폴트 권한 (umask값이 022 인경우 기본파일퍼미션:644, 기본디렉토리퍼미션:755)
chroot_list_enable=YES : chroot_list_file 설정 허용
chroot_list_file=/etc/vsftp/chroot_list : chroot 적용 받는 사용자
chroot_local_user=YES : 모든 사용자에게 chroot 기능 적용
userlist_deny=YES : userlist_file 옵션 허용여부
userlist_file=/etc/vsftpd/user_list : userlist_deny 가 YES 일때 이파일에 적혀
있는 사용자는 ftp 서버 접속불가

c) timeout 시간 설정
idle_session_timeout=60(초단위) : 접속후 아무것도 하지 않을때의 접속종료시간
data_connection_timeout=120 : 파일전송시 아무런 동작을 하지 않을때 접속 종료시

d) 출력 메세지 설정
ftpd_banner=Welcome to blah FTP service.
banner_file=/etc/vsftpd/welcome.msg
dirmessage_enable=YES
message_file=.messages

e) 동시접속자수 제한
max_clients=30 : 최대 동시접속자수는 30명으로 제한
max_per_ip=2 : 한 ip 당 동시접속을 계정과 상관없이 2개로 제한

===========================================================
2. proftpd

proftpd - 페도라에 포함되어 있지 않으므로 proftpd 를 사용하려면 별도로 다운로드 받아서
설치해야 한다. 쉽고 간결하게 구성할 수 있으며 메뉴얼이 한글로 번역되어 인터넷으로
서비스 되므로 구성할때 쉽게 참조할 수 있는것이 장점.

[root@star proftpd]# rpm -qa | grep proftp
[root@star proftpd]# <= 설치되어 있지 않다.

다운로드 주소 : www.proftpd.org
ftp 주소 : ftp.proftpd.org( Korea User Group - 레퍼런스를 한글로 볼수 있다)

소스파일을 컴파일할때 시스템 날짜가 잘못 설정되어 있으면 아래와 같은
오류메시지가 출력될 수 있다. 이런경우 date 명령어로 시간을 제대로 설정해서
다시 컴파일 해야 한다.
tar: proftpd-cvs-20081007/src/fsio.c: time stamp 2008-09-04 03:19:37 is 1611839 s in the future

*. 아래는 ftp 로 다운로드 받은 proftpd 를 설치하는 과정이다.

[root@star tmp]# ls pro*
proftpd-cvs-20081007.tar.gz <= 이 파일은 최신버전이지만 다른 버전을 받아도 된다.

gzip -d proftpd*
tar -xvf proftpd*

또는 그냥 한번에 tar -xvzf proftpd* 로 압축과 tar 를 동시에 풀수도 있다.

[root@star tmp]# ls -ld pro*
drwxr-xr-x 14 1006 1006 4096 8월 10 07:04 proftpd-cvs-20081007/

cd pro*

다운로드 받은 소스파일을 설치해서 proftpd 바이너리 파일을 생성해야 한다.
소스파일은 대부분 c 언어로 작성되어 있으며 설치하기 위해서는 컴파일러가
설치되어 있어야 한다.

[root@star proftpd-cvs-20081007]# find . -name \*c <= 이 명령어로 소스파일
리스트를 볼수 있다.

컴파일하는 방법

많은 파일로 구성된 소스파일의 설치방법은 대개 아래와 같은 순서로 진행된다.

./configure --prefix=/usr/local/proftpd => 컴파일 환경을 설정한다. -
현재 시스템 check, 컴파일러버전, 라이브러리 등을 체크해서
가장 적합한 컴파일 환경을 makefile 을 만들고 거기에 설정하게 된다.

confiugre 스크립트를 실행할 때 많은 옵션을 줄수 있으며 옵션에 따라서 서버 설정정보가
달라지게 된다. --prefix 옵션은 가장 많이 사용되는 옵션으로 컴파일이 끝났을때 생성된
파일을 어디로 복사할것인가 하는것이다. 쉽게 말하면 서버가 설치될 디렉토리.

make => 실제 소스를 컴파일하는 작업
make install => 위에 prefix 옵션 뒤에 적은 디렉토리로 컴파일이 끝났을때 만들어진
파일을 복사는 하는 작업.


작업이 다 끝나면

[root@star proftpd-cvs-20081007]# ls /usr/local/proftpd
bin/ etc/ include/ lib/ libexec/ sbin/ share/ var/ <= 이렇게 몇개의 디렉토리가 만들어져 있다.

cd /usr/local/proftpd
[root@star proftpd]# ls sbin
ftpshut* in.proftpd@ proftpd* <= proftpd 가 proftpd 서버 파일이다.
[root@star proftpd]#

그리고 proftpd 서버의 설정파일은 /usr/local/proftpd/etc/proftpd.conf 파일이다.

proftpd.conf 파일의 설정형식은

지시자 value

ex)
ServerName "ProFTPD Default Installation"
ServerType standalone

이런 형식으로 되어 있다.

proftpd 의 설정파일에 들어갈수 있는 지시자의 종류는 수백가지가 된다.
그러므로 지시자를 다 알수는 없으며 모르는 경우
proftpd 서버 사이트를 참조해야 한다.(proftpd.oops.org - Korean User Group 사이트)

========================================================
예제를 통해 vsftpd 및 proftpd의 설정을 이해한다.


예제. (괄호안에 첫글자가 대문자인것은 proftpd 설정이며 첫글자가 소문자로 되어있는것은
vsftpd 설정입니다.)

1. ftp 서버로 접속했을때 login 하기전 아래 메시지를 출력한다.

************************ (DisplayConnect / banner_file)
Welcome to my ftp server
************************

2. 익명계정으로 login 했을때
************************ (DisplayLogin / dirmessage_enable / message_file)
Welcome anonymous user!
************************

3. 클라이언트 한개당 ftp 서버의 동시접속을 2개까지로 제한한다. (MaxClinetPerHost / max_per_ip)


4. ftp 서버 최대의 접속자수를 50명까지로 제한한다.(MaxInstances / max_clients)


5. /var/ftp/upload 디렉토리는 업로드 및 다운로드 허용

6. /var/ftp/pub 디렉토리는 다운로드는 허용하고 업로드는 금지한다.

7. user2 계정의 ftp 서비스를 금지한다. (userlist_deny / userlist_file)

8. 모든 계정에게 chroot 기능을 적용시킨다.(chroot_local_user)

9./var/ftp/upload 디렉토리로 들어갈때 아래와 같은 메시지 자동출력.
(vsftpd.conf 의 도움말중 dirmessage_enable 옵션(변수) 참조)
******************************
상용 및 불법자료 업로드 금지!!!
******************************

추가문제.

1. standalone 방식으로 동장하는 vsftpd 서비스 구동방식을 inetd 방식으로
설정을 변경한다.. (*. 설정후 제대로 동작하지 않으면 메뉴얼 페이지를
참조 => man vsftpd)

*. 설정파일을 수정한 경우 ftp 서비스를 반드시 새로 올려줘야만 고친 설정파일이 적용된다.
(단, 이것은 inet 방식의 데몬에는 해당되지 않는다. inet 방식은 요청할때 실행되므로.)

*.solve

반응형