5 분 소요



FTP


파일을 다운로드 할 수 있는 사이트를 FTP 사이트라고 한다.

  • FTP(File Transfer Protocol)는 인터넷상의 컴퓨터들간에 파일을 교환하기 위한 표준

  • FTP 역시 인터넷의 TCP/IP 응용 프로토콜 중의 하나이다.

  • FTP는 웹 페이지 파일들을 인터넷상에서 모든 사람이 볼 수 있도록 하기 위해 저작자의 컴퓨터로부터 서버로 옮기는 과정에서 사용된다.

  • 또한, 다른 서버들로부터 자신의 컴퓨터로 프로그램이나 파일들을 다운로드 하는 데에도 많이 사용된다.



FTP 방식


웹브라우저들은 일반적으로 Passive Mode로 설정되어 있고, 알FTP나 WS-FTP, CuteFTP와 같은 FTP 클라이언트 프로그램들은 일반적으로 Active Mode가 기본값으로 설정되어 있다.

  • FTP Active Mode의 동작 방식


FTP Active Mode의 동작 방식.

  • 클라이언트에서 서버의 21번 포트로 접속 후 클라이언트가 사용할 두 번째 포트를 서버에 알려준다.
  • 서버는 클라이언트로 서버로 부터 Ack를 보내고, 서버의 20번 포트는 클라이언트가 알려준 두 번째 포트로 접속을 시도한다.


Active Mode 의 문제점

  • 일반적인 TCP/IP의 특징인 ‘클라이언트가 서버에 접속을 시도하는 것’ 이 아니라 ‘서버가 클라이언트에 접속을시도한다’ 는 것이다.

  • 이 때문에 만약 클라이언트 PC등에 방화벽이 설치되어 있거나 FTP를 잘 이해하지 못하는공유기 등을 사용하여 외부에서의 접속을 허용하지 않는다면 세 번째 프로세스가 작동하지 않게 되어 FTP 접속이 제대로 되지 않는 문제점이 있다.

  • 이러한 경우 FTP 접속은 되지만 이후 데이터 목록을 받아오지 못하여 에러가 발생하게 된다.

  • Active Mode의 문제점을 해결하기 위한 대안으로 디자인된 Passive Mode는 클라이언트에서 서버의 21번 포트로 접속을 시도하면, 서버에서는 사용할 두번째 포트를 클라이언트에게 알려준다.


Passive Mode 의 문제점

  1. Passive 모드에서는 두 번째 data포트로서 Active 모드가 사용했던 20번을 사용하지 않고 대신 1024 이후의 임의의 비 특권 포트를 사용하게 된다.
  2. 따라서 Passive 모드는 서버에서 클라이언트로 연결을 시도하는 Active 모드의 문제점을 해결했지만, 서버의 비특권 포트(1024 ~ 65535)를 방화벽에서 모두 열어 두어야 한다는 문제점이 있다.
  3. 그러나 wu-ftp나 proftpd등 대부분의 ftp 데몬에서는 클라이언트가 Passive Mode로 접속 시 사용할 수 있는 포트를 제한 설정 할 수 있는 기능을 지원하므로 이의 문제점을 해결할 수 있다.
  • Passive 모드는 클라이언트에서 서버 쪽 21번 포트로 접속 시도 하고 데이터 포트도 클라이언트에서 서버의 임의의 포트로 접속하여 데이터를 받아오는 방식이다.


vsftp

Vsftpd FTP Server는 UNIX, LINUX 시스템에서 사용할 수 있는 free FTP Server(라이선스는 GPL)이다.

  • 보안, 성능, 안전성에서 최상의 제품으로 vsftp 자체 보안 권고가 나온 적이 없다.
  • Linux(Redhat, SuSE, Debian), Solaris, FreeBSD, OpenBSD, HP-UX, IRIX 등을 지원



