Docstoc

FTP ____ ___ _____ __ ___ __

Document Sample
FTP ____ ___ _____ __ ___ __ Powered By Docstoc
					        FTP 사용자를 특정한 디렉토리로 제한 시키는 방법
                                                                   김 주 홍 kjuh@kr.ibm.com



1. 개 요
  ftp 사용자를 생성할 때 여러 디렉토리로 이동할 수 없고 특정 디렉토리에서만 작업을
  할 수 있도록 하는 방법이 있는지에 대한 질문을 종종 받을 수가 있다. 위의 질문에 대
  한 답변은 anonymous ftp Server를 설정함으로써 가능하다. 고객들이 이러한 질문을 하는
  이유는 당연히 보안 때문이다. 이러한 기능을 제공하려면 우선 anonymous user로 로그인
  했을 때 upload는 할 수 있지만 어떠한 file도 download할 수 없는 안전한 디렉토리에 위
  치하게 하는 디렉토리 구조를 설정하는 것이다. 이러한 디렉토리 구조의 장점은 시스템
  의 원래의 상태를 유지하면서 위의 디렉토리 구조에서 “cd” 명령어를 사용할 수 없다는
  것이다.
  또한 anon ftp 서버에는 sub-login을 생성할 수 있는 방법이 있다. 이러한 방법은 ftp 사용
  자에게 더욱 더 많은 제한을 두는 방안으로써 한층 강화된 보안을 제공한다는 의미가
  있다.

2. anonymous FTP 구성 방법
  AIX는 anonymous FTP server를 구성하는 Sample Script를 제공한다. AIX에서 제공하는
  Script는 /usr/samples/tcpip/anon.ftp이다. anonymous FTP Server로써 명령어들을 구성하려면
  다음과 같은 절차를 따르면 된다.
  anon.ftp Script 실행하면 다음과 같은 메시지가 Display된다.
      Creating anonymous ftp user.
      Added user ftp.
      -n Are you sure you want to modify /home/ftp? y
      Added user anonymous.
      Made /home/ftp/bin directory.
      Made /home/ftp/etc directory.
      Made /home/ftp/pub directory.
      Made /home/ftp/lib directory.
      Made /home/ftp/dev/null entry.
      Made /home/ftp/usr/lpp/msg/ko_KR directory.
  이 스크립트는 ftp 및 anonymous 사용자를 생성할 것이다. 사용자들은 다른 UID를 가지
  나 동일한 Home Directory를 가지게 될 것이다. 덧붙여서 이 스크립트는 ftp 사용자의
  Home Directory밑에 anonymous ftp 사용자가 어떠한 수정도 못하도록 owner가 root인 5개
  의 Subdirectories(etc, pub, bin, lib, usr)를 생성한다. etc, bin, lib, usr Directories는 ftpd Daemon
이 사용하도록 설계되어졌다. 그래서 world-readable(r)과 world-searchable(x) 권한만을 가
지고 있다.            pub Directory는 file upload를 위해 world-writable(w) 권한을 가지고 있다.


이 스크립트를 실행하는 것은 최소한의 FTP Server를 제공하는데 충분하다. 이제 사용자
가 일련의 명령어에 대한 ftp를 실행한 경우, anonymous 또는 ftp PAGE 사용자 이름을 지
정한 경우 ftpd Daemon은 자동으로 password를 받게 된다. 그러나 9 ftp Daemon은
anonymous ftp user에게 ftp 21 사용자의 Home Directory 구조로 한정시키는                     사용자의
Home Directory대한 ftp에 chroot 명령어를 자동으로 실행시킨다. 그래서 anonymous ftp 사
용자들은 시스템의 전체 디렉토리 구조가 아니고 한정된 디렉토리 구조만을 접근(예를
들면, cd와 ls)할 수가 있다.
anon.ftp Script가 최소한의 환경구성을 제공하지만, 몇가지 부가적인 구성을 더 할 수도
있다.
ftp 사용자를 위해 생성했던 ~ftp/.profile를 삭제한 후 ftp 사용자의 Home Directory밑에 있
는 etc Directory에 passwd와 group 파일을 생성해라. 이것은 ftp 사용자가 file permissions
에 대한 숫자대신에 이름을 볼 수 있게 한다. passwd 파일의 내용은 다음과 같은 내용을
가지게 될 것이다.(302가 ftp 사용자의 UID로 가정)
     ftp:*:302:1:snonymous ftp user:/home/ftp:/bin/false
     root:*:0:0::/:/bin/false
또한 group 파일의 내용은 다음과 같은 내용을 가지게 될 것이다.
     system:*:0:
     staff:*:1:
