- 파일서버관리 - FTP 란? File Transfer Protocol 이라는파일을전송하기위한프로토콜이다. 호스트들간에파일을전송하는데사용되는인터넷프로토콜이다 FTP는이진및 ASCII 파일의양방향전송을지원한다. 프로토콜(protocol) : 두대의컴퓨터가어떻게하면원하는정보( 메시지) 를교환할수있을지메시지의형태와기본규칙을규정해놓은것 FTP 종류? vsftpd(very Simple FTP Daem) : 초보자입장에서다루기쉬운 FTP 서버이다. 한글화가이루어지지않아서초보자입장에서 FTP 서버프로그램을잘못설정하는경우도있다. ProFTP : vsftp 보다장점이많다. 환경설정파일이하나로되어관리하기편하고. 보안및버그패치가자주이루어져많이사용되고있으므로 ProFTP서버를여러분의 FTP 서버로선택하고있다. FTP 명령어 1 FTP 서버접속시일반명령어는실행이되지않고, FTP 명령어를사용해야한다. 2 FTP 명령어확인 >help 3 FTP 명령어 cd : 원격파일서버디렉토리이동 lcd : 로컬시스템디렉토리이동 Ascii : 전송모드를아스크모드로전환 Binary : 전송모드를바이너리모드로 전환 Prompt : 파일전송시확인 / 확인안함 Hash : 파일전송상태확인 Get : 하나의파일을다운로드 Mget : 여러개의파일을다운로드 Put : 하나의파일을업로드 Mput : 여러개의파일을 업로드 Delete : 원격파일서버의하나의파일을삭제 Mdelete : 원격파일서버의파일여러개를한번에삭제 Bye : 접속종료 *vsftpd 1. vsftp 서버설치 Fedora Core 3번시디삽입 cd /media/cdrom/ Fedoar/RPMS/ cp vsftpd-2.0.3-1.i386.rpm #rpm-qavsftpd # rpm -ivh vsftpd - 117 -
*ProFTP 1. ProFTP설치를위한 vsftpd 삭제 rpm 명령으로시스템에설치되어있는 ftpd 패키지를확인한다. # rpm -qa grep ftpd vsftpd-2.0.3-1 2. 위와같이같이패키지가있으면 vsftpd를삭제할수있다 # rpm -e vsftpd 3. 삭제됐는지재확인 # rpm -qa grep ftpd *ProFTP패키지다운받아설치 1 ProFTP 다운 1. 웹사이트에서다운받기 http://www.proftpd.org ftp://ftp.proftpd.org distrib 디렉토리를클릭 => packages 디렉토리클릭 => RPMS 디렉토리를클릭한다. 밑의파일을다운받는다. proftpd-1.2.10-1.fc1.i386.rpm proftpd-inetd-1.2.10-1.fc1.i386.rpm ftp://mirror.oops.org 2. 콘솔에서접속하여소스파일다운받기 # ftp mirror.oops.org ftp> cd pub/oops/proftpd/ ftp> hash ftp> get proftpd-1.3.0kr1.tar.bz2 ftp> bye 2 압축해제및설치 # tar xvfj proftpd-1.3.0kr1.tar.bz2 # cd /proftpd-1.3.0kr1 #./cfigure --prefix=/proftpd #make # make install - 118 -
3 서버실행준비및실행 # cd /proftpd # /proftpd/sbin/profitd # groupadd nogroup # /proftpd/sbin/profitd # ps -ef grep proftpd *ProFTP환경설정 1. vi 에디터를이용해서 /proftpd/etc/proftpd.cf 파일을편집 2. ServerName은사용자가 FTP 서버에접속했을때이 FTP 서버의이름을지정한다. ServerType은 ProFTP 서버를실행시키는방법이다. ProFTP의서버데몬을직접운영 하도록 standale 형태로설정한다. DefaultServer는목적지를알수없는접속이들어왔을경우기본설정으로접속시키게 하는항목... ServerName ServerType DefaultServer... "ftp.rhee.sog.net" standale 3. ProFTP 서버가스탠드얼론모드로동작할때사용자가 FTP 와연결할통로, 즉 Port의번호를정해준다.FTP서버의경우는 21번 Port 를사용하는것이보통이다.... # Port 21 is the standard FTP port Port 21... 4. 새로만들어진파일과디렉토리에기본적으로주어지는퍼미션을 umask 라하는데이값이 022라고설정되어있다면 FTP 접속해서새로생성된디렉토리에대해서는 755 의퍼미션, 파일에대해서는 644의퍼미션을준다... # from bring group and world writable Umask 022... 5. ProFTP 서버가스탠드얼론일때최대접속가능한사용자수를지정한다. 스탠드얼론모드에서클라이언트가접속할때마다생성되는프로세스의수를지정하는옵션이다. MaxInstances 30 6. User와 Group은 ProFTP 서버를실행할때생성되는프로세스의 User와 Group 을지정해준다. Group을반드시 nogroup 로해준다. - 119 -
... User nobody Group nogroup... 7. FTP 서버에접속하려는파일이기존에있는파일과동일할때어떻게할것인지를선택해준다. AllowOverwrite 가 이면파일을덮어쓸수있게허락하는것이고, off이면 Overwrite를허락하지않 는것이다.... <directory/> AllowOverwrite </Directory>... * 익명 FTP 서버설정 <Anymous ~ftp>... </Anymous> 행은익명접속자를위한설정이다. 1. 익명사용자가접속할수있는디렉토리이름을지정한다. 디렉토리이름을 /home/ftp 라고입력한다. 차후에 /home/ftp 디렉토리를생성할것이다. # A basic anymous cfigurati, no upload directories. <Anymous /home/ftp>... 2. User 와 Group은 ProFTP 서버에사용자가익명으로접속할때디렉토리에대한사용자와그룹을 지정해주는것. 실질적인권한은 ftp 라는이름의사용자가가지게된다. RequireValidShell은반드시 off 라고설정해야익명접속자가접속할수있다.... User ftp Group ftp RequireValidShell off... 3. 익명(Anymous) 과 ftp 라는이름으로로그이하는것을가능하게한다.... # we want client to be able to login with "anymous" as well as "ftp" UserAlias anymous ftp... 4. 익명접속자로접속할때클라이언트들이최대로접속할수있는수를설정한다.... #Limit the maximum number of anymous login MaxClient 10 "Sorry this FTP Server is full, Try again later!!"... 5. DisplayLogin은익명사용자가접속했을때보여줄메시지가들어있는텍스트파일을지정해준 다. 파일은사용자계정홈디렉토리에만든다, DisplayFirstChdir 항목은익명사용자가 FTP 서버에접속하여 cd 명령을이용해처음으로다른디렉 토리로접근할때접근한디렉토리에.message 파일이있으면파일내용을보여주게됩니다.. #We want 'welcome.msg' displayed at login, and '.message' displayed # in each newly chdired directory. DisplayLogin welcome.msg DisplayFirstChdir.message... - 120 -
6. <Limit LOGIN> 태그를이용해서 Anymous 접속을허가한다. <Limit LOGIN> AllowAll. 7. 익명 FTP 서버에서 /root 디렉토리에쓰기를허용하지않게한다. # Limit WRITE everywhere in the anymous chroot <Limit WRITE> DenyAll. 8. <Drectory /home/ftp/public> 태그로시작해서 </Directory> 로끝나는부분까지새로생성할 /home/ftp/public 디렉토리에대해설정하게된다. 환경설정이끝나면 ftp 디렉토리에 public이라는익명 FTP 를위한디렉토리를만들것이다.... <Drectory /home/ftp/public>... 9. 익명사용자디렉토리 /home/ftp/public 에새로디렉토리를생성하고파일을업로드할수있는권 한을주기위해서 Umask 값을 070 을부여한다. AllowStoreRestart 와 AllowRetrieveRestart 항목은익명사용자들이 FTP 서버에용량이큰파일을올 릴때도중에접속이끊어질위험에대비하여이어서오리는기능을추가해주는것이다.. Umask 070 AllowStoreRestart AllowRetrieveRestart... 10. READ 는파일을읽는권한, 즉다운로드를의미하고 STOR는클라이언트에서서버로의파일전송 권한, 즉업로드를의미한다.... <Limit READ> AllowAll <Limit STOR> AllowAll... 11. <Directory> 와 <Anymous> 에대한설정을마무리하는부분이다... </Directory> </Anymous> 12. 익명접속자를위한 /home/ftp/public 디렉토리를생성 # mkdir /home/ftp/public 13. 익명접속자를위한디렉토리와관련된소유권과권한설정을한다. public 디렉토리의소유권은 ftp라는소유자에게 # chown ftp:ftp /home/ftp/public # chmod 775 /home/ftp/public 14. 새로운환경설정을바탕으로 FTP 서버를시작한다. # ps -ef grep ftp => proftpd의 PID 확인 #kill-1pid( 프로세스번호) - 121 -
추가기능 1) FTP접속을통해사용자에게허용된디렉토리외에다른디렉토리에접근하는것을막기위해서는 Proftpd 설정파일의 DefaultRoot 항목을설정한다. 추가기능 2) 접속포트번호변경하기 1. proftpd.cf 설정을변경한다. 포트번호는알려지지않은번호아무것이나괜찮다. 여기서는 21번을 8021 로바꿔보자. # vi /etc/proftpd.cf port 8021 2. 네트워크서비스의포트번호, 프로토콜등의정보가등록되어있는파일 /etc/services에서 FTP서버의포트번호를변경한다. 21번을 8021 번으로입력한다. * inetd 모드로 proftp 운영하기 1. 스탠드얼론방식으로운영되고있는 proftpd 서버를중지한다. # /etc/rc.d/init.d/proftpd stop 2. proftpd-inetd-1.2.10-1.fc1.i386.rpm 패키지설치한다. # rpm -Uvh proftpd-inetd-1.2.10-1.fc1.i386.rpm 3. inetd 모드로운영하기위한설정파일 /etc/xinetd.d/proftpd 을만든다. # vi /etc/xinetd.d/proftpd 내용 : service ftp { # xinetd로이네트워크서비스를시작하기위해서는 disable=no로설정 disable = no flags = REUSE # 서비스가이용하는프로토콜을지정. # 프로토콜을지정하지않으면서비스가이요하는프로토콜이기본적으로지정됨. protocol = tcp #TCP?IP소켓은 stream형태의 TCP소켓 socket_type = stream port = 21 instances = 30 #wait가 no 로설정되어있어야다른데몬이작동되어있어도영향을받지않는다. wait = no # 네트워크데몬파일의소유권은 root 에게있다. user = root # 실행될네트워크데몬을지정한다. server = /usr/sbin/in.proftpd log success = HOST PID # 서버의자원부족, 접근제한에걸려시작하지못했을경우에접근을시도한 # 사용자 ID 를기록한다. log failure = HOST RECORD } - 122 -
4./etc/proftpd.cf 의설정파일을편집한다. ServerType standale 을 ServerType inetd 로바꾼다. # vi /etc/proftpd.cf ServerType inetd 5. 서비스를재개한다. # /etc/rc.d/init.d/xinetd restart 6. client 에서서비스되는지확인... *ftp ftp 서버에접속클라이언트프로그램 1 ftp 서버접속방법 #ftp호스트네임또는 IP # ftp ftp.kernel.org 또는 # ftp 124.50.85.228 또는 #ftp ftp> open ftp.kernel.org 또는 open 124.50.85.228 접속후 ID 와패스워드입력 2 파일전송유형 ftp 파일전송유형의기본모드는 ascii 로써아스키파일로전송에사용된다. 바이너리모드로전환하려면 bin명령을입력 ftp로파일을다운로드받는동안진행을보기원한다면 hashaudfud ftp>bin 또는 ftp>hash 3 ftp ftp>ls 서버목록보기 4 디렉토리이동 ftp> cd Desktop 5 파일받기와보내기받기는 get 서버의파일명, 보내기는 put로파일명입력다중의파일받기나보내기위해서는 mget,mput ftp>get test.tar.gz 6 ftp 접속시로컬디렉토리변경 ftp>!cd /home/file 7 종료 ftp> quit * 액티브모드 : 21번포트로접속관련작업을하고실제데이터는 20 번포트로전송한다. * 패시브모드 : 21번포트로접속관련작업을하지만실제데이터는 20번을사용하는것이아니라사용하지않는다른포트를지정해서사용하는경우에사용한다. 방화벽을지나 FTP 서비스를하기위해서많이사용. - 123 -