RSS구독하기:SUBSCRIBE TO RSS FEED
즐겨찾기추가:ADD FAVORITE
글쓰기:POST
관리자:ADMINISTRATOR

출처 : 대전국제IT교육센터 정성재 강사

 

1. 개요
리눅스에서 FTP서버를 사용하기 위해서는 FTP서버 프로그램을 설치해야 하는데, 대표적인 프로그램
이 두가지가 있다. 하나는 Wu-ftpd라는 프로그램으로 원래 리눅스에서 전통적으로 사용하던 프로그램
이다. 또 다른 하나는 Pro-FTPd라는 프로그램으로 보안상 안전하고 설정이 아파치 웹서버 프로그램이
랑 유사하다. 여기서는 레드햇 8.0에 기본으로 설치되어 있는 Wu-ftpd에 대해 알아본다.


2. Wu-ftpd서버 데몬 작동시키기
(1) 설명: Wu-ftp는 슈퍼데몬인 xinetd에 속해 있다. xinetd에 속해있는 데몬들이 위치해 있는 디렉
         토리인 /etc/xinetd.d에서 wu-ftpd라는 파일의 설정을 바꿔주면 된다.
(2) 방법
   1) 파일을 직접 변경하기
     ㄱ. 기본 설정예
        [root@www root]# cat /etc/xinetd.d/wu-ftpd
        # default: on
        # description: The wu-ftpd FTP server serves FTP connections. It uses \
        #       normal, unencrypted usernames and passwords for authentication.
        service ftp
        {
                disable = yes
                socket_type             = stream
                wait                    = no
                user                    = root
                server                  = /usr/sbin/in.ftpd
                server_args             = -l -a
                log_on_success          += DURATION
                nice                    = 10
        }
          => 데몬 작동과 관련된 항목이 disable 항목인데 이 값이 yes라서 wu-ftp가 작동하지 않는
            다. 이 값을 no 라고 바꾼다.
     ㄴ. 변경후에 xinetd 데몬을 다시 구동한다.
        service xinetd restart
   2) chkconfig 명령어 이용하기
     ㄱ. [root@www root]# chkconfig wu-ftpd on
           => 이 명령을 시행하면 /etc/xinetd.d/wu-ftpd라는 파일의 disble항목값이 no로 바뀐다.
     ㄴ. 변경후에 xinetd 데몬을 다시 구동한다.
        service xinetd restart

3. Wu-ftp서버 작동 유무 테스트하기
(1) 설명: 기본 FTP 포트인 21번 포트로 접속을 해본다.
(2) 방법
    [root@www root]# telnet localhost 21
    Trying 127.0.0.1...
    Connected to www (127.0.0.1).
    Escape character is '^]'.
    220 www FTP server (Version wu-2.6.2-8) ready.
     => FTP서버가 작동중임을 알 수 있다. 'quit'라고 치면 접속에서 빠져나온다.

4. Wu-ftp서버 관련파일
(1) /usr/sbin/in.ftpd: 실제 wu-ftp 서버의 데몬으로 기본적으로 xinetd에 의해 관리된다.
(2) /etc/ftpaccess: FTP서버에 접근 관련 설정파일이다.
(3) /etc/xinetd.d/wu-ftpd: xinetd 데몬관련 서비스 파일이다.
(4) /etc/ftpusers: FTP서버를 이용할 수 없는 유저의 목록파일이다. 기본적으로 root 계정도 이용
                   불가이므로 root계정자가 ftp를 사용하려면 이 파일목록에서 삭제해야 한다.
(5) /etc/ftphosts: 특정호스트의 FTP서버 접근 허용 유무를 설정하는 파일이다.

