-
FTP
다른컴퓨터와 파일을 주고받을 수 있는 파일 통신 프로토콜이다.
관련된 모듈
Server : vsftpd, proftpd, .........
Client : ftp cmd, Web browser
Active/Passive Mod
[Active]
클라이언트 > FTP요청 > 서버(20번 포트: command) : 이떄 클라이언트는 21번포트와 연결할 포트번호하나와 같이 커멘드요청을 보낸다.
서버(21번 포트) > 접속요청 > 클라이언트(보낸포트) : 20번포트(data를 전송할 포트)는 클라이언트가 보낸 포트번호와 연결요청을 하고 연결한다.
이때는 클라이언트의 방화벽또한 해제해야한다.
[passive]
서버는 임의의 포트번호하나를 FTPdata포트로 지정해놓는다.
클라이언트 > FTP요청 > 서버 : 이때 클라이언트는 20번포트의 command에게 접속을하면 만들어놓은 임의의 포트에 클라이언트가
data를 받을 포트를 연결한다. 따라서 클라이언트 방화벽과는 상관없게된다.
Server : Standalone#모듈
vsftpd.x86_64 (yum 지원) > 서버에서는 [Active]를 기본값으로 제공하고있다./var/ftp/pub/ : 기본 공유디렉터리 ( 권한을 설정해줘야 client가 업로드 할수있다/etc/vsftpd/vsftpd.conf : ftp 데몬
#>yum -install -y vsftpd.x86_64
#>systemctl restart vsftpd
#>chmod 777 /var/ftp/pub
/etc/vsftpd/vsftpd.conf
12 anonymous_enable= 익명 계정 연결 허용 여부( anonymous )
16 local_enable= 로컬 사용자 계정 연결 허용 여부( server user ) >>(12, 16)둘다 NO하면 서버 차단
19 write_enable= 쓰기권한 허용 여부( local사용자 대상)
23 local_umask=022 어느권한으로 설정할건가요?? ( 쓰기권한 차단 )
29 #anon_upload_enable=YES 익명사용자 쓰기권한 = 주석이걸려있으므로 풀면 anonymous계정의 업로드가 허용된다.
33 #anon_mkdir_write_enable=YES 익명사용자 디렉터리 생성 여부
37 dirmessage_enable= 접속시 메세지
40 xferlog_enable=YES xferlog 사용 여부
43 connect_from_port_20=YES 20번 포트로 연결
53 #xferlog_file=/var/log/xferlog log저장경로 이게 기본값이니 바꾸고싶으면 주석풀고 바꿔서 사용한다
60 #idle_session_timeout=600 세션의 접속시간을 제한한다. 이것도 기본값이니 바꾸고 싶으면 주석풀고 바꿔서 사용한다.
63 #data_connection_timeout=120 데이터 전송시간을 제한한다 이것도 기본값이니 바꾸고 싶으면 주석풀고 바꿔서 사용한다.
67 #nopriv_user=ftpsecure anonymous 사용자를 ftpsecure사용자로 처리한다.
100 #chroot_local_user= 상위 디렉터리 접근 거부 여부
101 #chroot_list_enable= 상위 디렉터리 예외 리스트 사용 여부
103 #chroot_list_file=/etc/vsftpd/chroot_list 위의 설정에서 제외될 사용자 계정 리스트 파일( 관리자만들어주는것 같다 )
114 listen=NO (ftp동작상태) init 상태 (다른 데몬에의해 ftp데몬이 동작할때 변경)
123 listen_ipv6=YES (ftp동작상태) Standalone 상태 (ftp데몬이 혼자 동작하는상태)
125 pam_service_name=vsftpd PAM 인증시 파일 이름 지정
126 userlist_enable=Yes 사용자 계정 접근제어 목록 사용여부
127 tcp_wrappers=Yes tcp_wrapper 접근제어 사용여부( 호스트 ip를 가지고 접근하는 것 )
명령어 커멘드
ftp용
>dir : 디렉터리 목록확인
>pwd :작업 디렉터리 확인 (anonymous인경우 이동이 불가능하다.)
>cd, lcd :디렉터리이동, 클라이언트 측 fullpath
: 클라이언트 내위치는 정말중요하다 ( 상대경로 때문에)
>put <c_path> <s_path> : 파일업로드. 처음은 파일path 두번쨰는 저장될 path
>get <s_path> <c_path> 파일 다운로드,
>quit(): 종료
Client
#Web browser
URL : ftp://<server_ip> ( serverip는 리눅스 서버아이피에서 ip addr명령어로 확인)
기본 빈디렉터리 pub/ 확인
#cmd
>ftp <server_ip>
#익명연결
사용자 : anonymous
암호 : [enter]
ftp>dir
기본 다이렉트 /pub를 확인할 수 있었다.
동작을 안하는 이유 :
ftp는 주고받기위해 data용 command용포트 2개를 사용한다.
port 20(data), 21(command)
서버가 클라이언트에 접근한다( 보통 클리언트가 서버에 연결을 시도하지만 ftp는 다르다)
따라서 클라이언트에 방화벽이 걸려있으면 서버에 대한 방화벽을 해제해야한다.
anonymous사용자같은 경우 데몬설정파일에서 접속을 차단할 수 있다.
#리눅스
ftp.x86_64 설치 : 기본값은 passive모드다.( option -p가 default값으로 설정되어있다. )
cmd 처럼 들어온다.
서버에 아는 아이디가 있다면 로그인하면 된다.
유저로 로그인하면 홈디렉터리부터 시작한다.
파일쓰기
다른 네트워크 파일 시스템과 마찬가지로 2개의 권한을 바꿔야한다.
#1 server의 디렉터리 권한
>chmod로 바꾸면된다.
>로그인을 한 사용자는 여기까지하면 파일업로드가 가능하다.
#업로드 put <client_path> <server_path>
#다운로드 get <server_path> <client_path> : client_path는 맨마지막에 저장될 파일이름을 지정한다.
이때도 클라이언트측에서도 글을쓸수 있는 권한이 있어야한다 ( root로 했기때문에 가능)
#2 익명사용자 ftp쓰기권한
/etc/vsftpd/vsftpd.conf 의 파일을 수정한다.
29 #anon_upload_enable=YES 앞의 #을 제거한다.
systemctl restart vsftpd 데몬을 재시작한다.
'서버 > 리눅스' 카테고리의 다른 글
[리눅스] xinetd ( 서비스관리 데몬 ) (0) 2017.04.26 [리눅스] FTP보안설정 (0) 2017.04.25 [리눅스]Quota (0) 2017.04.20 [리눅스] 오토마운트 (0) 2017.04.20 [리눅스] ACL(Access Control List ) (0) 2017.04.19