프로그래밍 농장

Linux [ vsftpd ] 본문

Linux

Linux [ vsftpd ]

Tennessee201 2019. 11. 21.
728x90

 

vsftpd == very secure file transfer protocol 

--> sftp 보다  + 더욱(very) 안전한 FTP 

--> redhat linux 기본 FTP 패키지 == 기존 ftp 서비스들에 비해 기능이 향상됨

        설정 간편, 데이터 자원 소모적음, 보안성 우수 

기존 ftp ) wu-ftpd , tftp , sftp , proftp  .... 

 

- FTP 서비스 사용자 

1) 시스템에 등록되어 있는 사용자  == /etc/passwd 에서 확인이 가능한 사용자 

                                              == 관리자가 허가해준 설정과 권한에 따라서 업로드, 다운로드 가능 

2) 시스템에 등록되어있지 않은 사용자( anonymous ) == 익명사용자 

                                                              == 보안상 기본적으로 업로드 금지( 바이러스등,.. 익명성의 특성떄문)  

 

 

1.  cmd 창에서 리눅스서버로 접속해보기 .

cmd 창에서 ftp [본인리눅스서버ip]   입력    --> 리눅스에서 ftp 관련 패키지를 설치해주지않았기떄문에 접속이안됌. 

 

2.   yum -y install -vsftpd   로   2개패키지 정도 설치 

 

3.

firewall-cmd --permanent --add-service=ftp

firewall-cmd --reload

systemctl restart vsftpd   --> 서비스 데몬가지 돌려주기

 

4. 다시 cmd 창에서 ftp 접속 실행.   --> 접속 성공 !

 

 

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

/etc/vsftpd/vsftpd.conf  == vsftpd 주 설정 파일 

 

12  annonymous_enable   ==  익명 사용자 ftp 서비스 허용 여부 

                                    == FTP 서버를 공개 형태로 운영시에는 YES 

                                    == FTP 서버를 

16  local_enable  == 로컬 사용자 ftp 서비스 허용 여부  == 기본적으로는 YES 설정 

19  write_enable  ==  쓰기 (upload) 허용 여부  == 로컬 , 익명 포함 

29  #anon_upload_enable  ==  익명 사용자 업로드 허용 여부 

                                     == 기본적으로 업로드가 금지되어 있기 떄문에 해당 라인을 사용해서 업로드 허용 설정 

==익명 사용자의 ftp 서비스 접근 경로는 /var/ftp 경로 == 리눅스의 /가 아님 

==익명 사용자는 ftp 서비스 접근시 ftp 하는 서비스 계정 자격으로 접근

==설정 파일에서 업로드 허용을 해주어도 실제 디렉토리 권한도 조정 필요 

==익명 사용자가 필요 이상의 권한을 적용 받을 경우에는 서비스 접근 자체가 거부 

== 익명 사용자가 업로드 할 수 있는 경로는 /var/ftp/pub 경로에는 업로드 가능 == 허가권 753,757 조정 

 

-그렇다면, 알ftp 를 이용해서 아래의 조건에서 윈도우 -> 리눅스환경으로 파일전송을 해보자 

 

--> 위 vi 에디터를 통해 익명사용자 업로드허용 수정 , 익명사용자 ftp 서비스 사용 허용으로 수정 후 저장 -> 데몬까지 돌리기 

--> 알 ftp 에서 사용자와  익명사용자로 각각 접근을 해보고 ,  파일 업로드까지 진행해보자 .

--> 허가권 권한은 각각 753 과 757 로 두번씩 실습해보자. 

-- > 결과 :  

753 익명사용자  접근 o / 업로드 x 일반 사용자  
757 익명사용자 접근 x  / 업로드 x  일반 사용자   

         

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

-> 디렉토리 메세지 허용 여부. 

- 사용자가 FTP 서비스 접속시 해당 계정의 홈 디렉토리에 자동으로 접근이 되고 , 해당 계정의 홈 디렉토리에 디렉토리 메세지 설정 

