FTP

- 대용량의 파일 전송 서비스에 적합
- 웹 서비스의 일부로 통합 운영되는 추세
- xinetd보다는 standalone 형태로 운영

 (xinetd : 슈퍼데몬- 스스로 listen 하지 않음 / standalone : 스스로 listen, 메모리에 상주)
시스템에 리소스를 많이 차지하는 서비스
- Out of band
 • 21 : control connection
 • 20 : data connection(Active mode)
  - Passive mode : 임의의 포트를 이용 (1024 이후것으로)

get - ftp 파일 받기

put - ftp 파일 올리기

 

접속및 전송 과정
1. FTP client는 21번 port를 통해서 서버와 control connection을
설정한다.
2. 이 제어연결을 통해 사용자 계정과 비밀번호를 전송한다.
3. Client는 제어연결을 통해 원격지의 디렉토리 변경과 같은 명령을 전
송한다.
4. 서버측은 제어연결을 통해 파일 전송을 위한 명령을 받으면 TCP data
connection을 초기화 한다.
5. 하나의 파일 전송이 끝나면 data연결은 close된다.
6. 다음 파일 전송을 위해서는 새로운 TCP connection을 생성한다.

 

관련 파일
• 데몬 : /usr/sbin/vsftpd
• 설정 파일 : /etc/vsftpd/vsftpd.conf
• PAM 모듈 : /etc/pam.d/vsftpd
• 접근 제한 파일 : /etc/vsftpd/ftpusers
/etc/vsftpd/user_list

 

Active mode(액티브 모드)
클라이언트가 데이터를 수신 받을 임의의 포트를 서버에 알려주면 서
버는 20번 포트를 통해 클라이언트에게 데이터를 전송함
• Client에서 Server로 FTP 제어 연결 요청
• Client에서 제어 연결을 통해 자신의 Data 전송 Port(Random Port)
를 Server 측에 알려줌
• Server에서 Client로 Data 전송 연결 요청


Passive mode(패시브 모드)
서버가 데이터를 송신할 임의의 포트를 클라이언트에 알려주어 클라이
언트가 서버의 임의의 포트에 접속하여 데이터를 가져감
• Client에서 제어 연결을 통해 Server 측에 Passive 연결요청
• Server에서 제어 연결을 통해 자신의 Data 전송 Port(Random
Port)를 Client 측에 알려줌
• Client에서 Server로 Data 전송 연결 요청

 

 

실습 전 컴퓨터 구성

st04.sec

192.168.10.130 - win

192.168.10.131 - ns (로컬네임서버)

192.168.10.133 - www (ftp, smb)

 

192.168.10.133을 ftp 서버로 설정할 것이다.

 

vi /var/named/st04.zone

$TTL    1D
@   IN   SOA  ns.st04.sec.   root.ns.st04.sec. (
                                   1         ; Serial
                                   1D        ; Refresh
                                   1H        ; Retry
                                   1W        ; Expire
                                   3H )      ; Minimum
; Name Server
   IN   NS      ns.st04.sec.
; Host address
          IN     A       192.168.10.131
ns        IN     A       192.168.10.131
win       IN     A       192.168.10.130
www       IN     A       192.168.10.133
ftp       IN     A       192.168.10.133
smb       IN     A       192.168.10.133

 

192.168.10.133 컴퓨터의 ip주소와 DNS 설정이다. (vmware 에서 centos7_5)

 

FTP 실습

1. ftp 정상작동 여부

vsftp 설치 확인

# yum list vsftpd

 

vsftpd 설치

# yum install –y vsftpd

 

vsftpd 서버 실행

# systemctl start vsftpd

 

사용자 생성

 

192.168.10.130 컴퓨터에서 테스트

사용자 st 계정은 로그인이 되는 것을 볼 수 있다.

 

/etc/vsftp/vsftpd.conf 파일에서 설정한다.

 

Active mode 설정

pasv_enable=NO(default : YES)
• 클라이언트에서 passive 모드로 접속을 요청해도 active 모드로 접속
된다.

 

Passive mode 설정