주요기능

  • 가상 IP별 별도의 환경설정 기능(설정 파일의 listen_address=이용)

  • 가상 사용자 설정

  • 전송 대역폭 지정

  • PAM 지원(버전 1.2.0부터 PAM을 통한 wtmp에 로그를 남김) 장착형 인증 모듈(PAM: pluggable authentication module) : 다중 저 수준 인증 계획을 고 수준 API에 통합시키는 메커니즘. 인증에 의존하는 프로그램들이 독립적으로 인증에 쓰일 수 있게 한다.

  • xferlog 표준로그보다 상세한 자체 로그 파일 형식 지원

  • standalone 방식과 xinetd를 통한 운영방식 모두 지원

  • IP별 다른 환경설정 파일 지정 가능(tcp_wrappers와 함께 사용 시)



Linux log file

시스템 로그 파일이란?

  • 시스템에 접속하거나 하고 있는 컴퓨터의 정보를 기록하는 파일


시스템 로그 파일 위치 : /var/log/

  • telnet. ssh 접속에 대한 유저 로그인 인증 기록(btmp) - # lastb로 확인
  • #ls -l log -> btmp 파일 확인가능
  • 마지막 접속기록 : #lastb명령어로 확인가능
  • 부팅 시 시스템에 의해 기록되는 로그(#dmesg) -/var/log/dmesg


현재 시스템에 로그인한 각 사용자의 상태를 저장하는 바이너리 파일

  • utmp 위치 : /var/run/utmp
  • w, who, users 명령어로 내용 확인 가능
  • JCPU : 모든 프로세스들에 의해서 소모된 CPU 사용 시간
  • PCPU : 현재 프로세스에 의해서 소모된 CPU 사용 시간


로그인, 로그아웃, 시스템의 재부팅에 대한 누적 정보 기록

  • wtmp 위치 : /var/run/wtmp
  • 바이너리 파일로 last 명령어로 내용 확인 가능


계정 사용자들이 마지막으로 로그인한 정보를 기록

  • lastlog 위치 : /var/log/lastlog
  • 바이너리 파일로 lastlog 명령어로 내용 확인 가능


부팅 시 서비스 데몬들의 실행 상태를 기록

  • boot .log 위치 : /var/log/boot.log


로그인에 실패한 내용을 기록하는 바이너리 파일로 # lastb 명령어 사용

  • loginlog, btmp 위치 : /var/log/btmp



Vsftpd FTP Server 설치



(6) /etc/vsftpd.conf 파일 주요 내용

  • #anonymous 사용자의 접속 허용여부, 즉 anonymous ftp(default=YES)
  • 공개된 형태의 FTP서버로 운영할 것이 아니라면 NO로 설정
  • anonymous_enable=YES


#write 명령어 허용여부(default=NO)

  • write_enable=YES


#로컬 계정 사용자용 umask (default=077), FTP에 접속하여 새로 만들어지는 파일과 디렉토리의 기본 퍼미션을 설정(022 , 디렉토리는 755(drwxr—r–), 파일은 644(-rw-r—r–))

  • local_umask=022


#anonymous 사용자가 파일을 업로드 할 수 있는지 여부(default=NO)

  • anonymous_upload_enable=YES -주석제거
  • anon_root=/ftp/anonymous -> 익명 사용자 로그인 시 홈 디렉토리


#anonymous 사용자가 디렉토리 생성 허용여부(default=NO)

  • anon_mkdir_write_enable=YES - 주석제거


#파일 전송 로그를 남길 것인지 여부(default=YES)

  • xferlog_enable=YES


#xferlog 표준포맷으로 로그를 남길 것인지 여부(default=YSE)

  • xferlog_std_format=YES


#전송할 로그 파일명

  • xferlog_file=/var/log/vsftpd.log


#FTP 접속 사용자가 자신의 홈 디렉토리에서만 작업하도록 제한하기 위한 설정

#(default=NO), 제한이 필요할 경우 YES로 바꾼 후 제한할 사용자 ID를

  • chroot_local_user=NO


#/etc/vsftpd.chroot_list에 기록한다.

#chroot_list_file=/etc/vsftpd.chroot_list


#FTP-data 전송포트 20번으로 지정여부(default=YES)

  • connet_from_port_20 =YES


#ASCII 파일의 업로드, 다운로드 가능여부(default=NO)

#ascii_upload_enable=YES

#ascii_download_enable=YES


#FTP 서버 접속시 로긴 메시지(default=vsFTPd 버전번호)

  • ftpd_banner= Welcome to Gachon University FTP service.



실습

(6)번 실습

/etc/vsftpd.conf 파일 수정(25번 YES, 31, 40, 44, 155 주석제거 후 저장)






위는 내부 접속 아래는 외부접속


ftp 클라이언트 filezila가 있다.


윈도우 10에서 서버에 접속하기



FTP 명령어



  • ascii : 전송 모드를 ASCII모드로 설정한다.(ftp> ascii또는 as)
  • binary : 전송 모드를 BINARY모드로 설정한다.(ftp> binary또는 bi)
  • bell : 명령어 완료 시에 벨 소리를 나게 한다.(ftp> bell)
  • bye : ftp접속을 종료하고 빠져나간다.(ftp> bye)
  • cd : remote시스템의 디렉토리를 변경한다.(ftp> cd 디렉토리명)
  • cdup : remote시스템에서 한 단계 상위 디렉토리로 이동한다.(ftp> cdup)
  • chmod : remote시스템의 파일 퍼미션을 변경한다.(ftp> chmod 755 index.html)
  • close : ftp접속을 종료한다. (ftp> close)
  • delete : remote시스템의 파일을 삭제한다.(ftp> delete index.old)
  • dir(=ls) : remote시스템의 디렉토리 내용을 디스플레이한다.(ftp> dir)
  • disconnect : ftp접속을 종료한다.(ftp> disconnect)
  • exit : ftp접속을 종료하고 빠져나간다.(ftp> exit)
  • get : 지정된 파일하나를 가져온다.(ftp> get index.html)
  • hash : 파일전송 도중에 “#”표시를 하여 전송중임을 나타낸다.(ftp> hash)
  • help : ftp명령어 도움말을 볼 수 있다.(ftp> help또는 help 명령어)
  • lcd : local시스템의 디렉토리를 변경한다.(ftp> lcd 디렉토리명)
  • ls : remote시스템의 디렉토리 내용을 디스플레이한다. (ftp> ls 또는 ls -l)
  • mdelete : 여러 개의 파일을 한꺼번에 지울 때 사용한다.(ftp> mdelete *.old)
  • mget : 여러 개의 파일을 한꺼번에 가져 오려할 때 사용한다. (ftp> mget *.gz)
  • mput : 한꺼번에 여러개의 파일을 remote시스템에 올린다.(ftp> mput *.html)
  • open : ftp접속을 시도한다.(ftp> open 168.126.72.51또는 open ftp.kornet.net)
  • prompt : 파일 전송 시에 확인과정을 거친다. on/off 토글 (ftp> prompt)
  • put : 하나의 파일을 remote시스템에 올린다.(ftp> put index.html)
  • pwd : remote시스템의 현재 작업디렉토리를 표시한다.(ftp> pwd)
  • quit : ftp접속을 종료하고 빠져나간다.(ftp> quit)
  • rstatus : remote시스템의 상황(version, 어디서, 접속ID등)을 표시한다.
  • rename : remote시스템의 파일명을 바꾼다.(ftp> remote 현재 파일명 변경 파일명)
  • rmdir : remote시스템의 디렉토리을 삭제한다.(ftp> rmdir 디렉토리명)
  • size :remote시스템에 있는 파일의 크기를 byte단위로 표시한다.(ftp> size index.html)
  • status : 현재 연결된 ftp 세션모드에 대한 설정을 보여준다.(ftp> status)
  • type : 전송 모드를 설정한다.(ftp> type 또는 type ascii 또는 type binary



Winscp을 이용한 파일전송



Winscp는 윈도우즈용 그래픽 유저 인터페이스 SFTP 및 FTP 클라이언트 프로그램으로 오픈 소스 프리웨어.

  • Winscp를 사용하여 SFTP(SSH 파일 전송 프로토콜) 또는 SCP(secure Copy Protocol)서비스를 사용하는 SSH(SecureShell)서버나 FTP(File Transfer Protocol)서버와 연결 할 수 있다.


Winscp 다운로드 및 설치

  • https://winscp.net -> download -> for Ms-windows (WinSCP installer)




FTP 보안설정

댓글남기기