티스토리 뷰

반응형

WSL2 Kali Apache2 Web-Server 구축

 

WSL2 Kali - Apache2 Web-Server 구축 및 포트 포워딩 총정리

 

공인 IP를 통해서 WSL2에 설치된 apache2 web-server로 접속하는 방법에 대해서 설명하겠습니다. WSL2에 Ubuntu 또는 Kali Linux를 이용하게 되면 VM Ware나 Virtualbox에서 처럼 부팅에 소요되는 시간 없이 바로 터미널을 실행시킬 수 있는 장점이 있는데요, WSL2에 설치되는 Ubuntu나 Kali의 경우 할당되는 IP가 매번 컴퓨터 부팅할 때마다 바뀌고, IP Class가 Class B로 설정되어 있어서 WSL2가 설치된 PC 이외의 장비에서는 접속할 수 없는 단점이 있습니다.

WSL2에서는 기본적으로 Windows 10에서 localhost를 입력해서, WSL2에서 서비스하는 Web-server에 접속할 수 있지만 오로지 해당 sub-system-linux가 설치된 Windows 10 컴퓨터에서만 확인할 수 있습니다.

하지만 윈도우 10 netsh portproxy 기능을 이용하면, WSL2에 설치된 web server, ssh, ftp 등 얼마든지 서비스 서버를 WSL2에서 실행시키고 공인 IP를 통해서 외부에서 접속할 수 있습니다.

 

WSL2 - Apache2 web-server 설치

 

html 위치

 

Kali Linux의 경우 기본적으로 Apache2 Server가 설치되어 있습니다. Kali Linux에서는 추가적으로 apache2 설치 명령어가 불필요 하지만 Ubuntu 20.04 LTS(WSL2)에 apache2를 설치하시려면 sudo apt-get install apache2 명령어로 설치할 수 있습니다.

sudo service apache2 start

위 명령어로 apache2 web server를 실행시킵니다.
web page는 /var/www/html/ 폴더의 내용이 web-server의 기본 호스팅 위치이니 index.html 및 관련 홈페이지 파일을 /var/www/html 폴더에서 구축하시면 됩니다.

sudo service apache2 stop

web-server 서비스 중단을 위해서는 위 명령어를 입력하시면 됩니다.

 

WSL2 - Apache2 web-server port forwarding/port proxy

 

WSL2 KALI Web-Server port forwarding/proxy plan

 

 

공유기가 총 2개(1차 통신사 공유기, 2차 무선공유기), Windows에서 WSL2까지 총 3개의 port forwarding 및 port proxy가 필요합니다.

약간 복잡하기 때문에 위 이미지처럼 직접 home network에 맞는 IP 및 port number를 미리 그려보는 것을 추천합니다.

윈도10에서 WSL2 Apache2 web-server로 port proxy 시키기 위해서는 netsh 명령어로 규칙 추가, 윈도 방화벽 설정을 해주시면 되는데요, netsh명령어는 powershell(관리자 권한으로 실행)에서 입력하시면 됩니다.

netsh 명령어로 설정한 port proxy 규칙은 netsh interface portproxy reset 명령어로 초기화 시킬 수 있기 때문에 걱정하지 마시고 연습해보세요.

포트 포워딩에 대해서 전혀 모르신다면, 아래 "더보기"를 누르셔서 포트 포워딩에 대해서 먼저 이해하시고 다음 단계를 진행하셨으면 합니다.

 

더보기

 

netsh를 사용한 port proxy 설정 및 명령어 사용법

 

netsh interface portproxy add

 

powershell(관리자 권한)에서 netsh interface portproxy를 누르고 Enter를 눌러보세요.
add, delete, reset, show와 같은 변수를 추가로 사용할 수 있다는 내용이 나옵니다.

그럼 "키보드 화살표 위"쪽 버튼을 눌러서 기존 사용한 명령어 netsh interface portproxy가 나오면 뒷 분에 add를 입력하고 다시 Enter를 눌러보세요.

netsh interface portproxy add

v4tov4, v4tov6, v6tov4, v6tov6 와 같이 추가로 설정할 수 있는 사항이 나옵니다. v4는 IPv4, v6는 IPv6를 의미하며, WSL2에서는 윈도 IP(Class C, IPv4)에서 WSL2 Kali 또는 Ubuntu IP(Class B, IPv4)로 연결을 시켜야 합니다. 따라서 v4tov4로 설정하시면 됩니다. v4tov4를 입력하고 다시 Enter를 눌러봅니다.

netsh interface portproxy add v4tov4

이제는 listenport, listenaddress, connectport, connectaddress와 같은 변수가 보이는데요, connectport, connectaddress는 WSL2의 port 및 address를 설정하시면 됩니다. 

그럼 설정이 잘 된 건지 netsh interface portproxy show all 명령어를 입력해서 설정된 내용을 확인합니다.

 

netsh interface portproxy add v4tov4

 

web-server 규칙 설정 명령어를 응용해서, port 넘버만 22(ssh), 3390(rdp) 등 임의로 추가하시면 됩니다. 여러 서비스를 각각 추가해보시고 연습해보세요. 

wsl2 NIC Bride mode라는 github 글이 있는데요, 해당 포럼에서는 powershell script를 통해서 윈도 부팅 시 자동화 시켜서 사용하는 분들이 많은데요. powershell 규칙에 외부 shell script 실행을 허용시켜줘야 하고, 작업 스케줄러에 넣어줘야 하는데 보안 측면에서 저는 비추천 합니다. 외부 shell script를 허용시켜줘야 하는 부분이 시스템에 취약점을 가져올 수 있기 때문입니다.

 

netsh interface portproxy show all

 