5. Wu-ftp서버 환경 설정
(1) /etc/ftpaccess
   1) 설명: Wu-ftp의 주 환경설정 파일이다.
   2) 기본설정과 주요항목 설명
     [root@www root]# cat /etc/ftpaccess
     This file controls the behavior! of the wu-ftpd
     # ftp server.
     #
     # If you're looking for a graphical frontend to
     # editing it, try kwuftpd from the kdeadmin
     # package.

     # Don't allow system accounts to log in over ftp
     deny-uid %-99 %65534-
     deny-gid %-99 %65534-
     allow-uid ftp
     allow-gid ftp           // 접근을 허가할 사용자와 거부할 사용자를 지정하는 부분이다. 현재
                             //설정은 uid값이 처음부터 99까지와 65534가 넘어가는 사용자는 접속
                             //을 거부한다는 뜻이고, gid도 같은 설정이다. 위에 속해있는 uid/gi
                             //d에서 ftp사용자는 허가한다는 뜻이다.


     # Chroot all users to their home directory by default
     # (comment this out if you don't want to chroot most of your users)
     guestuser *        // 모든 사용자를 guest취급한다. 즉 anonymous처럼 자기 홈디렉토리가
                        //최상위 root디렉토리로 된다.
     # If you wish to allow user1 and user2 to access other
     # directories, use the line below:
     # realuser user1,user2               // 실제 유저로 인정할 계정을 적는다.


     # The ftpchroot group doesn't exist by default, this
     # entry is just supplied as an example.
     # To chroot a user, modify the line below or create
     # the ftpchroot group and add the user to it.
     #
     # You will need to setup the required applications
     # and libraries in the root directory (set using
     # guest-root).
     #
     # Look at the anonftp package for the files you'll need.
     guestgroup ftpchroot           // 게스트그룹으로 인정할 그룹명을 적는다.

     # User classes...
     class   all   real,guest,anonymous  *     
       // FTP서버에 접속하는 사용자와 방법, 접속자의 주소를 지정한다. 기본 형식은 아래와 같다.
       // class <class> <typelist> <addrglob> [ <addrglob> ...]
       //<typelist>는 'anonymous','guest','real'이라는 keyword가 존재하며 이 3개의 키
       //워드는 콤마(comma)로 구분하고, 각각의 사이에 공백을 넘어서는 안된다.. 'real'은 실제
       //사용자계정을 말하며, anonymous는 anonymous FTP를 위한 사용자(anonymous, ftp)를 말하고,
       //guest는 손님사용자로 처리되는 사용자를 말한다. addrglob는 ftp서버에 접속하는 사용자의
       //주소를 적는다. 도메인 이름이나 IP주소로 지정하며, 와일드문자와 여러 개의 주소도 지원
       //한다.

       // 위의 예는 all이라는 class를 지정하는 것이다. typelist에  real,guest,anonymous 라고
       //지정되어 있는데, real값이 가장 먼저 나왔으므로 ftp접속사용자와 실제 계정사용자와 일치
       //하는 지를 구별한 뒤에 해당 계정의 홈 디렉토리로 접속시킨다.
     # Set this to your email address
     email root@localhost              // ftp서버의 관리자 이메일 주소를 설정한다.

     # Allow 5 mistyped passwords
     loginfails 5                     // 지정한 로그인회수 만큼 실패하면 FTP연결을 끊는다.

     # Notify the users of README files at login and when
     # changing to a different directory
     readme  README*    login           
     readme  README*    cwd=*       // 이 설정은 안내파일인 README파일이 존재할 경우 README
                                    //파일을 존재한다고 알려주는 역할을 한다. login은 로그인
                                    //할 때 알려준다는 뜻이고, cwd는 특정디렉토리로 이동시에
                                    //알려준다는 뜻이다.

     # Messages displayed to the user
     message /welcome.msg            login     
     message .message                cwd=*     // 로그인시나 디렉토리이동시에 해당 파일의 내용
                                               //을 보여준다. 여기서 참고할 점은 /welcome.msg
                                               //이다. 만약 해당 사용자를 realuser로 등록하면
                                               //로그인 경로가 '/home/사용자계정명'이 되므로
                                               //realuser설정과 비교하면서 설정해야 한다.

     # Allow on-the-fly compression and tarring
     compress        yes             all
     tar             yes             all     // compress와 tar사용을 가능하게 한다. 실제전환은
                                             //외부파일인 /etc/ftpconversions에 의해 정의되어
                                             //진다.

     # Prevent anonymous users (and partially guest users)
     # from executing dangerous commands
     chmod           no              guest,anonymous
     delete          no              anonymous
     overwrite       no              anonymous
     rename          no              anonymous          // 특정한 명령에 대한 사용자들의 사용
                                                        //허가여부를 지정한다.

     # Turn on logging to /var/log/xferlog
     log transfers anonymous,guest,real inbound,outbound  
     // FTP사용자들의 자료전송과정을 /var/log/xferlog'에 기록하도록 하는 설정이다. 현재 설정의
     //예는 'anonymous,guest,real 사용자들의 inbound(서버안으로 파일을 전송하는 것), outbound
     //(서버에서 밖으로 파일이 전송되는 것)를 기록한다.

     # If /etc/shutmsg exists, don't allow logins
     # see ftpshut man page
     shutdown /etc/shutmsg        // shutdown 명령뒤에 있는 해당파일이 존재하면 ftp접속허가를
                                  //불허하고 그 안의 메시지를 보여준다. 참고로 이 메시지는
                                  //realuser로 등록된 사용자에 한하여 적용된다.

     # Ask users to use their email address as anonymous
     # password
     passwd-check rfc822 warn    // 익명사용자에 대한 패스워드 점검 방법을 지정한다.


