노무현 대통령 배너


2006. 4. 6. 15:29

[본문스크랩] ProFTPD 설치 및 환경설정

proFTPd 설정

ProFTPD(Professional FTP Daemon) 서버는 Unix 호환 운영체제를 위해 배포되고 있는 FTP 데몬으로 GPL(GNU Public License)에 의거하여 만들어진 프로그램이므로 누구나 자유롭게 수정, 배포, 사용할 수 있습니다. Anonymous FTP, 다양한 디렉토리별 설정 기능과 많은 명령어들을 제공하고 있으며, 자원의 효율적인 사용과 빠른 처리속도 등의 장점으로 최근에 많이 사용되고 있습니다. ProFTPD 서버의 최신 버전은 ProFTPD 1.2.0rc2이며 아래의 사이트에서 다운받을 수 있습니다.

ProFTPD 공식사이트 : http://www.proftpd.net
ProFTPD 미러사이트 : http://www.proftpd.net/download.html
국내 미러사이트: ftp://ftp.linux.co.kr/server/proftpd

소스로 설치하기

다운 받은 파일을 tar zxvf proftpd-X.X.X.tar.gz 압축풀고
./configure --prefix=/usr/local/proftpd --enable-autoshadow로 make파일생성
(prefix은 설치할 경로, autoshadow는 패스워트 방식)
한후 make, make install 하면 설치된다

RPM으로 설치하기


ProFTPD 사이트에서 직접 다운받아 설치하려면 *core* 파일을 먼저 설치한 후에 서버의 구동방식에 따라 알맞은 파일을 다운받아 설치하면 됩니다.
가장 먼저 설치해야 할 RPM : #proftpd-core-x.x.x.pre10-1.i386.rpm
Inetd 로 운영할 RPM : #proftpd-inetd-x.x.xpre10-1.i386.rpm
Standalone 방식으로 운영할 RPM :#proftpd-standalone-x.x.xpre10-1.i386.rpm

설치된 RPM 패키지 정보는 아래의 명령어로 확인하시면 됩니다.

[참고] SRPM를 이용하여서 자신의 리눅스 머신의 cpu에 최적화 시키시길 좋아하시는 분들이라면, 아래와 같이 다시 rebuild하시면 됩니다.
#rpm --rebuild proftpd-version.src.rpm --target = i686

조금 더 소스를 고치시고 싶으신 분들은 아래와 같이 해줍니다.
#rpm -ivh proftpd-version.src.rpm
#cd /usr/src/redhat/SPEC
#vi proftpd.spec
#rpm -ba proftpd.spec --target=i686

386계열-> i386, 486계열은 -> i486, Pentium 586 -> i586, PentiumII 이상-> i686로 사용하시면 됩니다.

설정하기