powershell에서 명령어를 한 번 입력해두면, "키보드 화살표 위" 부분을 누르면, 사용자가 사용한 명령어 history 순서대로 다시 돌아갈 수 있습니다. 따라서 이전에 입력했던 netsh 명령어에서 WSL2 IP 부분만 수정해서 다시 실행할 수 있기 때문에 그냥 powershell에서 수동으로 port proxy 시켜서 사용하심이 좋습니다.

특히, powershell에서 직접 명령어 입력하면 더 멋지거든요~~ 훗! (여자 후배가 있을 때... 해커처럼 보일 수 있음 주의!!ㅠ,.ㅠ)

 

윈도 방화벽 inbound 규칙 설정

 

WSL2 방화벽 규칙(Inbound)

 

윈도 10 방화벽 inbound 규칙에, 새로운 규칙을 만드시고 "연결 허용", "로컬 포트는 80"을 넣어서 만드시면 됩니다.
별도로 22번 ssh 서비스 역시 사용하시려면, 콤마(,)를 이용해서 사용할 포트를 추가로 넣어주셔도 됩니다. 하지만 필요 없는 포트는 넣지 마시고, 실제로 운용하는 서비스만 설정하는 것을 권장합니다.

 

WSL2 방화벽 규칙(Inbound)

 

평소에는 "규칙 사용 안 함"으로 바꿔두고, 사용 시에만 "규칙 사용"으로 바꿔서 방화벽을 바꿔주는 것도 보안 측면에서 좋습니다. 일반 데스크톱 컴퓨터의 경우 문제없지만, 노트북 사용자의 경우 카페나 공공 와이파이에 접속하는 경우도 있기 때문입니다.

 

WSL2 방화벽 규칙(Inbound)

 

WSL2 포트 포워딩 설정

 

통신사 공유기 nmap scan (1st Gateway)

 

kali linux에서 1차 공유기(1st Gateway 192.168.25.1)의 open port를 확인합니다. 80번과 8080번 포트가 open 상태입니다. 주로 통신사 공유기 및 무선 공유기의 경우 관리자 페이지 기능이 있습니다. 이런 관리자 페이지 기능 때문에 포트 포워딩 규칙에 80번 포트나 8080포트를 사용하는 경우 일시적으로 포트 포워딩이 작동하기도 하지만, 갑자기 공유기 관리자 페이지가 노출되는 경우도 있습니다. PORT 충돌이 발생할 수 있기 때문에 저는 1차 통신사 공유기(1st Gateway)에 외부 포트는 8888, 내부 포트는 8888로 설정했습니다. (임의로 포트는 바꿔주셔도 상관없습니다.)

 

무선 공유기 nmap scan (2nd Gateway)

 

2차 무선 공유기(2nd Gateway, 192.168.29.1) 역시 nmap으로 scan 했습니다. 역시 80 port가 open 상태입니다. 해당 공유기 역시 관리자 페이지 기능 때문에 활성된 것 입니다. 외부 port는 8888, 내부 port는 80(window 10 방향)으로 설정했습니다.

 

Windows 10 nmap scan 

 

마지막으로 윈도 10(192.168.29.100)에 대한 nmap port scan으로 윈도 FTP Server만 활용하고 있기 때문에 21번 포트가 open 상태입니다. 따라서 window는 외부 80, 내부80번으로 사용하기로 결정했습니다.

 

1차 공유기(1st Gateway) 포트 포워딩 설정

 

1차 공유기(통신사) port forwarding

 

통신사 공유기의 HTTP 부분을 "활성화"로 바꾸고 "내부서버 설정(SK 브로드 밴드)"에서 "내부서버 IP 주소", "외부포트(8888)", "내부포트(8888)"을 입력하고 "적용"을 눌러줍니다.

 

1차 공유기(통신사) port forwarding (활성화)

 

외부에서 web-server로 접속이 필요한 경우만 "활성화"해서 사용하고, 평소에는 "비활성화"로 port를 닫아두는 것이 보안 측면에서 더욱 안전합니다.

 

2차 공유기(무선공유기, 2nd Gateway) 포트 포워딩

 

2차 무선 공유기 Port Forwarding 

 

2차 공유기의 경우, 1차 공유기가 Bridge mode가 아니라면, 포트 포워딩 규칙을 넣어두고 사용해도(1차 공유기의 포트 포워딩 규칙을 "비활성화" 시킨 상태에서) 보안 측면에서 문제가 없습니다.. web server관련 외부 포트는 8888, 내부 포트는 80번, 그리고 windows 10 컴퓨터가 설치된 192.168.29.100 IP(static IP)로 설정을 해줬습니다. 전체적으로 미리 그려본 포트 포워딩 규칙의 이미지를 보면서 포트 포워딩 규칙을 설정해 주시면 됩니다.

 

Web-Server 접속 테스트

 

localhost 접속 결과

 

WSL2 및 Kali apache2 web-server가 설치된 컴퓨터에서는 별도로 port proxy를 안 해줘도, 웹 브라우저에 localhost를 입력하면, WSL2의 Web-server에 접속할 수 있습니다.

하지만, 다른 컴퓨터, 휴대전화 또는 iPad에서 172.XXX.XXX.XXX과 같은 WSL2의 private IP로 접속을 시도해도 접속이 불가능합니다.

위에서 설명드린 포트포워딩과 port proxy 그리고 윈도 방화벽 규칙까지 다 설정이 끝났다면, 자신의 공인 IP를 웹 브라우저에 입력해보세요. 공인 아이피:8888 (외부 포트를 8888로 설정했기 때문)

 

Public IP(공인 IP) 접속 결과

 

정상적으로 web server에 접속이 완료되었습니다.

 

반응형
댓글