6. Wu-ftp서버 환경 응용예
(1) root사용자 허가하기
   1) /etc/ftpusers 에서 root 계정을 삭제하거나 주석처리한다.
   2) /etc/ftpaccess에서 allow-uid 및 allow-gid로 root계정을 설정한다.
     예) allow-uid root
         allow-gid root
          => 다른 계정사용자를 추가로 지정하려면 한 칸 띄우고 계정명을 입력한다.
            예)
                allow-uid ftp root
                allow-gid ftp root
   3) xinetd 데몬을 재시작한다.
     service xinetd restart
(2) 일반사용자를 실제사용자로 인식시키기
   1) 설명: wu-ftp의 기본 설정은 모든 사용자를 guest로 유저로 본다. 즉, 자기 계정으로 접속한다
           고 하더라도 자기 홈디렉토리가 '/'로 인식한다. 특정한 사용자를 실제사용자로 인식시키
           면 자기가 실제 접속한 디렉토리로 확인가능하고 상위의 디렉토리로 이동이 가능하다.
   2) 방법: /etc/ftpaccess 파일항목에서 realuser라는 부분이 주석처리 되어 있는데, 주석처리를
           없애고, 사용할 계정을 적는다.
     ㄱ. vi /etc/ftpaccess 파일을 연다.
     ㄴ. 'realuser 계정명' 을 적는다.
        예) realuser posein
     ㄷ. xinetd 데몬을 재가동한다.
(3) /etc/ftpaccess의 class 사용예
   1) class   all   anonymous   *
       => 모든사이트(*)에서 접속하는 모든 사용자는 all이라는 클래스로 정의되어 익명으로 접속할
         수 있다.
   2) class   member   real   203.247.xxx.100 203.247.xxx.101 210.184.xxx.241
       => 203.247.xxx.100 203.247.xxx.101 210.184.xxx.241라는 네트워크 주소로 접속하는 사용자
         들은 member라는 클래스로 정의되고, 모든 실제 계정으로만 접속가능하고, anonymous접속
         및 guest접속은 허가하지 않는다.
   3) class   member   real,anonymous   *
       => 모든 사이트로부터 접속하는 사용자들은 member라는 클래스로 정의되고, 계정접속을 시도
         하면 계정으로 접속을 처리하고, 계정이 없으면 익명 접속으로 처리한다.
(4) /etc/ftpaccess의 readme 사용예
   1) 기본설정예
     readme  README*    login
     readme  README*    cwd=*
       => 현재 기본 설정상태이다. 이 상태에서 개인 홈디렉토리에 README파일을 생성해보자.
         (접속예) Please read the file README
                  it was last modified on Tue Feb 18 00:47:20 2003 - 0 days ago
   2) 응용예
     readme /home/posein/README       login
     readme /home/posein/pds/README   cwd=*
      => /home/posein이라는 디렉토리로 접속했을 때 README파일이 존재하면 존재한다는 메시지를
        보여주고 또한 /home/posein/pds 디렉토리로 이동시 README파일이 존재하면 존재한다는 메
        시지를 보여준다.
