커피닉스, 시스템 엔지니어의 쉼터
  ssh를 이용한 vsftpd 작성일 : 2003/10/14 01:52
 
  • 글쓴이 : 좋은진호 ( http://coffeenix.net/ )
  • 조회수 : 12371
     
    제  목 : ssh를 이용한 vsftpd
    작성자 : 좋은진호(truefeel, http://coffeenix.net/ )
    작성일 : 2003.10.13(월)

    FTP는 암호화되지 않은 형태로 인증과정과 파일이 전송이 이뤄진다. 이는 전송되는 중간에 스니핑이
    이뤄진다면 고스란히 해커(?)의 손에 ID/PW, 전송 파일이 유출될 수도 있음을 의미한다.
    이글에서는 보다 안전하게 ssh 터널링을 통한 FTP 전송과 vsftpd 설정에 대해 소개한다.

    1. ssh 터널링 만들기

    * 필요한 조건

    - FTP 서버에서는 ssh 서버가 동작중이어야 한다. (서버명을 free, ID는 truefeel 이라고 가정)
    - client에서는 ssh 클라이언트가 있어야 한다.

    연결과정을 그러보면.

    로컬의 FTP클라언트 -> ssh 클라이언트 -> 네트워크(암호화 전송) -> ssh 서버 -> FTP 서버

    [ SSH 터널링. 이미지는 www-cs.stanford.edu/security/ 에서 ]

    터널링을 만들어보자!

    # ssh -CNf -L10021:free:21 truefeel@free

    -C : 압축해서 전송한다.
    -N : 명령어 실행없이 시작한다.
    -f : 백그라운드로 실행한다.
    -L : 원격서버의 포트를 로컬로 포워딩한다. (즉, 터널링을 만들어줌)
         free서버의 FTP(21번 포트)를 로컬의 10021번 포트로 포워딩한다. 즉 로컬의 10021번 포트를 통해
         free의 FTP서버에 접속할 수 있다. 이 때 원격끼리는 암호화되어 전송된다.

    만약 원격의 ssh서버가 다른 포트를 사용한다면 -p [포트] 옵셥까지 뒤에 붙여주면 된다.
    ps aux 하면 ssh가 백그라운드로 떠있는 것을 확인할 수 있다.

    2. ftp 접속 및 vsftpd 설정

    ftp명령으로 로컬의 10021번으로 접속을 하면 원격의 free FTP서버로 접속하게 된다.


    $ ftp -p localhost 10021
    Connected to localhost (127.0.0.1).
    220 Secure FTP 서버
    Name (localhost:truefeel): truefeel
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (xxx,xxx,xxx,xxx,80,250)
    425 Security: Bad IP connecting.
    ftp>


    접속은 정상적으로 이뤄졌는데, 명령어를 입력했더니 'Security: Bad IP connecting.'에러가
    발생을 했다. /etc/vsftpd.conf에 다음 한 줄을 추가하면 쉽게 해결할 수 있다.

    pasv_promiscuous=YES

    * 참고자료
      - ssh 맨페이지
      - Re: hello and a vsftpd configuration problem for FTP tunnelling
        http://shoe.bocks.com/nlug/2003-Jun/3022.html


    커피닉스, 시스템 엔지니어의 쉼터 / URL : http://coffeenix.net/board_view.php?bd_code=98