FTP(VPN) 관련 문의

yungihang의 이미지

안녕하세요.

윈도우서버에서 FTP서버(리눅스)로 접속하여 데이터를 주고받을 시 방화벽에 걸리는 문제가 있습니다.

FTP 및 VPN과 관련하여 문의드리려고 게시글 올립니다.

현 상황 정리하여 말씀드리겠습니다.

0) 먼저 보안상 20,21번 포트를 사용하지않고, 특정포트로 FTP서버가 설정되어있습니다.

1) 장애내용 :
클라이언트(윈도우) -> FTP서버(리눅스)의 VPN장비를 통한 데이터통신 장애
FTP의 command 포트(특정포트)로의 접속은 정상작동하고 DIR 등 데이터를 주고받는 data포트(특정포트A or 랜덤포트) 연결장애

2) 장애메세지 :
200 PORT command successful. Consider using PASV. 425 Failed to establish connection.

3) 장애조치 :
FTP서버의 모드 변경(ACTIVE, PASSIVE) 해보았으나 서버에서 data포트 변경됨은 확인했으나 동일장애 발생함.
클라이언트의 수신포트를 방화벽 오픈 시 접속성공(클라이언트 쪽에 데이터 TCP포트 문제)

여기서 제가 드리고 싶은 문의는 아래와 같습니다.

1) 클라이언트 수신 포트의 방화벽을 해지할 수 없으므로, 고정 데이터 수신포트를 사용해야하는데 가능한 것인지?

(TCP포트 범위를 제한하는 방법으로는 불충분합니다, minimum limit가 255개인데 정책상 불가능합니다.)

2) 구축단계가 아닌 1년이상 문제없이 사용하였는데 갑자기 문제가 생긴 원인을 모르겠습니다.

현 고정수신포트와 포트범위 제한은 우회적인 방법인 것으로 보이고 발생원인을 확인하는 방법이 궁금합니다.

이전에는 클라이언트 수신 데이터포트가 왜 특정포트A번이었던 것인지?

아니면 VPN장비에 이상이 생겨서 VPN을 통하지않고 패킷이 들어오는 것인지 알고싶습니다.

네트워크쪽이 문외한인데다 서버와 클라이언트 모두 제 관할이 아니다보니 문제해결에 어려움이 많습니다.

간단한 의견이나 키워드도 좋으니 편하게 말씀해주시면 참고하겠습니다.

감사합니다.

pynoos의 이미지

아마도, 20, 21을 사용하지 않고 특정 포트를 써야한다면, 방화벽에게 그 포트가 FTP 타입이라는 것을 명시해줘야 할 것입니다.
잘 사용하다가 안되는 것이라면, FTP 타입이라는 속성이 언제부터인가 빠졌나보네요.

yungihang의 이미지

답변 감사합니다. 몇가지 추가 질문 드리겠습니다.

1) 말씀해주신 FTP 타입을 명시해야할 방화벽은 FTP 서버(리눅스)의 방화벽인가요?
2) 방화벽에서 FTP 포트라고 명시하는 방법은(리눅스서버라고 가정할 시), 아래와 유사한 방법인가요?
iptables -I INPUT 1 -p tcp --dport 5900 -j ACCEPT
iptables -I OUTPUT 1 -p tcp --dport 5900 -j ACCEPT
*서버 보안담당자의 말에 따르면 클라이언트-서버 의 연결은 VPN간 연결을 하기 때문에 방화벽규칙 필요없다하였습니다.

pynoos의 이미지

FTP는 컨트롤채널과 데이터 채널이 나뉘고, 데이터 채널의 경우 Active 모드로하면 서버에서 내 쪽으로 접속을 해와야하고, Passive 모드라면 내쪽에서 서버로 접속해 들어가야합니다.

방화벽은 NAT가 일어나는 곳일테고, FTP 컨트롤 채널에서는 IP 주소가 전송됩니다.

그러므로 NAT가 일어날 때 FTP 프로토콜을 이해하는 방화벽이 있어야 프로토콜상의 IP부분에 대한 수정이 일어나야 정상 작동한다는 것이었습니다.

방화벽이든 iptable이든 포트가 ftp 컨트롤 채널인 경우 특별한 옵션을 주지 않으면 원리상 안된다는 것이죠.

자세한 옵션은 저도 찾아 봐야해서 여기까지 제 한계네요.

yungihang의 이미지

pynoos 님 감사합니다.
말씀해주신 키워드로 좀 더 확인해보고,
문제가 해결된다면 다시 정리하여 업로드하겠습니다.

bushi의 이미지

ftp 서버와 클라이언트 양쪽 모두 passive mode 를 지원해야하고요.

ftp 서버 측에 passive mode 일 때의 포트 범위를 적어주시고, 서버측 방화벽에서 그 포트 범위를 풀어주시는 것이 간편합니다.

방화벽에서 포트 범위를 무조건 풀어준다는 것이 찜찜하거나 ftp 서버에 passive mode 일 때의 포트 범위를 설정하는 기능이 없다면,
iptables 에 ip_conntrack_ftp 을 끼워넣어 ftp protocol 을 통과해서 들어오는 접속 요청만 허가해 줄 수도 있습니다.
FTPS(ftp over TLS) 에 대해서도 동작할지는 잘 모르겠습니다.

댓글 달기

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
이것은 자동으로 스팸을 올리는 것을 막기 위해서 제공됩니다.