본문 바로가기

리눅스

19. FTP

0. 목차

  1. FTP

  2. Well known port

  3. 설치 및 설정

   3.1.리눅스 설치 및 설정 ( 엑티브 모드 )

   3.2. 리눅스 설치 및 설정 ( 패시브 모드 )

  4. DHCP, FTP 종합문제

 

 

1. FTP : File Transfer Protocol

  - 대용량 파일 전송 ( Upload, Download )

 

1.1. 리눅스

  - vsftpd or poftpd 를 이용

 

1.1.1 인증 및 제어

    - Protocol : TCP

    - Port : 21

 

1.1.2.데이터 전송

    1) Active : Port 20

       - Client Data 전송포트를 결정

       - Client Port를 모두 open. ( 방화벽 포트를 모두 여는 경우는 별로 없음)

       - FTP Program만 사용가능 하도록 port 설정

 

    2) Passive

       - Server가 Data전송포트를 결정, 대부분 이 방식을 사용

       - 방화벽에서 Data 전송포트만 Open하면됨.

 

2. Well known port

  - 0번 ~ 1023번: 잘 알려진 포트 (well-known port)

  - 1024번 ~ 49151번: 등록된 포트 (registered port)

  - 49152번 ~ 65535번: 동적 포트 (dynamic port)

 

3. 설치 및 설정

3.1.리눅스 설치 및 설정 ( 엑티브 모드 )

(1) 첫번째 실습

  - yum install -y vsftpd : 명령어를 이용하여 ftp 설치

vsftpd 를 설치

  - 사용자 a와 b 추가

사용자 추가
비밀번호 설정

  - 설정파일 위치 /etc/vsftpd/vsftpd.conf

설정파일 열기

  - 베너를 설정하여 출력될 베너 작성

베너 문구 작성

  - chroot를 활성화시키고 사용자 리스트 파일을 생성하여 사용자 추가.

yes 활성화 후 리스트 파일 위치확인 후 !bash 명령어로 잠시 쉘로 이동

 

리스트 파일을 편집하여 사용자 추가
맨 마지막 줄 추가

  - 저장 후 vsftpd 시스템 실행

시스템 실행

 

  - 포트 활성화( firewall 설정 ) 21번과 20번을 열고 reload를 적용한다.

    permenent 옵션은 실제로 설정파일을 건드리게 되어 reload 필수.

zone 확인
public zone에 영구적으로 21번과 20번 포트를 활성화하고 reload를 통해 적용
--list-all 명령어를 통해 열린것을 확인
열린 서비스 확인

 

  - 500메가 용량을 가지는 a.txt와 b.txt.를 a와 b 홈디렉토리에 생성

500M 더미파일 생성.

  - 클라이언트 방화벽에서 ftp를 활성화하지 않으면 화이트 보드현상이 일어나게 된다.

  

  - 윈도우 방화벽에서 인바운드 규칙에 ftp를 추가. 인바운드 우클릭을 통해 새규칙

프로그램을 선택 후 다음
ftp 프로그램 경로 지정
연결을 허용하며, 도메인 개인 공용을 지정후 다음.
이름을 지정한 후 마침, 생성 완료.

 

  - 클라이언트를 통해 사용자 a로 ftp 접속

chroot에 포함되어 있는 사용자이기에 상위디렉토리로 이동하지 못한다.

  - quit 명령어를 통해 빠져나온다.

ftp 접속 해제

  - 클라이언트를 통해 사용자 b로 ftp 접속

chroot에 포함되어 있지 않기 때문에 상위디렉토리로 이동이 가능하다.

  - yum으로 vsftpd를 지워도 conf 파일은 남는다.

    chroot_list 파일도 지워야 제거가 완료.

 

-----------------------------------------------------------------------------------------------------------------------------------

(2) 두번째 실습

 

- 설정파일을 디렉토리에 모아 설정.

- 설정파일을 모아놓을 ftp 디렉토리 생성 