- 설정시 해당 계정의 홈 디렉토리에 .message 의 숨김파일을 만든후 vi로 안에 원하는 내용을 기입 후 데몬돌리고  ftp 접속해보면 내가 저장한 내용이 출력됨. 

vsftpd 주 설정 파일인 /etc/vsftpd/vsftpd.conf   의 37번 라인

 37 dirmessage_enable=YES  

 

--> 이후 사용자가 해당 계정에 접근시 보여줄 텍스트형식의 내용을 직접 만들수있음. ( 아래 예시 ) 

 

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

서비스 접근시 표시항 배너 설정 ( #ftpd_banner ) 

vsftpd 주 설정 파일인 /etc/vsftpd/vsftpd.conf   의 87번 라인

# 해제후 원하는 내용 기입후 저장 , 데몬돌리고 접속시 기입한내용으로 배너뜨는것 확인가능.

 

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

xferlog_enable == 파일 전송시 발생하는 log 기록 여부 == 기본적으로 YES 

vsftpd 주 설정 파일인 /etc/vsftpd/vsftpd.conf   의 40번 라인

 

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

- FTP 서비스 사용 port  = 20,21  port

        ==port 동작 방식에 따라서 active mode , passive mode 로 구분  

 

- active mode : 21 port 로 연결 , 20 port 데이터 전송

- passive mode : 21 port로 연결, 랜덤 port로 데이터 전솔 

==passive mode 사용시 설정 파일  ex) 

     vi 맨마지막 라인에 

                    pasv_enable=YES

                    pasv_min_port=3500

                    pasv_max_port=3550

==랜덤 port 사용시 방화벽 설정  ex)

                   firewall-cmd --permanent --add-port=3500-3550/tcp

                   firewall-cmd --reload 

 

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

- 본인 로그파일에 관한 정보 확인하기 

 

 53  #xferlog_file=/var/log/xferlog  == xferlog 파일 경로 

xferlog 필드 

ex) Thu Nov 21 17:18:03 2019 1 ::ffff:192.168.73.1 0 /var/ftp/111.txt a _ i r korea ftp 0 * i

                              1           2                   3     4           5          6 8  9   10    11

 

1: FTP 서비스에 접근한 시간 

2: 파일 전송에 소요된 시간  -- 단위는 초

3. FTP  서비스에 접속한 host 정보 

4. 전송된 데이터의 크기  --단위는 byte

5.  전송된 파일의 위치

6. 전송된 파일의 형식   --> a ( ASCII) == 문서 파일  // b(Bianry)  == 실행 파일

7.  취해진 행동   ==  아무일없음  //c : 압축 // u : 압축하지않음  // t : tar 

8. 전송 형태  ==  i( incoming ) : upload  //  o(outgoing)  :downland 

9. 접속한 사용자의 종류 ==   r : 시스템에 등록된 사용자 접근

10. 접속한 사용자명    == 9번이 r일 경우에는 접속된 사용자명 표시 

                              == 9번이 a일 경우에는 ? 로 표시 

11. 접속된 서비스명

12. 인증 사용 여부   ==  0: 인증 사용 안 함  // 1 : 인증 사용 함 

13. 인증 성공 여부  ==  * : 인증사용 안했음 

 

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

 

deny_file={*.mp3}    == data upload 를 제한시킬 파일 형식 정의 

 

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

사용자 디렉토리 이동 제한 

101 chroot_local_user=YES    ==사용자 디렉토리 이동 제한 설정 여부 

--> 기본값 기본적으로 모든 사용자가 자신의 home directory 이외의 다른 경로로 이동이 불가

--> 해당 항목 적용시에는 allow_writable_chroot=YES 까지 추가로 다음줄에 작성 필요 

 

103 chroot_list_enable=YES 

==사용자 디렉토리 이동 제한시 이동제한을 제외 시킬 사용자 목록 정의 파일 chroot_list 의 사용 여부

105 chroot_list_file=/etc/vsftpd/chroot_list 

==사용자 디렉토리 이동 제한시 이동제한을 제외 시킬 사용자 목록 정의 파일 chroot_list 의 위치 정의 

728x90