리눅스 환경에서 포트를 열어서 실습하기
이전에 작업한 Termius 리눅스 환경에서 실습을 진행하였다.
OVA 파일을 먼저 실행하고 위의 그림과 같이
sudo python3 -m http.server 80
을 입력한다. (포트 번호는 http로 열 수 있는 범위 내의 포트를 마음대로 설정할 수 있다.)
이 명령어는 관리자 권한으로 python3을 실행하여 http 프로토콜의 80번 포트를 열겠다는 명령어이다.
명령어를 실행하였을 때, 어떤 오류 없이 Serving HTTP on 0.0.0.0 port 80 ~~~ 와 같은 로그가 기록되면 정상적으로 실행이 된 것이다.
이제 url에 http://[IP 주소]:[Port 번호] 를 입력한다.
아래 그림과 같이 디렉토리 안에 작성된 파일을 볼 수 있다.
여기에서 먼저 test.txt 파일을 열고 싶다면 파일 링크를 눌러도 되지만
url에 http://[IP 주소]:[Port 번호]/test.txt를 작성해서 열어보았다.
잘 작동되는 것을 볼 수 있다.
이번에는 포트를 닫고 normal dir/ 디렉토리에서 포트를 열어보려고 한다.
위의 그림과 같이 normal_dir 디렉토리에서 포트를 열고 이전 디렉토리에 있는 normaltic_pic.jpeg 파일을 열어보겠다.
그러면 url에 http://[IP 주소]:[Port 번호]/../normaltic_pic.jpeg
상대주소(.. = 이전 디렉토리) 개념을 이용하여 이전 디렉토리의 normaltic_pic.jpeg 파일 url을 입력하였다.
그러면 이와 같이 에러메세지를 출력한다.
분명히 이전 디렉토리에 normaltic_pic.jpeg 라는 파일이 있는데 왜 열리지 않는 것인가?
(만약에 열린다면 이전의 캐시가 남아있어서 웹브라우저가 기록하고 있는 부분을 보여준 것이다.)
이유는 보안상의 문제 때문이다.
포트를 열었을때 그 포트를 기점으로 상위 폴더까지 열어볼 수 있다면, 파일이 어떻게 구성이 되어있는지 모든 파일을 볼 수 있을 것이다. 한마디로 최상위 폴더로 진입이 가능하다는 뜻.
그러면 사용자는 파일의 모든 부분을 탈취할 수 있는 문제가 발생한다.
이를 막기 위해 포트를 열었을 때는 그 포트를 기점으로 하위 폴더와 파일만 접근이 가능하다.
따라서 포트를 어느 디렉토리에서 여는지가 매우 중요하다