- conf 파일내 베너 문구설정부분을 아래와 같이 파일경로로 설정.

conf 파일에 banner란 수정

  - !bash를 통해 vi 편집기로 ftp 파일 생성 

아래와 같이 경고 베너 문구를 작성해준다.

 

  - vi 편집기를 통해 chroot 파일 생성하여 사용자 a 추가.

chroot에 a사용자 추가

  

  - exit를 통해 돌아간 뒤 conf 설정

주석처리를 통해 게스트 계정 거부
xferlog 경로 변경
대기 만료시간 120초
데이터 연결시간 60초
chroot 활성화 및 경로 재설정
chroot 작성 허용 문구 추가

  - 방화벽 설정 후 ftp 실행

방화벽 설정
vsftpd 실행

  - 윈도우 클라이언트에서 새규칙으로 ftp 규칙 생성. 

FTP 규칙 생성

 

  - 윈도우 cmd를 통해 ftp 접속

로그인 완료 후 dir 명령어로 파일 확인

  - cat을 통해 test.txt 파일을 생성

  - a로 로그인하여 명령어 사용

  - get 파일이름 바꿀이름 : 서버에서 클라이언트로 파일을 가져온다

    !dir : 클라이언트에 디렉토리 내용을 보여준다.

    lcd 디렉토리 : 클라이언트에 디렉토리를 변경

    put 파일이름 바꿀이름 : 클라이언트에서 서버로 파일을 가져온다.

    mget 파일이름 : 파일을 서버에서 여러개 가져온다

    mput 파일이름 : 파일을 서버로 여러개 보낸다.

    binary mode : 숫자모드, ascii mode : 문자 모드

    

!dir과 get 명령어
현재 클라이언트 디렉토리를 옮긴 후 파일을 가져온다. 바탕화면에 a.txt 생성
put을 통해 서버로 파일전송. aa.txt파일로 저장된것을 확인.
mget 명령어로 txt파일을 여러개 가져온다.

 

 

 

  - 파일질라 사용

  - 파일질라 사용을 위해 방화벽등록

방화벽 새규칙을 통해 filezila 프로그램 추가

 

  - 파일질라 실행.

  - 파일질라에 서버 연결 -> 사이트 관리자 탭 선택

사이트 관리자 탭 선택

 

  - 사이트관리자에 연결할 서버 설정

새로운 사이트를 입력하고 연결할 서버의 ip를 입력, 비밀번호 묻기와 로그인할 사용자를 입력
전송설정 능동형으로 바꾼 후 확인

  - 상단의 생성된 탭을 통해 서버 연결

상단의 화살표를 누르면 입력한 IP가 생성. 선택 시 서버 연결

  - 연결된 서버 확인

성공적으로 a사용자로 로그인하며, chroot가 설정된 a사용자이기에 상위 디렉토리가 없으며, 파일들이 보이는 것을 알 수 있다.
같은 방법으로 b 사용자에 로그인하면 chroot에 속하지 않았기에 상위 디렉토리가 보이며 파일들이 보인다.

  - 아래 명령어를 통해 설정해놓은 방화벽을 풀 수 있다.

 

- tcp_wrapper : allow에 있는 것만 접속가능하게 한다. deny에 있어도 allow 있는 것이 먼저 접속.

101번이 deny에도 allow에도 존재

 

둘다 접속이 가능하다.

  - deny 된 경우 

allow 에서 101번을 제외시킨다.
접속이 되지 않는다.

 

 

3.2. 리눅스 설치 및 설정 ( 패시브 모드 )

  - 위에 앞선 과정처럼 설정을 모아놓을 디렉토리와 설정을 진행한다.

  - 사용자 생성 및 비밀번호 설정

사용자 aa bb 추가
비밀번호 설정

 

  - 앞선 과정을 동일하게 진행하고, 앞과는  다르게 port는 따로 열지않는다. 또한 패시브모드로 열어줄 포트를 지정하      는 명령어를 마지막에 추가한  후 시스템을 실행.

