- NEW초롱이의 하루
- kisa
- 길은 가면, 뒤에 있다
- C언어 예술가
- Zer0 day - Zer0 day
- Information Security
- Secure-EDU
- 앙큼한유채's 일상 Story
- Library of Ezbeat (잠정 폐쇄)
- The Factory
- 안드
- 모후모후의 커뮤니티
- 공학도의 잡다한 시선
- 안드2
- IT속에 코코아
- IP주소검색(whois)
- IP주소검색(좌표포함)
- 소프트웨어 경력 관리
- 해저 케이블 지도
- MAC주소검색
- IANA
- 포트번호검색
- 자신의IP확인
- 웹페이퍼캡처
- 나의패스워드보안등급
- 웹 취약점 분석
- IT용어정리
- GitHub
- 라이브러리 모음
- 웹마당넷
- 시스템콜참고
- BCD 변환
- 보안뉴스
- 코딩도장(C, Python)
- 백준알고리즘
- 코딩테스트 연습
- 웹 사이트 테스트
- 스크립트꾸미기
- ctf대회목록
- 전자신문
- hash 크랙
- CVE
- 도메인등록
- N클라우드
- BugBountyList
- 칼리공식사이트
- CR4FTING BOX
- 아스키코드 변환
- 웹 사이트 통계 및 평가
- PDF변환
- AWS 및 클라우드 정보
- 가상화 및 서버관련
- 티오리
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- 자바
- 네트워크
- System
- 그라파나
- GUI
- Tkinter
- 클라우드
- 프로젝트
- nginx
- Java
- JSP
- LEVIATHAN
- Shell script
- GPIO
- API
- ACL
- Linux
- 메소드
- 리눅스
- 쉘 스크립트 if문
- RaspberryPi
- 라즈베리파이
- centos docker
- synology
- Python
- 쉘 스크립트
- docker
- 안드로이드
- Android
- 쉘 스크립트 기초
- Today
- Total
IT창고
Network FTP Server 통신 본문
FTP Server에 대해 알아보겠습니다. FTP 는 처음부터 보안을 염두해두고 만든게 아니기 때문에 취약점이 존재합니다.
먼저 FTP 서버를 구축하여 보겠습니다. 환경은 CentOS 6.x 입니다.
FTP 서버를 구축하기 위하여 yum -y install vsftpd 로 패키지를 다운로드 받습니다.
다운받고 service vsftpd start로 데몬을 시작하면 FTP서버가 시작됩니다.
FTP서버는 root계정으로는 접속할수없기 때문에 일반사용자 계정을 따로 만들어서 사용해야만 합니다.
ex) useradd ftp_test , passwd ftp_test
저는 테스트를 위하여 root계정으로 접속해보도록 하겠습니다. root계정으로 접속하는 방법은 /etc/vsftpd/vsftpd.conf파일 설정을 바꿔주면 됩니다. 15번째 줄에 있는 local_enable=YES(로컬계정 활성화)를 활성화 시켜주고 맨 마지막에 userlist_deny=NO(user_list허용목록으로사용) 를 추가하면 됩니다.
이제 /etc/vsftpd/ftpusers 파일에 가서 root를 지워주거나 #으로 주석처리해주면 root계정으로도 FTP서버에 접속이 가능해집니다.
FTP서버 리눅스에서 확인해보면 21번 포트가 개방된걸 확인할수있습니다.
클라이언트로 통신을 해보겠습니다. 만약을 위하여 iptables와 SELINUX를 꺼두도록 하겠습니다.
ex) service iptables stop, setenforce 0
리눅스에서 클라이언트 통신을 한다면 yum -y install ftp로 클라이언트 패키지를 다운로드 받아야만 합니다.
리눅스에서 ftp클라이언트로 접속해보았습니다. get 명령어를 통하여 FTP서버에 있는 파일을 다운로드받아 왔습니다.
업로드나 다운로드를 하게 되면 FTP서버에서는 로그기록이 남습니다. /var/log/xferlog를 살펴보면 해당 로그 기록을 확인할수있습니다.
------------------로그 확인---------------------
Fri Apr 23 01:57:44 2018 1 10.10.10.20 16 /root/ftp_server_test b _ o r root ftp 0 * c
1. 날짜와 시간 Fri Apr 20 02:44:02 2018
2. 파일전송에 소요된 시간 1
3. 서버에 접속한 호스트 정보 10.10.10.10
4. 파일크기 9
5. 가져간 파일의 경로와파일명 /root/ftp_test
6. b
7. _
8. 전송된 파일의 상태 o (outgoing) i (incoming)
9. 사용자인증방식 r (real) 로컬계정 a (anonymous)익명계정
10. 계정명 root
11. 서비스명 ftp
12. 0
13. 인증 성공 여부 * or [공백]
14. 전송 성공 여부 c 전송완료 i 전송실패
-------------------------------------------------
ftp클라이언트로 접속할때 -d 옵션을 사용하면 디버깅 모드로 작동을 합니다. ftp클라이언트에 어떤 명령어가 있는지는 ftp클라이언트에 접속후 help를 입력하면 사용할수있는 명령어들이 나옵니다.
와이어샤크로 FTP 서버와 클라이언트가 했던 통신내용도 확인해볼수있습니다.
디버깅 모드로 확인한 리턴코드와 비슷하게 나오는걸 확인할수있습니다.
Tip. 텔넷 클라이언트으로 FTP접속
FTP클라이언트가 아닌 텔넷으로도 FTP서버에 접속해볼수가 있습니다.
와이어샤크에서 확인한 패킷대로 입력해주면 리턴코드가 telnet클라이언트에게로 돌아옵니다.
FTP 패킷을 확인해보면 ip 10.10.10.10 옆에 56, 203이라는 숫자가 있습니다. 이 숫자는 포트번호인데 주소체계가 8bit이므로 ip쪽은 제대로 나오지만 포트번호는 2개로 나눠야만 합니다.
FTP의 능동모드(Active Mode)에 대해 알아보겠습니다.
FTP가 Active Mode로 움직일때는 서버의 포트는 20번으로 정해져있으며 사용자는 데이터를 전달받을때 새로운 포트를 열고 서버에게 알려줍니다.
PORT [ip],p1,p2
p1은 port/256 , p2는 port %256
위의 사진의 56, 203은 56= 0011 1000 , 203= 1100 1011 -> 00111000 11001011 = 14539가 됩니다. 즉 14539포트입니다.
FTP의 수동모드(Passive Mode)는 서버의 데이터포트가 정해져있지않습니다. 1024~65535 사이에 무작위 포트를 사용하게 됩니다.
'보안 > Network' 카테고리의 다른 글
Network HTTP (0) | 2018.04.25 |
---|---|
Network FTP 패스워드 크랙 (0) | 2018.04.23 |
Network DNS spoofing (0) | 2018.04.18 |
Network DNS 도메인 위임 과정 (0) | 2018.04.17 |
Network DNS 서버와 DNS 헤더 (0) | 2018.04.16 |