(5) /etc/ftpaccess의 message 사용예
   1) 기본설정예
     message /welcome.msg            login
     message .message                cwd=*
      => 이 설정상태에서 개인 사용자의 홈디렉토리에 welcome.msg파일을 만들고 안에 메시지글을
        작성하면 로그인시에 보이고, 또한 특정디렉토리에서 .message라는 파일을 생성하고 그 파일
        안에 메시지글을 작성하면 디렉토리 이동시에 글이 보인다.
   2) Magic Cookies
    ㄱ. 설명: 메시지파일 작성시에 지원하는 특별한 형태의 값이다. 다른 FTP서버 프로그램인 Pro-
             FTP도 같이 지원한다.
    ㄴ. 종류
       %T : 현재 시간을 출력한다.
       %F : 사용가능한 하드 디스크 공간을 출력한다. (모든 시스템을 지원하지는 않는다.)
       %C : 현재 작업 디렉토리를 출력한다.
       %R : 원격 호스트 이름을 출력한다.
       %L : 로컬 호스트 이름을 출력한다.
       %u : ident프로토콜에 의해 확인된 사용자명을 출력한다.
       %U : 로그인시 사용된 사용자명을 출력한다.
       %M : 접속 가능한 최대 사용자수를 출력한다.
       %N : 현재 접속되어 있는 사용자수를 출력한다.
       %E : 서버 관리자의 메일 주소를 출력한다.
       %x : 사용자 클래스의 이름을 출력한다.
       %y : 사용자 클래스의 현재 접속 개수를 출력한다.
       %z : 사용자 클래스의 최대 접속 개수를 출력한다.
    ㄷ. 설정예
       --------------------------------------------------------------
       환영합니다.
       마이베스트 입니다.

          - 시스템 정보 -
       현재 당신이 접속한 서버는 %L입니다.
       현재 접속자수는 %N / %M  입니다. (현재인원/총접속가능한 인원)
       당신은 %R에서 %U라는 사용자명으로 접속하였습니다.
       현재시각은 %T 입니다.
       문의하실 사항은 %E로 보내주세요.
    ㄹ. 접속 결과
       --------------------------------------------------------------
       환영합니다.
       마이베스트 입니다.

         - 시스템 정보 -
       현재 당신이 접속한 서버는 mybestone.com입니다.
       현재 접속자수는 1 / 10  입니다. (현재인원/총접속가능한 인원)
       당신은 203.247.40.248에서 movie라는 사용자명으로 접속하였습니다.
       현재시각은 Thu Oct 10 03:06:36 2002 입니다.
       문의하실 사항은
root@mybestone.com로 보내주세요.
(6) /etc/ftpaccess의 shutdown 사용예
   1) 기본설정예
     shutdown /etc/shutmsg
      => /etc/shutmsg 파일을 생성하여 설정하면 된다.
   2) 메시지파일 : 전달메시지부분에 magic cookies를 사용할 수 있다.
    ㄱ. 기본형식
       year month day hour minute deny_offset disc_offset
       text
         => (설명)
            year: 1970년이후의 값을 적는다.
            month: 0 ~ 11로 표시한다. 주의할 점은 0이 1월이라는 것이다.
            day: 날짜를 입력한다.
            hour: 0 ~ 23의 값을 입력한다.
            minute:0 ~ 59의 값을 입력한다.
            deny_offset: 셧다운 되기 전에 새로운 접속을 거부할 시간을 지정한다. HHMM이 기본형
                        식이다.
            disc_offset: 현재 접속중인 연결을 끊을 시간을 지정한다. HHMM이 기본형식이다.
            text: 사용자에게 보여줄 메시지를 기록한다. magic cookies의 사용이 가능하다.
    ㄴ. magic cookies
       %s : 셧다운이 될 시간
       %r : 새로운 접속을 거부할 시간
       %d : 현재 연결을 차단할 시간
    ㄷ. 사용예
       2003 01 19 17 30 0100 0001
       System will be shutdown at 17:30. You connection will connected at %d
        => 2003년 2월 19일 오후 5시 30분에 FTP서버를 종료할 것이고, 새로운 접속자는 종료시간
          1시간 이전부터 접속이 금지되며, 현재 연결된 사용자는 종료 1분전에 차단된다는 메시지
          가 보여진다.