20포트를 사용하지 않기 때문에 주석 처리해주고 추후 직접 포트를 연결한다.

 

패시브 모드를 YES하며 사용할 포트 구간을 지정.

  -  방화벽을 설정해준다. 21포트와 미리 구간을 지정해놓은 포트를 열어준다.

포트를 열은 후 적용

 

 

  - 프리질라에서 사이트 관리자에 들어간 후 전송설정을 수동형으로 변경.

 

 

  - 연결을 시도하면 연결이 성공적으로 된다.

 

 

  - 파일 aa.txt를 드래그하여 클라이언트로 원하는 폴더에 내려받을 수 있다. 이때 netstat -na -p tcp 명령어로 포트를        확인하면 설정해놓은 포트를 사용하여 내려받는 것을 볼 수 있다.

드래그하여 aa.txt를 desktop으로 내려받는다.

 

60039포트를 사용하는 것을 볼 수 있다.

 

*** 참고 ***

해당 툴을 설치하면 netstat -nat 명령어로 서버에서 확인가능

 

 

 

4. DHCP, FTP 종합문제

 

  - DHCP를 설치하여 운영할 리눅스 서버의 ip 셋팅

10.0.0.3 으로설정

  - vmware 네트워크 설정

  - 통신을 위해 호스트 pc의 ip 설정

호스트 ip 설정

 - dhcpd.conf 파일을 수정하여 할당할 ip 범위와 예외 처리 및 예약 실행.

ip할당과 예외처리 및 예약

  - dhcp서비스를 실행하며 enable 명령어로 재부팅 시 자동으로 실행되도록 설정.

  - 각 윈도우 클라이언트에서 IP를 할당받게 되면 예약처리대로 받게된다.

IP할당 확인

 - 사용자 생성 및 비밀번호 설정

사용자 aa bb 추가
비밀번호 설정

  - 각 사용자의 홈디렉토리에 500M 더미 파일 생성

파일 생성

 

  - vsftpd 설정을 모아놓을 디렉토리를 생성하고 각 베너파일과 chroot파일을 생성한 후 vsftpd.conf 파일을 수정.

베너파일 생성 및 chroot 파일에 사용자 aa 추가
게스트 계정 허용 주석처리
20 포트를 사용하지 않기 때문에 주석처리
xferlog 파일을 설정파일 위치로 변경
time out 시간 설정
베너 파일 설정파일 모아둔 디렉토리로 변경
chroot 리스트 허용 및 리스트 경로 설정
chroot 저장모드를 허용하며, 패시브모드에 주어진 포트를 할당
설정 후 서비스를 실행

 

  - tcp-wrapper를 설정. /etc/hosts-allow와 /etc/hosts-deny에 해당되는 IP입력.

각 해당되는 ip를 vsftpd : IP 형식으로 입력

  - 방화벽을 설정해준다. 21포트와 미리 구간을 지정해놓은 포트를 열어준다.

포트를 열은 후 적용

  - 프리질라에서 사이트 관리자에 들어간 후 전송설정을 수동형으로 변경.

 

  - 연결을 시도하면 연결이 성공적으로 된다.

 

  - 파일 aa.txt를 드래그하여 클라이언트로 원하는 폴더에 내려받을 수 있다. 이때 netstat -na -p tcp 명령어로 포트를        확인하면 설정해놓은 포트를 사용하여 내려받는 것을 볼 수 있다.

드래그하여 aa.txt를 desktop으로 내려받는다.
60039포트를 사용하는 것을 볼 수 있다.

  - w11-1로 접속을 시도하면 tcp_wrapper 설정으로 인하여 접속이 불가.

접속 불가.

'리눅스' 카테고리의 다른 글

21. DNS(2)  (0) 2022.03.22
20. DNS(1)  (0) 2022.03.21
18. DHCP  (0) 2022.03.14
17. SSH Key Generator & Connecton  (0) 2022.03.04
16. 아파치 웹서버 스크립트 생성  (0) 2022.03.03