일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
- Linux
- dhcp
- Windows Sever
- 접근 권한
- Vmware
- 가상 호스트
- /etc/default/useradd
- SSL
- Winodws Server
- SSH
- 비구름
- ncloud
- DNS
- 네트워크
- acl
- subnetting
- FTP
- subnet mask
- web
- NFS
- Windows Server
- router
- 디스크 관리
- packit tracer
- raincloud
- naver cloud
- VMware Workstation
- lvm
- ip
- network
- Today
- Total
비구름
31. FTP(1) 본문
목차
1. FTP
2. TCP, UDP 포트
3. 설치 및 설정
4. 실습
1. FTP(File Transfer protocol)
- 대용량 파일 전송 (Upload, Download)
1.1 Linux에서의 FTP
1.1.1. vsftpd or proftpd
1.1.2. 인증 및 제어(21번 포트, TCP)
1.1.3. Data전송(20번 포트)
1.1.3.1. Active
- Client가 Data 전송포트를 결정
- Client Port를 모두 Open해야함
- 실습에서는 FTP Program만 사용가능하도록 Port 설정
1.1.3.2. Passive
- Server가 Data 전송포트를 결정, 대부분 이 방식을 사용
- 방화벽에서 Data 전송포트만 Open하면됨
2. TCP, UDP 포트
2.1. 포트 번호
- 0번 ~ 1023번: 잘 알려진 포트 (well-known port)
- 1024번 ~ 49151번: 등록된 포트 (registered port)
- 49152번 ~ 65535번: 동적 포트 (dynamic port)
2.2. 위치
2.2.1. Linux 위치
2.2.3. Winodws 위치
3. 설치 및 설정
3.1. 설치
- yum install –y vsftpd
3.2. 설정
- /etc/vsftpd/vsftpd.conf
- annoymous_enable=YES : 익명사용자 허부/거부
- local_enable=YES : 로컬 사용자(/etc/passwd에 있는 사용자) 로그온 허용/거부
- write_enable=YES : 파일시스템에 데이터 쓰기 허용/거부
- local_umask=022 : 퍼미션. 반대로 적용됨(022 : 666-022=644 : rwx에서 x는 필요없음. 666이 기본)
- anon_upload_enable=YES : 익명 사용자의 파일 업로드 허용/거부
- anon_mkdir_write_enable=YES : 익명 사용자의 디렉토리 생성 허용/거부
- dirmessage_enable=YES : ftp 접속자가 디렉토리 이동시 알림메세지로 설정된 파일 내용 출력
- xferlog_enable=YES : 사용자의 업로드 다운로드를 로그 파일로 저장(/var/log/xferlog에 기록)
- connect_from_port_20=YES : 데이터 전송포트
- chown_uploads=YES : 익명사용자가 업로드한 파일의 퍼미션 자동 변경
- chown_username=whoever : chown_uploads 옵션이 YES일 경우 변경할 사용자 명
- xferlog_file=/var/log/xferlog : xferlog_enalbe 옵션이 YES일 경우 저장할 경로 지정
- xferlog_std_format=YES : xferlog 로그의 표준 포맷 사용
- idle_session_timeout=600 : idle 상태가 600초 동안 이어질 때 세션 종료
- data_connection_timeout=120 : 파일 업/다운로드 시 연결 유지시간 지정. 시간 초과 시 업/다운 취소(주석처리되면 기본값으로 300초 지정)
- nopriv_user=ftpsecure : 익명 접속 시 사용할 유저 명
- asyne_abor_enable=YES async ABOR 명령 사용을 허용/거부(일부 ftp클라이언트에서 파일 전송을 취소해도 취소되지 않는 상태가 생길 수 있음. 그 때 사용)
- ascii_upload_enable=YES : ASCII 파일 업로드 허용/거부
- ascii_download_enable=YES : ASCII 파일 다운로드 허용/거부
- ftpd_banner=Wellcome to... : ftp 접속 성공시 출력하는 환영 메세지 작성
- banned_email_file=/etc/vsftpd/banned_emails : deny_email_enable 옵션이 YES일 때 거부할 이메일 목록
- chroot_local_user=YES : 사용자 접속 시 자신의 홈디렉토리를 /로 인식하게 하여 하위로만 이동 가능
- chroot_list_enable=YES : chroot에서 제외할 사용자 목록 사용 여부
- chroot_list_file=/etc/vsftpd.chroot_list : choroot_list_enalbe이 YES일 경우 해당 목록 파일 지정
- ls_recurse_enable=YES : 접속자에게 ls -R(하위dir까지출력) 명령어 사용 허가/거부(부하가 많으므로 NO)
- listen=YES : standalone모드는 YES, xinetd모드는 NO
- listen_ipv6=YES : IPv6응답 허용/거부
- pam_service_name=vsftpd : 사용자 PAM 인증 시 사용할 설정 파일 이름 지정 (vi /etc/pam.d/vsftpd)
- userlist_enable=YES : /etc/vsftpd/user_list에 지정된 사용자 접속 거부
- tcp_wrappers=YES : TCP Wrapper를 통해 접근제어를 할지 여부를 지정
- pasv_min_port=5000 : 패시브 모드 시 사용할 시작 포트 번호
- pasv_max_port=6000 : 패시브 모드 시 사용할 마지막 포트 번호
- pasv_enable=YES : 패시브 모드 사용/사용안함. NO일 경우 액티브 모드
4. 실습
4.1. yum 명령어를 통해 vsftpd 패키지를 설치합니다.
4.2. 사용자 a, 사용자 b를 생성하고 패스워드를 추가합니다.
4.3. vi 편집기로 /etc/vsftpd/vsftpd.conf 파일을 열고 설정을 변경합니다.
4.4. 로그 파일이 저장될 경로 지정합니다.
4.5. idle 상태가 120초동안 지속되면 세션을 종료하고, 파일의 업로드, 다운로드 시 연결 유지시간 60초로 설정합니다.
4.6. 접속 시 경고메시지를 출력하도록 변경합니다.
4.7. chroot list 를 사용하게 하고 chroot list file의 위치를 지정합니다. (chroot는 루트 디렉토리를 변경하는 작업으로 사용자의 홈 디렉토리를 최상위 디렉토리로 인식하여 디렉토리를 탈출하지 못하게 함)
4.8. 명령모드에서 !bash를 입력하여 잠시 /etc/vsftpd/vsftpd.conf에서 탈출합니다.
4.9. /etc/vsftpd/chroot_list에 사용자 a를 추가합니다.
4.10. exit를 입력해 /etc/vsftpd/vsftpd.conf로 돌아갑니다.
4.11. 사용자가 홈디렉토리로 접근이 가능하게 설정합니다.
4.12. #systemctl 명령어로 ftp를 동작시킵니다.
4.13. 방화벽의 zone 목록과 기본값으로 설정되어 있는 zone을 확인합니다.
4.14. 20번 포트와 21번 포트를 추가하여 방화벽을 열어줍니다.
4.15. 방화벽 설정 후 다시 로드하여 적용시킵니다.
4.16. 포트가 정상적으로 추가되었는지 확인합니다.
4.17. 클라이언트에서 ftp 서버로 접속합니다.
4.18. dir 명령어를 사용하면 클라이언트의 방화벽이 막혀 있어서 화이트 보드 현상이 발생합니다.
(서버는 클라이언트에게 데이터를 보내지만 클라이언트는 데이터를 수신할 수 없는 상태)
4.19. 실행창을 통해 제어판으로 들어갑니다.
4.20. Windows Defender 방화벽을 클릭합니다.
4.21. 고급 설정으로 들어갑니다.
4.22. 조금 전에 서버에서 보낸 데이터를 수신하지 못했기 때문에 생긴 규칙을 삭제해줍니다.
4.23. 인바운드 규칙에 새 규칙을 추가합니다.
4.24. 규칙이 정상적으로 생성되었는지 확인합니다.
4.25. Linux 서버에서 dd 명령어를 통해 테스트용 파일을 생성합니다.
4.26. 클라이언트에서 사용자 a로 접속합니다.
4.27. 생성한 테스트 파일을 확인합니다.
4.28. cd 명령어로 디렉토리 탈출을 시도합니다.(성공했다는 메시지는 출력되지만 탈출되지 않음)
4.29. dir 명령어를 사용하면 디렉토리가 이동되지 않은 것을 확인할 수 있습니다.
(사용자 a는 chroot_list에 있기 때문에 홈디렉토리를 탈출할 수 없음)
4.30. 클라이언트에서 사용자 b로 접속합니다.
4.31. 생성한 테스트 파일을 확인합니다.
4.32. cd 명령어로 상위 디렉토리로 이동합니다.
4.33. 정상적으로 디렉토리가 이동된 것을 확인할 수 있습니다.
4.34. 권한이 없기 때문에 다른 사용자의 홈디렉토리에는 접근이 불가능합니다.
4.44. ftp 서버에서 나갈 때는 quit 명령어를 사용합니다.
'공부' 카테고리의 다른 글
33. HTTPD, DNS, 복습 (0) | 2022.03.26 |
---|---|
32. FTP(Active, Passive, FileZilla) (0) | 2022.03.21 |
30.DHCP(2) (0) | 2022.03.16 |
29. DHCP(1) (0) | 2022.03.15 |
28. Sunetting 문제풀이 (0) | 2022.03.14 |