(7) /etc/ftpaccess의 passwd-check 사용예
   1) 기본형식
     passwd-check 조건 action
   2) 조건
     none : anonymous접속자들의 패스워드 체크를 하지 않는다.
     trivial : 패스워드에 @(at)문자가 포함되어 있는지만 체크한다.
     rfc822 : rtc822에 정의한 내용대로 체크한다. rfc822설정은 정확한 이메일을 기입하라는 뜻이
             라고 생각하면 된다.
   3) action
     warn : 접속자가 '조건'을 지키지 않았을 때 경고메시지를 보내고 접속은 허가한다.
     enforce: 접속자가 '조건'을 지키지 않았을 때 접속을 허가하지 않는다.
   4) 기본설정예
     passwd-check rfc822 warn
      => rfc822와 일치하는 지를 검사하고 warn 수준으로 처리한다.
   5) 응용예
     passwd-check rfc822 enforce
      => 틀린 이메일주소를 입력하면 접속이 허가되지 않는다.

7. /etc/ftphosts
(1) 설명: 이 파일은 특정호스트 및 특정 사용자의 접속을 허가할 것인지 거부할 것인지를 지정하는
          파일이다.
(2) 기본형식
    allow 사용자계정 주소
    deny  사용자계정 주소
(3) 사용예
   ㄱ. allow * *
      => 모든 호스트의 모든 사용자를 허가한다.
   ㄴ. deny * 203.247.100.*
      => 203.247.100.0 네트워크대역을 갖는 모든 사용자의 접속을 거부한다.

8. Wu-FTP관련 명령어
(1) ftpcount
   1) 설명: ftp서버를 이용하고 있는 사용자 수를 보여주는 명령이다.
   2) 사용법
     ftpcount
   3) 사용예
     [root@www root]# ftpcount
     Service class all                  -   1 users (no maximum)
(2) ftpwho
   1) 설명: ftpcount와 유사한 명령으로 서버에 접속한 사용자 정보를 보여준다.
   2) 사용법
     ftpwho
   3) 사용예
     [root@www root]# ftpwho
     Service class all:
     18847 ?        S      0:00 ftpd: 203.247.40.247: posein: IDLE
        -   1 users (no maximum)
(3) ftpshut
   1) 설명: ftp서버를 셧다운 시킬 때 사용하는 명령이다.
   2) 사용법
     ftpshut [options] time [warning-message]
   3) options
     -l 분 : 새로운 접근을 거부할 시간을 정한다.
     -d 분 : 현재접속중인 접근을 끊을 시간을 정한다.
   4) time: ftp서버를 다운시킬 시간을 말한다.
     now     : 즉시 shutdown시킨다.
     +number : 분(number값)으로 셧다운 시간을 지정한다.
     HHMM    : 24시간형식으로 셧다운 시간을 지정한다.
   5) warning-message : 경고메시지를 적는다. 75문자의 길이 형식을 취한다. magic cookies의 사용
                       이 가능하다.
   6) 사용예
     ftpshut now
      => 지금 즉시 ftp서버를 중지시킨다.
   7) 참고
     ftpshut 명령을 사용하여 셧다운이 되면 /etc/shutmsg파일이 생성된다. 따라서, 계속적으로 ftp
    서버로의 접속이 불가능해지므로 이 파일을 삭제해야 한다.

우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
My Advanced Linux (73)
Learning Linux (96)
OperatingSystem (5)
Databases (4)
Tips! (1)
OpenSource (1)
«   2018/01   »
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
  1. 2012/12 (2)
  2. 2012/04 (3)
  3. 2012/03 (6)
  4. 2012/02 (6)
  5. 2012/01 (2)