현재 저는 텔넷 클라이언트에서 ftp 명령을 실행하려고 합니다. 성공했고, USER
vsftp PASS
를 시도할 때 서버에서 예외가 발생했습니다. RFC 959에 지정된 구문을 따릅니다.PASV
LIST
PORT
500 Illegal PORT command
데이터 포트(포트)
매개변수는 데이터 연결에 사용되는 데이터 포트의 HOST-PORT 사양입니다. 사용자 및 서버 데이터 포트 모두 기본값을 가지며 이 명령과 해당 응답은 일반적으로 필요하지 않습니다. 이 명령을 사용하는 경우 매개변수는 32비트 인터넷 호스트 주소와 16비트 TCP 포트 주소를 연결한 것입니다. 주소 정보는 8비트 필드로 나누어지고, 각 필드의 값은 10진수(문자열 표현)로 전송됩니다. 필드를 쉼표로 구분하세요. 포트 명령은 다음과 같습니다.
포트 h1,h2,h3,h4,p1,p2
여기서 h1은 인터넷 호스트 주소의 상위 8비트입니다.
vsftpd
구성 파일 관련 문제 인지 확인하기 위해 명령을 사용해 보았습니다 ftp
. 패시브 모드를 끄면 제대로 작동합니다. 그러면 텔넷 클라이언트에서 실행할 때 오류가 발생하는 이유는 무엇입니까? 아래에는 세션의 스크린샷 telnet
과 nc
데이터 연결을 수신하려는 세션을 첨부했습니다.
답변1
세상이 젊고 익룡이 여전히 하늘을 날던 옛날에는 IP 네트워크에 연결할 수 있는 컴퓨터의 가격이 10만 달러(실질 달러)였고, 이러한 컴퓨터에 대한 시스템 관리는 대부분 온라인에서 이루어집니다. 이름에 따라 65535 TCP 포트(또는 65536)를 두 그룹으로 나누고 Unix 커널이 1024 미만의 포트에 대한 액세스를 "루트"로 제한하도록 하기로 결정되었습니다. 이 영역에는 잘 알려진 포트가 할당됩니다.
해당 포트에서 들어오는 연결이 보이면 Dick, John 또는 Jane이 자신의 컴퓨터가 해킹되는 것을 허용하지 않을 것이므로 이를 신뢰할 수 있습니다. 다시 말하지만, 컴퓨터에서 신뢰할 수 있는 프로그램만 이러한 포트를 열 수 있습니다.
물론, 이제는 맥주 3파인트(예: Raspberry PI) 이하로 컴퓨터를 구입할 수 있지만 더 이상 그렇지 않습니다.
따라서 OP가 묻는 첫 번째 질문은 "잘못된 포트" 메시지를 받는 이유였습니다. 이는 데몬이 포트 번호 100(예약된 포트)을 반대했기 때문이었습니다.
댓글의 후속 질문은 반대 이유였습니다. 여기에 대한 대답은 약간 모호합니다. 시스템에 fifo의 내용을 보내도록 요청하면 거의 언제든지 임의의 바이트 시퀀스를 보낼 수 있습니다. @AB가 지적했듯이 이를 통해 FTPD를 공격의 일부로 사용할 수 있습니다.