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
    서버로의 접속이 불가능해지므로 이 파일을 삭제해야 한다.

Trackback
Reply
우주곰:지구곰이 아닙니다.
지구곰이 아닙니다.
Categories (190)
Information (5)
About uzoogom (5)
Blah.. blah.. (5)
My Advanced Linux (73)
RedHat Knowledge (10)
Advanced Linux (47)
Virtualization (7)
HA clustering (2)
Bash shell scripts (6)
Learning Linux (96)
Fundamental (41)
AdminCourse (32)
Security (23)
OperatingSystem (5)
AIX (2)
HPUX (3)
Databases (4)
Oralce (3)
Mysql (1)
OpenSource (1)
Tips! (1)
«   2025/06   »
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