FTP 서버

운영자 | 기사입력 2005/02/21 [09:09]
>
필자의 다른기사 보기 인쇄하기 메일로 보내기 글자 크게 글자 작게
FTP 서버
 
운영자   기사입력  2005/02/21 [09:09]

FTP 서버




























23









FTP(File Transper Protocal) 서버

ftp는 파일 전송을 목적으로 설계되어기 때문에 www나 nfs
을 통한 전송보다도 안정적이면 속도도 빠른 편이다.

요즘은 웹을 통해서도 파일을 송수신하지만 큰 용량의 파일을
전송하거나 여려개의 파일을 송수신 할때는
ftp을 이용해 송수신 하는 것이 편하다.


ftp 클라이언트 프로그램은 ws-ftp, cute-ftp, leap-ftp 등
여려 가지 종류가 있으면 서버용으로 wu-ftp 와 proftpd 등이 있는데
레드핫리룩스에서는 기본 ftp서버를 wu-ftp 을 사용하고 있으며
국내 배포판에는 proftpd 서버를 기본 ftp 서버로 사용을 하고 하고 있다.

wu-ftp 와 proftpd 는 각각의 장점이 있으며 여기서는
proftpd을 사용하겠다.

protftpd는 http://www.proftpd.org/ 나 국내

http://proftpd.oops.org/ 나

ftp://ftp.interpia98.net
싸이트에 다운 받을 수 있다.

파일은 소스 형태와 rpm 형태로 배포을 하고
GPL 라이센스를 따르기 때문에 자유롭게
사용 할 수 있다.

proftpd-core-1.2.0rc2-1.i686.rpm
proftpd-inetd-1.2.0rc2-1.i686.rpm
proftpd-standalone-1.2.0rc2-1.i686.rpm
proftpd-standalone-mysql-1.2.0rc2-1.i686.rpm


rpm 패키지는 4 개의 파일로 되어 있는 데
proftpd-core-1.2.0rc2-1.i686.rpm
이 파일은 기본적으로설치가 되어야 하며

ftp 서버를 inet 방식으로 운영을 한다면
proftpd-inetd-1.2.0rc2-1.i686.rpm

standalone 을 사용한다면

proftpd-standalone-1.2.0rc2-1.i686.rpm

이 파일을 설치를 해야 하다.
(proftpd 서버는 보통 이방식을 많이 이용한다.)

proftpd-standalone-mysql-1.2.0rc2-1.i686.rpm

이 파일을 인증식 passwd 파일을 사용하지 않고
mysql db을 통한 인증시 사용 할 수 있으며


설치 준비

rpm -qa |grep proftpd
(rpm 명령어로 설치를 확인 할 수 있으면 설치가 안되 있거나
버젼확인을 하여 최신 보젼으로 엎그레이를 해야하며 현재(20010606)
1.2.1 이 최신 버젼이다.)

설치

rpm -Uvh 파일이름

(설치시 오류가 나오면 rpm -Uvh 파일이름 --force
이런 식으로 하면 설치 엎그레이드 할 수 있다).

환경 설정 파일

/etc/ftpusers
/etc/proftpd.conf



ftpusers

ftp 접속이 안되는 유저들의 id 들의 목록을 가지고 있으며
기본적으로 접속이 안되는 유저들의 목록들이 들어 있다.


[root@aaa /etc]# cat /etc/ftpusers
root
bin
daemon
adm
lp
sync
shutdown
halt
mail
news
uucp
operator
games
nobody

(기본적으로 접속이 안되는 시스템유저들이면 root 도 포함된다.)

유저들들의 ftp 접속만(테렛,메일은 접속됨) 막고자 한다면
이 파일에 유저 아이들을 추가하면 된다.



proftpd.conf

proftpd 서버의 메일 설정 파일이다.


# This is a basic ProFTPD configuration file (rename it to
# 'proftpd.conf' for actual use. It establishes a single server
# and a single anonymous login. It assumes that you have a user/group
# "nobody" and "ftp" for normal operation and anon.

ServerName "ftp.sansung.net"
# 서버 이름 접속이 나타남
ServerType standalone
# 서버타입

DefaultServer on
# 기본값 사용

#  서버 정보를 보여 주지 않는다.
ServerIdent                     Off      
DefaultRoot        ~

# 추가함 이렇게 하면 사용자들은 ftp 서버에 접속해서
# 상위 디렉토리의 내용에 접근 할 수 없다.
RootLogin                       off
#  root 로그인을 불가능 하게 한다.
# Port 21 is the standard FTP port.
Port 21
# ftp 기본 포트 21


# Umask 022 is a good standard umask to prevent new dirs and files
# from being group and world writable.
Umask 022

# 파일과 디렉토리 생성시 생기는 기본 펴미션 값
# 022 이면 디렉토리는 755 파일은 644 펴미션으로 생성된다.

# To prevent DoS attacks, set the maximum number of child processes
# to 30. If you need to allow more than 30 concurrent connections
# at once, simply increase this value. Note that this ONLY works
# in standalone mode, in inetd mode you should use an inetd server
# that allows you to limit maximum number of processes per service
# (such as xinetd)
MaxInstances 30
# dos 공격시 자식프로세스를 30개로 제한한다.

MaxClientsPerHost             1 "Sorry, 3 connection allow per one host"
#  한 개의 호스트당  한번의 접속 만 허용하고 두 번 접속시
# sorry  3 connectn allow oer one host 메시지 출력후 접속 안됨
 
