FTP 를 좀 더 안전하게 사용하기

bugiii의 이미지

ftp는 파일 전송용으로 많이 사용하고 편리하기도 하지만, 로긴 과정이 평문으로 이루어지기 때문에 보안에 취약해서 이래저래 사용하기가 꺼려지게 됩니다.

물론 sftp나 scp 같은 ssh 계열을 사용하게 된다면, 문제될 것이 없지만 이런류의 문제점은 서버와 클라이언트에게 과도한 부하를 주며 속도 또한 만족스럽지 못합니다.

이리저리 머리를 굴려보고, 찾아보다가 FTP over SSL, FTPS 라는 것을 찾았습니다. 이것은 FTP 프로토콜을 SSL 로 감싸서 보안 문제를 해결한 것으로 FTP 의 특성상 컨트롤과 데이터 채널을 모두 SSL 로 감싸게 됩니다.

이렇게 되다보니 보안에는 좋은데, ssh 계열의 문제가 그대로 나타나게 되어서 컨트롤 채널만 SSL로 쓰고 데이터 채널은 일반 채널로 사용해보려고 조사를 시작했습니다.

일단 vsftpd는 이런 상황을 자유롭게 조절할 수 있는 옵션이 있었기 때문에, 서버 문제는 해결이 되었습니다. 인증서 만들고 vsftpd.conf 설정하는 것은 여러군데 있으므로 패스하고...

클라이언트는 CuteFtp가 원하는 동작을 하기는 하지만... 좀 구린 인터페이스에 오픈소스가 아니기도 하고 여러모로 쓰기가 꺼려지더군요.

그렇다면, 우리의 FileZilla는 어떨까요? 이 프로그램은 다 좋은데, FTPS 채널 양쪽을 전부 다 SSL로 감싸버립니다. 옵션도 없습니다.

결국... 아예, 로긴까지만 SSL로 보안을 유지하고 로긴이 끝나면 평문을 사용하며 데이터 채널도 암호화하지 않도록 패치를 해보았습니다.

--- ftpcontrolsocket.cpp        (.../vendor/3.0.8/src/engine/ftpcontrolsocket.cpp)      (revision 3)
+++ ftpcontrolsocket.cpp        (.../trunk/src/engine/ftpcontrolsocket.cpp)    (working copy)
@@ -939,8 +939,8 @@
        */
        else if (pData->opState == LOGON_PROT)
        {
-               if (code == 2 || code == 3)
-                       m_protectDataChannel = true;
+               //if (code == 2 || code == 3)
+               //      m_protectDataChannel = true;
        }
        else if (pData->opState == LOGON_CUSTOMCOMMANDS)
        {
@@ -1120,7 +1120,7 @@
                res = Send(_T("PBSZ 0"));
                break;
        case LOGON_PROT:
-               res = Send(_T("PROT P"));
+               res = Send(_T("PROT C"));
                break;
        case LOGON_CUSTOMCOMMANDS:
                if (pData->customCommandIndex >= m_pCurrentServer->GetPostLoginCommands().size())

자, 이제 리눅스나 FreeBSD 에서는 컴파일만 살짝하면 쉽게 사용할 수 있게 되었습니다.

문제는 윈도우용 클라이언트인데 파일질라를 윈도우용으로 컴파일하는 과정은 해보신 분은 아시겠지만, 도를 닦는 분이 아니라면 절대로 성공할 수 없으며, 금전적인 손해가 막심합니다. (키보드와 마우스를 모니터를 향해서 던지게 되며 성격이 포악해져서 주변분들을 공격할 수도 있습니다.)

그러면, 윈도우용 클라이언트를 어떻게 해야 하는가... 별수없이 리버스 엔지니어링했습니다. 디스어셈블러로... 풀어서 근처 문자열을 근거로 역추적해서 바이너리 수정을 해버렸습니다... (오픈 소스 프로그램을 이런식으로 대접을 한다는게 우습지만... 전 도인이 아니므로...)

잘 동작하는 바이너리를 아래에 첨부합니다.

아, 이렇게 사용하면 데이터 채널 보안이 안좋기는 하지만 FTPS 프로토콜 자체의 문제점인 방화벽이나 공유기 문제가 해결되는 장점도 있습니다.

미리 파일질라를 설치하고 첨부 파일의 확장자를 7z로 변경하고 압축을 푼 다음 사용하시기 바랍니다.

그럼, 이만...

File attachments: 
첨부파일 크기
Image icon filezilla-3.0.9.1-cdc.7z.rename.jpg1.65 MB

댓글

appler의 이미지


좋은 정보 감사/


laziness, impatience, hubris

不恥下問 - 진정으로 대화를 원하면 겸손하게 모르는 것은 모른다고 말하는 용기가 필요하다.


laziness, impatience, hubris

不恥下問 - 진정으로 대화를 원하면 겸손하게 모르는 것은 모른다고 말하는 용기가 필요하다.

EcusE의 이미지

filezilla의 특정기능을 수정해 빌드하던중 아주 유용한 bugiii님의 패치를 발견해
패치를 적용하고 windows용 filezilla 3.1.6을 빌드해봤습니다.
windows2000이하에서는 정상 작동하지 않을것으로 예상됩니다. windows xp이상에서만 사용하세요.
첨부파일의 확장자중 .jpg는 삭제하고 압축을 풀어 사용하시면 됩니다.
그리고 filezilla 옵션중 자동업데이트에 체크가 되어 있다면 실행파일이 바뀔수 있으니
그부분은 알아서(?) 처리 하셔야 할듯합니다 :)

