포트 포워딩이 왜 필요한가?
- 현재 우리 프록시 서버(Node.js 서버)는
3200
번 포트로 요청을 수신한다
- DNS 서버에서 도메인 네임을 통해 응답받은 Host는 IP 주소만 가지고 있기 때문에 모든 요청은 http 기본 포트인
80
번 포트로 요청을 수신한다
- 이는 보통
80
번 포트에서 Nginx와 같이 리버스 프록시를 통해 api 서버의 포트(여기서는 3200
)로 우회해서 사용한다
- 프록시 서버도 마찬가지로 리버스 프록시를 사용하면
80
번 포트에서 3200
번 포트로 우회할 수 있지만 현재 상황에서는 여유가 없어 간단하게 포트 포워딩을 통해 이를 해결하고자 했다
sudo iptables -t nat -A PREROUTING -p tcp --dport 80 -j REDIRECT --to-port 3000
그냥 80번 포트로 Node.js
서버를 열면 안되나요?
- 결론부터 말하자면, 안된다
- 권한 문제
- Unix/Linux 시스템에서 1024 이하의 포트(well-known ports)는 root 권한이 필요하다
- Node.js 애플리케이션을 root로 실행하는 것은 보안상 위험하다
- 악의적인 코드가 실행되거나 취약점이 발견될 경우 시스템 전체가 위험해질 수 있다
- 보안 우려사항
- 애플리케이션이 root 권한으로 실행되면, 공격자가 취약점을 발견했을 때 시스템 전체에 접근할 수 있다
- 따라서, Node.js 애플리케이션은 일반 사용자 권한으로 실행하는 것이 보안상 좋다