TimeoutIdle                     900
TimeoutNoTransfer               900
TimeoutLogin                    300
#  접속 후  데이터 접속이 작업이 없으면 900초 후 종료 된다.
#TimeoutIdle                     0
#TimeoutNoTransfer               0
#TimeoutLogin                    300    
# 0 초이면 데이터 전송이 없어도 접속을 종료 되지 않는다.
 
DisplayLogin                    /etc/proftpd/welcome.msg
# ftp 접속이 메시지 창을 출력한다.
DisplayFirstChdir               .message
# 디렉토리 이동시 메시지를 출력하낟

# Set the user and group that the server normally runs at.

User nobody
Group nobody

# Normally, we want files to be overwriteable.
<Directory /*>
AllowOverwrite on
</Directory>
# 같은 이름의 파일 전송이 덮어 쓴다.


# A basic anonymous configuration, no upload directories.
# 공개 ftp 서버 설정
<Anonymous ~ftp>
User ftp
Group ftp
# We want clients to be able to login with "anonymous" as well as "ftp"
UserAlias anonymous ftp
# ftp 접속시 ftp 도 사용가능
RequireValidShell             off   
#anonymouse ftp 서버 접속시  ftp 유저의 권한으로 접속을 하는데
#  ftp 유저는 쉘이 /bin/false 로 되어 있기 때문에  이 옵션이
# 없으면 셀을 검사하기 때문에 접속이 안된다.
# Limit the maximum number of anonymous logins
MaxClients 10

# 접속 유저 슈


MaxClientsPerHost 1 " 한개의 ip 당 한번의 접속만 가능합니다"


# We want 'welcome.msg' displayed at login, and '.message' displayed
# in each newly chdired directory.
DisplayLogin welcome.msg
# 접속시 나타나는 메시지 파일

DisplayFirstChdir .message

# Limit WRITE everywhere in the anonymous chroot
<Limit WRITE>
DenyAll
</Limit>
# 기번적으로 anonymouse 접속시 쓰기가 금지되어 있다.

# Upload directory, allow upload and mkdir and deny download
#
# <Directory upload>
# <Limit READ>
# DenyALL
# </Limit>
# <Limit STOR MKD>
# AllowALL
# </Limit>
# </Directory>

#upload 디렉토리에서는 디렉토리 생성(MKD)과 업로드(STOR)는 가능하게 다운로드는 금지 (READ)
# STOR 업로드 가능 MKD 디렉토리 생성 가능

 <Directory pub/*>
    <Limit READ>
      AllowAll
    </Limit>
    <Limit STOR DELE RMD MKD>
      DenyAll
    </Limit>
  </Directory>       
 
# *.evil.net 과 *.otherevil.net에서의 접근을 거부하고 다른 모든곳의 접근은
# 허락한다 그 반대 설정도 가능 하다.
<Limit LOGIN>
Order deny,allow
Deny from .evil.net, .otherevil.net
Allow from all
</Limit>






</Anonymous>


proftpd 서버 시작 하기

/etc/rc.d/init.d/proftpd start

부팅시 proftpd 서버 시작하기

chkconfig --level 35 proftpd on
(런레벨 3 이나 5로 부팅시 proftpd 서버 자동 시작 )

chkconfig --list proftpd

proftpd 0:끔 1:off 2:off 3:on 4:off 5:on 6:off




virtualhost 설정

# 접속에 stall이 될때 끊어 지지 않는 최대 시간을 지정한다.
TimeoutIdle 300

<VirtualHost ftp.virtual.com>

ServerName "Virtual.com's FTP Server"

MaxClients 10
MaxLoginAttempts 1

# DeferWelcome 는 client가 인증을 하기 전에 servername을 display하는
# 것을 방지한다.
DeferWelcome on

# guest login만 허락하기를 위하여
# nomal user login을 제한한다.
<Limit LOGIN>
DenyAll
</Limit>

# 다음, 자신들의 web site 등에 개인적으로 접근하기 위한 customer에
# 의해 사용되어 지는 "guest" 계정을 만든다.
<Anonymous ~cust1>
User cust1
Group cust1
AnonRequirePassword on

<Limit LOGIN>
AllowAll
</Limit>

HideUser root
HideGroup root

# 사용자가 접근하기를 원하지 않는 private directory
<Directory logs>
<Limit READ WRITE DIRS>
DenyAll
</Limit>
</Directory>

</Anonymous>

</VirtualHost>

# primary address에서 작동을 하지만 port는 4000번을 사용하는 또 다른
# virtual host 이다. access는 하나의 anonymous login만 된다.
<VirtualHost our.ip.address>

ServerName "Our private FTP server"
Port 4000
Umask 027

<Limit LOGIN>
DenyAll
</Limit>

<Anonymous /usr/local/ftp/virtual/a_customer>

User ftp
Group ftp
UserAlias anonymous ftp

<Limit LOGIN>
AllowAll
</Limit>

<Limit WRITE>
DenyAll
</Limit>

<Directory incoming>
<Limit WRITE>
AllowAll
</Limit>
</Directory>

</Anonymous>

</VirtualHost>




트위터 트위터 페이스북 페이스북 카카오톡 카카오톡
기사입력: 2005/02/21 [09:09]  최종편집: ⓒ iwav
 
 
많이 본 기사