December 29, 2025
루트 없는 포트 80/443 사용하기 방법: 방화벽으로
(이 글은 영어로 또 있어요.)
유닉스는 루트만 1024이한 포트를 사용할 수 있어요. 근데 인터넷 듣기 위험해요: 이 프러그램이 보안 취약 있으면 나쁜 넘들이 루트 권한을 받을 수 있어요. 그래서 비루트로 1024이한 포트를 사용한 방법 필요해요.
잘 아는 방법은:
`setuid`과 `setgid`로 포트 바인딩 하기 후에 일반 사용자 바꼬기 보텅 권한 해제해요.
자근 유틸리티
privbind는 모든 프로그램 1024이한 포트를 사용 권한으로 비루트로 시작해요.리눅스의
CAP_NET_BIND_SERVICE capability프로그램에게 권한을 해요.Docker아니면 다른 컨테이너는 포트과 사용자 옵션이 있어요.
이 브러그 글이 방화벽로 해결할게요. 방화벽의 규칙은 라우팅로 1024이한 포트가 다른 보통 포트에 바꿔요. 제가 iptable 사용해요. 근데 nftables로도 또 할 수 있을 것 같아요.
iptable 교직이 prerouting에 포트를 바꿔요:
HTTP_SRC=80
HTTP_DEST=8080
sudo iptables -t nat -I PREROUTING -p tcp -i eth0 --dport $HTTP_SRC -j REDIRECT --to-ports $HTTP_DEST끝!!! 이 쉬운 규칙이 포트 80에서 포트 8080에게 보낼 거예요. 그리고 이 규직이 아직 Linux-시각에 추가해야 돼요. 벌써 다른 방화벽 규직 있으면 저기에 추가하세요. 아니면 제가 자근 oneshot systemd 서비스 했어요.