pasv_enable=YES (default : YES)
pasv_min_port=0 (default : 0, any port)
pasv_max_port=0 (default : 0, any port)
방화벽이나 공유기 사용시에 passive mode에서 사용하는 port 번
호를 등록해줘야 하기 때문에 범위를 반드시 지정한다.

 

익명 사용자 관련 설정

anonymous_enable=YES
#anon_upload_enable=YES (d:NO)
#anon_mkdir_write_enable=YES (d:NO)
#deny_email_enable=YES (d:NO banned_email_file )
- banned 파일에 지정된 메일 계정은 접속이 불허된다.
#banned_email_file=/etc/vsftpd.banned_emails
#non_anon_password=NO
#anon_root=/var/ftp (d:/var/ftp)
#ftp_username=ftp (d:ftp)

 

제한 설정

#max_clients=30
#max_per_ip=3 (0은 무제한)
#ls_recurse_enable=YES (ls –R 명령은 부하가 크다)

 

2. FTP 서비스 제한 (chroot 설정)

 

FTP 실습 1 - FTP 서비스 제한 (chroot 실습)

FTP 서비스 제한 (chroot 실습) chroot 설정 ** chroot : 사용자 계정의 home 디렉토리를 root로 변경 #chroot_local_user=YES (d:No) #chroot_list_enable=YES - chroot_local_user가 NO일 때 chroot_list_..

lemonandgrapefruit.tistory.com

 

3. ip별로 접속 제한

 

FTP 실습 2 - IP 별로 접속 제한

IP 별로 접속 제한 standalone 인 경우만 사용 listen=YES > standalone 사용 tcp_wrappers=YES > 접근제어 사용 여부 - /etc/hosts.deny, /etc/hosts.allow 파일에 정의 - hosts.allow 파일의 보안 등급이 높..

lemonandgrapefruit.tistory.com

 

4. FTP 사용자 제한 users user_list

 

FTP 실습 3 - FTP 사용자 제한

FTP 사용자 제한 user_list를 이용한 사용자 제한 설정 - userlist_file(/etc/vsftpd/user_list)에 등록된 계정에 대한 접속 제어는 userlist_enable과 userlist_deny에 따라 결정. userlist_enable=YES => /etc..

lemonandgrapefruit.tistory.com

 

CentOS5 및 CentOS6 설치하기 및 epel, rpmforge 추가하기

- 실습 내용 -

CentOS 5,6,7에 각각 epel, rpmforge를 추가한다.

CentOS6 epel, rpmforge 파일 예시
epel-release-6-8.noarch.rpm
rpmforge-release-0.5.3-1.el6.rf.i686.rpm
파일을 설치하고 repository 목록을 확인한다.

[ yum repolist ] 입력해 목록 확인

 

CentOS5 설치하기

영어로 설치해주기!!!

한국어로 설치시 설치할 파일 선택해주기

CentOS5는 32bit이므로 위와 같은 버전을 선택한다.

 

test는 스킵한다.

 

영어를 선택해준다.

한국어로 선택할 경우 마지막에 설치할 파일을 지정해 설치해주면 된다.

다음을 누르면 초기화할 것인지 물어보는데 초기화하기를 눌러준다.

 

 Custom layout 을 선택해주고 다음 (영어버전 / 한국어버전)

 

파티션을 만들어 준다.

/boot 를 500MB으로 만들어준다.

 

swap를 1024MB로 만든다.

 

/ 를 나머지 용량으로 채운다.

 

IP주소와 netmask를 설정해준다.

 

호스트명을 설정하고 게이트웨이, DNS를 설정한다.

 

시간은 나중에 따로 설정해도 되므로 다음을 누른다.

 

root 암호를 설정한다.

 

Gnome 을 선택하고 다음을 누른다.

 

다음을 누른다.

 

한국어로 설정해 설치할 경우 더 많은 기능이 설치되면서 오류가 뜨게 되는데 영어로 설치하면 오류가 안뜬다.

 

설치가 끝나면 리부트를 눌러 다시 켜준다.

 

방화벽은 disabled를 설정한다.

 

selinux도 disabled를 설정한다.

 

사용자를 생성한다.

 

PuTTY로 잘 접속되는 것을 확인한다.

 

CentOS 5에 epel, rpmforge를 추가하기