댓글 첨부 파일: 
첨부파일 크기
Image icon filezilla316.rar_.jpg2.91 MB
oldbell의 이미지

좋은프로그램 올려주셔서 감사합니다.

압축을 푸니 3,103,744 Byte의 실행파일이 있습니다.
자동 Update 한 실행파일은 7,038,464 Byte 이던데 왜 이렇게 차이가 나는지 모르겠습니다.

인생의 무게를 느껴라. 아는 만큼 보이는게다.

EcusE의 이미지

upx로 실행파일을 압축 했습니다. 압축단계에 따라 크기가 다르게 나옵니다 :)
그리고 windows에서의 컴파일은 아래링크를 참고하세요.

http://wiki.filezilla-project.org/Compiling_FileZilla_3_under_Windows

EcusE의 이미지

파일 정리과정에서 헤깔려 패치가 제대로 적용안된 버전을 올린것 같습니다(__)
이전버전을 받으신분들은 다시 받으셔서 테스트 해주시면 감사하겠습니다..

댓글 첨부 파일: 
첨부파일 크기
Image icon filezilla316_new.rar_.jpg3.59 MB
Gethoper의 이미지

윈도우즈에서는 컴파일이 왜이렇게 힘든건지 ㅜㅜ

s.choi의 이미지

scp 나 ssh 가 서버나 클라이언트에 ftp 보다 얼마만큼의 과도한 부하를 야기시킬 수 있는지에 대한 참고 문헌이 있으신지 (전송률 차이가 얼마나 나는지에 대한 참고문헌도 같이요...) 알려주시면 공부하는데 도움이 될 것 같습니다. 데이터 통신을 하는데에 있어서 로긴 과정뿐 아니라 데이터 그 자체도 SSL 보안이 적용되는 것을 바람직 하게 생각해 왔었는데요...

특수한 목적(?) 이 아니라면, 굳이 이 방법을 사용해야 할 필요가 있을까 해서요.

송효진의 이미지

물론 데이터도 암호화 하는게 좋습니다.
ssh 라고 해서 cpu 를 팍팍 쓰지는 않기 때문에,
수십기가도 속도에 구애받지 않고 그냥 scp 로 전송하고 있습니다.

중요문서가 아닌 바이너리 전송이라면,
인증만 암호화하는것이 빠르니 괜찮긴 하죠.

emerge money
http://wiki.kldp.org/wiki.php/GentooInstallSimple - 명령어도 몇개 안되요~
http://xenosi.de/

emerge money
http://wiki.kldp.org/wiki.php/FuntooInstallLog - 명령어도 몇 개 안돼요~
http://xenosi.de/

EcusE의 이미지

filezilla 3.2.4.1버전에 패치를 적용해 빌드한 파일을 첨부합니다. 전체 파일 모두 포함된 버전입니다.
제홈페이지 http://free4u.wo.tc/10285 에서 계속 업데이트(제가 필요할때만 업데이트합니다 ^^;)
하도록 하겠습니다 :)

파일크기가 커서 첨부가 안되는듯 합니다. 위에 링크에서 받으시기 바랍니다.

bugiii의 이미지

데비안에서 윈도우용 파일질라3 컴파일하는 문서를 올렸습니다.

Cross Compiling FileZilla 3 for Windows under Debian GNU/Linux

beerpit의 이미지

감사합니다

ahsan의 이미지

fileZilla가 알보다 성능이 좋은가요?

익명 사용자의 이미지

https://imho.gq/wordpress/?p=84
https://imho.gq/wordpress/?p=91

오래됐지만 업데이트 했습니다.

익명 사용자의 이미지

댓글 달기

Filtered HTML

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

BBCode

  • 텍스트에 BBCode 태그를 사용할 수 있습니다. URL은 자동으로 링크 됩니다.
  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param>
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.

Textile

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • You can use Textile markup to format text.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Markdown

  • 다음 태그를 이용하여 소스 코드 구문 강조를 할 수 있습니다: <code>, <blockcode>, <apache>, <applescript>, <autoconf>, <awk>, <bash>, <c>, <cpp>, <css>, <diff>, <drupal5>, <drupal6>, <gdb>, <html>, <html5>, <java>, <javascript>, <ldif>, <lua>, <make>, <mysql>, <perl>, <perl6>, <php>, <pgsql>, <proftpd>, <python>, <reg>, <spec>, <ruby>. 지원하는 태그 형식: <foo>, [foo].
  • Quick Tips:
    • Two or more spaces at a line's end = Line break
    • Double returns = Paragraph
    • *Single asterisks* or _single underscores_ = Emphasis
    • **Double** or __double__ = Strong
    • This is [a link](http://the.link.example.com "The optional title text")
    For complete details on the Markdown syntax, see the Markdown documentation and Markdown Extra documentation for tables, footnotes, and more.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 사용할 수 있는 HTML 태그: <p><div><span><br><a><em><strong><del><ins><b><i><u><s><pre><code><cite><blockquote><ul><ol><li><dl><dt><dd><table><tr><td><th><thead><tbody><h1><h2><h3><h4><h5><h6><img><embed><object><param><hr>

Plain text

  • HTML 태그를 사용할 수 없습니다.
  • web 주소와/이메일 주소를 클릭할 수 있는 링크로 자동으로 바꿉니다.
  • 줄과 단락은 자동으로 분리됩니다.
댓글 첨부 파일
이 댓글에 이미지나 파일을 업로드 합니다.
파일 크기는 8 MB보다 작아야 합니다.
허용할 파일 형식: txt pdf doc xls gif jpg jpeg mp3 png rar zip.
CAPTCHA
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.