그 다음에 passwd, group 파일에 대해 “chmod 400” 명령어를 실행하면 된다.
ftpd Daemon에 대해서 logging를 설정할 필요가 있다. 이렇게 함으로써 anonymous FTP 사
용자에       대한        hostname과   e-mail   address뿐만이        아니고   사용자들이   Upload한   파일,
Download한 파일에 대한 정보를 기록할 수 있다. 이러한 logging을 설정하려면 다음과
같은 방법으로 하면 된다.
 ①     smit inetdconf 명령어 실행
 ②     Changes/Show Characteristics of an inetd Subserver 선택
 ③     ftp 선택
 ④     Service Program Command Line ARGUMENTS 필드를 “ftpd –l”로 수정한 후 Enter
 ⑤     /etc/syslog.conf에 다음의 내용을 추가
       daemon.info        /tmp/ftp.log
 ⑥     touch /tmp/ftp.log 명령 실행


syslogd Daemon에게 수정된 구성 파일의 내용을 반영하기위해 “kill –1 syslogd_ProcessId”
명령을 수행해야 한다. 그리고 upload를 위한 별도의 Directory를 생성해야 하는데 다음
  과 같은 절차로 하면 된다.
     cd ~ftp
     mkdir incoming
     chmod 777 incoming(to allow uploads)
     chmod 555 pub(to protect your outgoing repository from uploads)



3. Sublogins 기능이 있는 anonymous FTP 구성 방법
  Sublogin 기능이 있는 anonymous ftp를 설정하는 절차가 따로 있다. 이 절차 중 가장 중
  요한 것은 필요한 인증 및 데이터베이스 파일을 /home/ftp/etc 또는 적절한 디렉토리에
  두는 것이다. 그러한 파일들이 어디에 있든 적절한 mount point로 mount하든가 적절한 디
  렉토리로 이동시킬 필요가 있다. anonymous ftp user하에서 sublogin account에 대해 다는
  Filesystem을 설정하는 것은 문제가 되는 것은 아니지만 단지 /etc/passwd 파일의 사용으
  로 동작되지는 않는다.
  Sublogin 기능이 있는 anonymous ftp를 설정하는 단계는 다음과 같다.
     Log in as root
     cd /usr/samples/tcpip
     ./anon.ftp
     cd /home/ftp
     mkdir home
     chmod 755 home
     cd /home/ftp/etc
     touch passwd
     chmod 644 passwd
     chown root:security passwd
     mkdir objrepos
     chmod 775 objrepos
     chown root:security objrepos
     mkdir security
     chmod 750 security
     chown root:security security
     cd security
     touch passwd
     chmod 600 passwd
     chown root:security
     smitty mkuser
     User NMAE [test]
   User ID [ ]
   ADMINISTRATION USER? true
   Primary GROUP [ staff]
   Group SET [staff]
   ADMINISTRATIVE GROUPS [ ]
   Another user can SU TO USER? true
   SU GROUPS [ ]
   HOME directory [/home/test]
   passwd test
    enter new password
   cd /home/ftp/etc
   vi passwd  copy input below from /etc/passwd
   ftp:*:226:1::/home/ftp:/usr/bin/ksh
   root:!:0:0::/:/bin/ksh
   test:!:228:1::/home/test:/usr/bin/ksh
   vi ./security/passwd  copy input from /etc/security/passwd for “test” user
   vi group  add the following two lines
   systems:*:0:
   staff:*:1:test
   cp /etc/objrepos/CuAt ./objrepos
   cp /etc/objrepos/CuAt.vc ./objrepos
   cp /etc/objrepos/CuDep ./objrepos
   cp /etc/objrepos/CuDv ./objrepos
   cp /etc/objrepos/CuDvDr ./objrepos
   cp /etc/objrepos/CuVPD ./objrepos
   cp /etc/objrepos/Pd* ./objrepos
   cd ../home
   mkdir test (This will be subuser’s new home directory)
   chown test:staff test
이제 ftp sublogin 기능을 이용할 수 있고 anonymous로 login하여 테스트할 수 있다. 일단
login했으면 user username을 입력함으로써 최근에 생성한 사용자(test)로 login 할 수 있다.
덧붙여서 /home filesystem과 다른 Directory를 Home Directory로 사용하려면 다은 JFS
filesystem에 적절한 Directory를 생성할 수도 있다. 그 다음에 새로운 filesystem을
/home/ftp/home과 같은 ownership과 permission으로 바꾸고 적절한 Mount Point로 새로운
Filesystem을 Mount하면 된다.
예를 들어 사용자 testfire에 대한 실제적인 filesystem이 /testcase/fire라면 다음과 같은
mount명령어를 실행시킬 필요가 있다.
# mount /testcase/fire /home/ftp/home/testfire

				
DOCUMENT INFO
Shared By:
Categories:
Stats:
views:73
posted:2/16/2010
language:Korean
pages:5