epel-release-5-4.noarch.rpm
rpmforge-release-0.5.3-1.el5.rf.i386.rpm
파일을 설치하고 repository 목록 확인

 

파일을 다운받기 위해 FTP 로 접속한다.

FTP를 이용해 위와 파일을 다운받는다.

 

잘 다운받은 것을 확인한다.

[ rpm -Uvh 파일명 ] 을 통해 다운받는다.

 

[ yum repolist ] 입력해 잘 다운되었는지 목록을 확인한다.

 

CentOS6 설치하기

CentOS6는 64bit이므로 위와 같은 버전을 설정한다.

 

test는 스킵하고 다음을 누른다.

 

한국어를 선택하고 키보드는 영어를 선택한다.

 

기본 저장장치를 선택한다.

모든 데이터를 삭제한다.

 

호스트명을 지정한다.

 

IP주소와 netmask, gateway를 설정한다.

 

설치하고 난 뒤 설정을 바꿀수도 있다.

 

시간은 나중에 설정할 것이므로 다음을 누른다.

root 암호를 설정한다.

 

사용자 레이아웃 만들기로 설정한다.

표준파티션으로 설정한다.

 

/boot 는 500MB

swap는 1024MB 설정한다.

 

/ 는 나머지 용량으로 설정한다.

위와 같이 생성된 것을 확인한다.

 

포맷을 누른다.

 

다음을 누른다.

 

 desktop를 선택하고 다음을 눌러 설치하고 리부트 한다.

 

라이센스 정보는 동의하고 사용자 계정을 등록한다.

 

kdump는 비활성화로 하고 다음을 눌러 root로 로그인하기위해 기타를 누른다.

 

root로 로그인 되는것을 확인한다.

 

CentOS 6에 epel, rpmforge를 추가하기

epel-release-6-8.noarch.rpm
rpmforge-release-0.5.3-1.el6.rf.i686.rpm
파일을 설치하고 repository 목록 확인

 

ftp를 설치하기위해 CentOS6 의 VMware를 들어간다.

위와같이 [ VM > Removable Devices > CD/DVD > Connect ]를 누르면 iso파일이 활성화된다.

 

/로 이동해 media 디렉토리로 이동해 CentOS_6.10_Final 디렉토리로 이동한다.

Packages 디렉토리로 이동해 ftp 설치파일을 다운받는다.

[ cd /media/CentOS_6.10_Final/Packages ] 이동후 ftp 다운

 

ftp로 들어간다.

epel-release-6-8.noarch.rpm
rpmforge-release-0.5.3-1.el6.rf.i686.rpm

위 두 파일을 다운받는다.

 

파일을 설치한다.

 

[ yum repolist ] 입력해 잘 다운되었는지 목록을 확인한다.

 

CentOS7

위와 같은 방법이므로 설명은 생략하고 사진만 첨부

 

ftp에서 파일 다운한다.

 

파일을 다운받는다.

 

목록을 확인한다.

 

FTP 사용 없이 네트워크 상의 컴퓨터를 Z드라이브를 이용해 사용하기

현재 서버의 사양이 너무 높지 않아 Z드라이브에서 바로 실행은 하지 말아야한다.

C, D 드라이브에 복제해서 사용해야한다.

각 컴퓨터 (ex. st01, st02,...) 에 data란 디렉토리를 사용하려고 한다.

여기서 data 디렉토리는 원래 home에 있는 디렉토리지만 쉽게 접근하기 위해 각 컴퓨터에 연결해 놓은 것이다.

FTP 사용 없이 Z드라이브를 이용해 디렉토리에 쉽게 접근하려한다. 

 

먼저 네트워크에 들어간다.

FTP 서버가 보이지 않으므로

노란색 부분에 [ \\192.168.10.11\ ]을 입력하여 서버를 찾는다.

찾은 후 로그인을 하는 창이 뜨는데 아이디와 PW를 입력하여 실행한다.

 

우클릭하여 네트워크 드라이브 연결로 들어간다.

 

Z드라이브를 설정한다.

 

내 PC에서 Z드라이브가 설치된 것을 확인할 수 있다.

Linux/Unix/Windows 명령어