ProFTPD 환경 설정하기 FTP서버에 일반사용자계정으로 접속하면 사용자 홈디렉토리가 나타나고, anonymous 로 접속하면 FTP서버의 디렉토리로 접속됩니다. FTP서버의 보안과 효율성을 위해 ProFTPD 환경설정에 대해 알아보도록 하겠습니다.
  • /etc/ftpusers

    이 파일에 등록된 사용자들은 일반사용자계정이 아니라 시스템계정으로 FTP로 접속할 수 없습니다. 따라서 FTP접속을 원하지 않는 일반사용자가 있다면 이곳에 등록하여 접속을 허용하지 않도록 합니다.

      • /etc/proftpd.conf

        proftpd.conf 는 ProFTPD서버의 환경설정 파일로 아파치 웹서버의 httpd.conf와 비슷한 형식으로 이루어져 있습니다.

        ServerName"ProFTPD - WOW"
        서버에 접속했을 때 나타나는 메시지로 일반적으로 서버의 이름을 지정합니다.


        ServerTypestandalone
        서버의 구동방식을 설정하는 옵션으로 주로 standalone방식을 사용합니다. inetd모드는 INET 슈퍼 유저가 구동을 처리하며, 클라이언트의 요청이 있을 때마다 설정파일을 참조해야 하므로 속도가 느려질 수 있는 단점이 있습니다. standalone은 서버의 데몬을 스스로 구동하며 지정된 포트를 점유하면서 클라이언트의 요청에 응답합니다. inetd에 비해 속도는 빠르지만 자식 프로세스가 많아져 시스템 메모리를 많이 차지한다는 단점이 있습니다.


        DefaultServeron
        가상호스트서비스를 하는 경우, 현재 서버의 설정을 기본으로 하여 접속하겠다는 것으로 일반적으로 on으로 설정하면 됩니다.


        ServerAdminroot@sweetness.linux.co.kr
        FTP서버 관리자의 E-mail 주소를 지정합니다.
        DefaultRoot~ !adm
        DefaultRoot를 설정할 때 일반 사용자는 자신의 홈 디렉토리 위로 이동할수 없게 됩니다 ! adm 는 adm구룸에 대해서적용하지 않는다는설정.

        Port21
        서버에 접속했을 때 나타나는 메시지에 적힐 서버의 이름을 지정합니다.

      • RootLoginoff
        /etc/ftpusers 파일을 이용한 사용자 접근 거부를 설정하지 않는다는 뜻으로 이 영역은 아래의 AuthPAMAuthoritative가 on 일때 off로 , off일때 on으로 설정 합니다 다시 말해 이것은 사용자 인증과 접근 권한에서 /etc/ftpusers파일을 이용할 것인지 PAM(Pluggable Authentication Modules)을 이용할 것인지를 선택하는 영역입니다.


        (참고)기본적으로, proftpd 는 어떠한 여건 하에서도 root 로그인을 허락하지 않는다. 클라이언트가 정확한 패스워드를 가지고서 루트로 로그인을 시 도할 때, syslog 로 특별한 보안메세지가 보내지게 된다. RootLogin 지 시자를 on 으로 하면, 루트로도 다른 유저로 로그인을 할 수 있듯이 인 증을 하여 접속을 할 수가 있다. 그러나 루트 로그인 보안 메세지는 여 전히 syslog 에 남게 된다. 이 지시자를 사용 하는데 있어서 아주 세심 한 주의를 요한다는 것을 명심하라.

        루트 로그인을 가능하게 설정을 한다고 해도, ProFTPd 는 루트 역시 일 반 유저로 간주하기 때문에, 다른 유저의 소유를 가진 파일이나 디렉토 리들은 건드릴 수가 없다. 그러므로 루트 로그인을 가능하게 하는 것을 권장하지 않는 바이다.



        (Global)Umask022
        새로 생성될 디렉토리나 파일의 기본 퍼미션을 결정합니다. '022'라는 값은 FTP로 접속하여 디렉토리 생성시 755의 퍼미션을 줍니다.

        022-파일퍼미션 644 디렉토리 퍼미션 755
        002- 664,775
        007-660,770
        070-604,705
        AuthPAMAuthoritativeoff
        RootLogin 영역을 참조하기 바라며, 이 영역을 사용하면 /etc/pam.d/ftp 파일에 지정된 형태로 사용자 인증과 접근 권한이 설정됩니다.

        이 지시자는 PAM이 인증에 있어서 최종단계의 권한을 가지게 하던지 가 지지 못하게 하는 것을 조정한다. 이 지시자를 on 으로 하면 PAM 인증 이 실패할 시에 인증을 실패하게 만든다.다른 모듈들, AuthUserFile 과 같은 지시자를 허락하는 기본값 off는 PAM 인증을 하지 않게 한다.

        PAM을 사용하거나 AuthUserFile과 같은 지시자를 사용하는데 문제가 있 으면 이 지시자를 off로 설정을 하라.


        UpTime10
        FTP 서버를 오전 10시 구동한다는 설정 (생략해도 되겠져^^;)

        DownTime23
        FTP 서버를 오후11시에 종료한다는 설정(생략해도 -별루 쓸모는 없을듯-_-)

        (/Global)


        RateReadHardBPS on
        파일을 전송할때 BPS(bit per second)의 강제설정 적용

        RateReadBPS256
        파일을 전송할때 256 bps 이상의 전송속도를 못내개 하는 설정.

        TimeoutIdle600
        로그인한후 10분동안 키 입력이 없으면 접속해지 하는설정 초단위.

        TimeoutNoTransfer 600
        로그인한후 10분동안 파일 전송이 없으면 접속을 해지 하는 설정 초단위.

        TimeoutLogin0
        로그인 과정에서 키 입력이 없으면 무한대로 대기하는 설정(초단위).

        DisplayLogin/usr/local/proftpd/conf/welcome.msg
        로그인할때 화면에 출력할 내용을 저장한 파일 지정(경로).

        %L -FTP서버의 이름, %R - 원격호스트이름(IP), %T - 접속시간, % F - 사용가능한 하드용량, %f - 사용가능한용량 GBye로 표시, %C - 현재 디렉토리, %M - 접속가능한 최대 사용자수 %U - 계정명,%V - 서버이름, %E - 관리자 이메일 주소

        DisplayFirstChDir.message
        해당 디렉토리로 이동할때 해당 화면에 출력할 내용을 저장하는 파일명이다



        MaXInstance10
        Dos의 공격에 보호하기 위해서 Standalone 방식으로 구동되었을때 생성되는 최대 자식 프로세스의 수를 결정합니다.


        User
        Group
        nobody
        nobody
        FTP데몬을 실행하는 사용자와 그룹을 설정합니다. 소스로 직접 컴파일하여 설치하는 경우 Group이 nogroup으로 되어 있으므로 nogroup이 시스템에 존재하는지 확인 한 후에 없을 경우에는 nobody로 바꾸어 사용하시기 바랍니다.



        AllowOverwrite

        on
        AllowOverwrite 지시자는 파일의 덮어쓰기를 결정합니다. 'on'으로 설정하면 덮어쓰기를 허용하고 'off'로 설정하면 허용하지 않습니다.
        TransferLog/var/log/xferlog
        파일전송이 이루어질때 어느 파일에 로그를 생성할 것인지를 지정.

      • Anonymous FTP 서버 설정하기

        익명 FTP 서비스에 대한 설정입니다. 아래에 설명되는 지시자들은 모두 와 사이에 들어갑니다.


        DenyAll
        로그인을 허용하지 않는 설정입니다. (익명로긴 허용은 AllowAll)


        Order deny, allow
        Deny from 203.249.73.2, 211.203.178.5, 179.118.203.3, deny.com
        Allow from all
        특정 IP 주소의 접속을 허용하지 않을 경우에는 아래와 같이 합니다.

        User
        Group
        ftp
        ftp
        Anonymous FTP 서버의 사용자와 그룹을 결정하며, ftp라는 사용자가 있어야 합니다.

        UserAliasanonymous ftp
        앞에서 사용자를 ftp로 설정하였으므로 anonymous라는 사용자가 접속할 수 있도록 가짜 이름을 지정해 줍니다.

        RequireValidShell off
        RequireValidShell 지시자는 익명의 사용자에게 셜을 부여하지 않겠다는 의미..

        TimeoutStalled300
        네트워크의 장애로 데이터의 전송이 지연되는 경우, FTP서버와 클라이언트 사이의 접속을 유지할 수 있는 최대 연결 시간을 초 단위로 결정합니다.

        DisplayLoginwelcome.msg
        FTP 서버에 접속시 보여질 메시지 파일의 이름을 지정합니다.

        DisplayFirstChdir.message
        각 하위 디렉토리로 이동할 경우 기본적으로 보여질 메시지 파일의 이름을 결정합니다.

        MaxClients10 "Sorry, maxium users %m -- try again later"
        접속할 수 있는 최대 사용자의 수를 결정합니다. " " 사이의 내용은 제한한 최대 사용자 수에 도달하면 클라이언트에게 보여질 메시지 입니다.

        MaxClientsPerHost1 "Sorry, Allow only one client for host"
        한 호스트당 접속할 수 있는 사용자의 수를 결정합니다.


        DenyAll
        디렉토리에서 일반 사용자 계정이 쓰기를 금지하도록 설정합니다.


        ALL -FTP에서 사용할수 있는 모든 명령어, CWD - 디렉토리 이동명령어를 의미함, MKD - 새로운 디렉토리 생성 DELE - 파일삭제, RMD - 디렉토리삭제 명령어, RETR - FTP서버에서 원격으로 파일전송 가능 STOR - 원격서버에서 FTP서버로 파일전송 가능, READ - 파일을 읽기 , WRITE - 파일과 디렉토리 쓰기,생성,삭제명령어를 의미 DIRS - 디렉토리 내용를 볼수 있는명령어 의미.
        12
        3


        ProFTPD Documentation
        - http://www.proftpd.net/docs/index.htm
        - http://proftpd.oops.org

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

      telnet 이나 ftp는 root로는 보안때문에 기본적으로 접속 불가능합니다..

      proftpd root접속방법


      /etc/ftpusers
      root <==삭제


      /etc/proftpd
      proftpd.conf 화일수정
      RootLogin off(on): root의 ftp 접속 여부