간단한 HTTP 서버
100%

네트워크 공유 · 레슨 3

간단한 HTTP 서버

Python HTTP 서버로 통제된 디렉터리를 임시로 공개하는 방법을 알아봅니다.

Python의 http.server 모듈은 단기 테스트나 신뢰할 수 있는 전송을 위해 정적 파일을 제공할 수 있습니다. 프로덕션 웹 서버가 아니며 인증, 권한 부여, TLS, 속도 제한 또는 적대적 트래픽에 대한 강화된 처리를 제공하지 않습니다.

공유 디렉터리 준비하기

공개하려는 파일만 담은 전용 디렉터리를 만듭니다. 시작 전에 숨김 파일, 심볼릭 링크, 권한 및 민감한 메타데이터를 검토하십시오. 홈 디렉터리, 저장소 루트, 자격 증명 디렉터리 또는 시스템 경로는 제공하지 마십시오.

공유 루트를 명시하려면 --directory를 사용합니다.

$ python3 -m http.server 8000 --directory /srv/temporary-share

인덱스 파일이 없으면 모듈은 일반적으로 디렉터리 목록을 생성합니다. 리스너에 도달할 수 있는 사람은 누구나 제공되는 내용을 열거하고 내려받을 수 있습니다.

--directory /srv/temporary-share를 사용하는 이유는 무엇입니까?

수신 주소 제어하기

같은 호스트만 연결해야 한다면 루프백에 바인딩합니다.

$ python3 -m http.server 8000 --bind 127.0.0.1 --directory /srv/temporary-share

신뢰할 수 있는 네트워크에서 공유하려면 적절한 인터페이스 주소에 의도적으로 바인딩하고 방화벽 정책을 확인합니다. 제한적인 바인딩 없이 실행하면 일반적으로 사용 가능한 모든 인터페이스에서 수신하므로 의도한 네트워크 밖에 디렉터리가 노출될 수 있습니다.

127.0.0.1에 바인딩한 서버에는 일반적으로 누가 접근할 수 있습니까?

접근 테스트하기

서버를 실행하는 호스트에서 알려진 파일을 요청하고 응답을 검사합니다.

$ curl -f http://127.0.0.1:8000/example.txt

승인된 원격 테스트에는 루프백 대신 선택한 인터페이스 주소를 사용합니다. 의도한 파일에 접근할 수 있는지와 문서 루트 밖의 파일에는 접근할 수 없는지를 모두 확인합니다. 브라우저에서 성공했다는 사실만으로 적절한 공개 범위나 기밀성이 입증되지는 않습니다.

python3 -m http.server 8000에서 명시적으로 선택한 포트는 무엇입니까?

중지 및 정리하기

감독하는 터미널에서 임시 서비스를 실행하고 전송이 끝나면 Ctrl-C로 중지합니다. 리스너가 사라졌는지 확인합니다.

$ ss -ltn 'sport = :8000'

데이터 처리 정책에 따라 임시 사본을 제거하고 임시 방화벽 규칙을 되돌립니다. 영구적이거나 인증이 필요하거나 인터넷에 공개되는 배포에는 접근 제어와 TLS가 설정된 유지 관리형 서버를 사용하십시오.

임시 전송이 완료된 뒤 무엇을 해야 합니까?

레슨 완료

간단한 HTTP 서버 완료

이제 공개 범위를 제한한 임시 Python HTTP 서버를 실행할 수 있습니다.

  • 검토한 전용 디렉터리만 제공합니다.

  • 가능한 가장 좁고 적절한 주소에 바인딩합니다.

  • 의도한 접근과 의도하지 않은 경계를 테스트합니다.

  • 이후 리스너를 중지하고 임시 접근을 정리합니다.

학습 진행 상황 저장

무료 계정을 만들어 이 레슨을 저장하고 어떤 기기에서든 계속 학습하세요.

무료 계정 만들기
다음 수업
네트워크 공유(으)로 돌아가기