ls(dir) : 목록 확인

cd : 폴더 이동

get(mget) : 파일 다운로드

put(mput) : 파일 업로드

prompt : 대화형 모두 전환

bye(quit) : 접속 종료

cls : cmd 창 내용 전체 삭제

 

ftp 프로그램이 없을 경우 다음 명령어를 입력해 [ yum install ftp ] 설치 후 접속한다.

 

FTP에서 파일 다운로드

[c:] c드라이브로 이동

[d:] d드라이브로 이동

[cd temp] temp 디렉토리로 이동

[dir] 디렉토리 목록 보여줌

 

FTP 주소 입력하고 비밀번호 입력하면 FTP 접속

[ftp 192.168.10.11] FTP로 접속 > 암호 입력 (화면에 안보여짐)

 

ftp에서 디렉토리 목록을 보고 [cd data], [cd class] 명령어를 이용해 data 디렉토리에서 class 디렉토리로 들어간다.

data 가 디렉토리인지 확인하는 방법은 맨 앞 노란 표시인 첫번째가 l로 시작해 링크파일인 것을 확인하면 된다.

 

class 디렉토리 목록을 [dir] 명령어를 이용해 확인한다.

[prompt] 명령어를 이용해 대화형 모드를 꺼준다.

[prompt] 이 명령어는 대화형 모드는 각 파일을 다운받을 때 다운 받을 것인지 물어보는 명령어이다.

 

[mget *] 모든 파일을 다운받는 명령어로 모든 파일을 D드라이브 temp에 다운받는다.

하나씩 다운 받으려면 [ get 파일명 ]명령어를 이용해 다운받는다.

 

[ lcd 다운받을 경로 ] 명령어를 적어 다운받을 파일 경로를 지정한다.

get 명령어를 이용해 파일을 다운받는다.

 

[quit] ftp를 나간다.

[dir]을 이용해 D드라이브에 temp 디렉토리에 파일이 잘 다운되었는지 확인한다.

 

혹시 FTP에서 다운이 안될 경우

[ 제어판 > 시스템 및 보안 > Windows Defender 방화벽 > 고급설정 > 인바운드 규칙] 에서

파일 전송 프로그램이 활성화 되어있는지 확인한다.

IP address (Internet Protocol)

IP는 집 주소 같이 컴퓨터의 위치를 알려주는 '주소'

즉, '컴퓨터를 식별하는 주소'

ex) 192.168.42.1

 

Netmask (넷마스크)

IP 주소에서 어디까지가 네트워크 주소인지 알아보기 위해 있는 것

네트워크 주소 부분의 비트를 1로 치환한 것

ex) 위의 IP 주소(192.168.42.1)에서 Netmask가 255.255.255.0 라고 한다면

 네트워크 주소: 192.168.42

 호스트 주소: 1

 

Gateway (게이트웨이)

네트워크에서 Gateway는 현재 네트워크에서 다른 네트워크로 이동하기 위해 거쳐야 하는 '문'

보통 라우터가 Gateway 역할

 

DNS 서버 (Domain Name System)

Name 서비스를 제공한다.

웹사이트의 IP주소와 도메인 주소를 연결해준다.

도메인 주소는 network주소 아님.

 

컴퓨터의 명령 프롬프트 창(cmd)을 보게 되면 'ipconfig'를 이용해 Windows IP 구성을 볼 수 있다.

더 자세히 보려면 'ipconfig /all'을 통해 볼 수 있다.

 

MAC address (Media Access Control Address)

컴퓨터의 물리적 주소 (하드웨어 주소)

보통 이렇게 'AA-BB-CC-DD' MAC 주소가 있다.

여기서 앞의 'AA-BB'는 제조사라고 생각하면 되고, 뒤의 'CC-DD'는 시리얼 넘버라고 생각하면 된다.

 

DHCP (Dynamic Host Configuration Protocol)

IP 주소를 자동으로 할당하는 프로토콜

 

FTP (File Transfer Protocol)

파일 전송 프로토콜

파일을 주고받기 위한 프로토콜

 

프로토콜 (Protocol)

컴퓨터 간 원활한 통신을 위한 일종의 '약속'

+ Recent posts