특정 프로세스가 특정 범위의 로컬 포트 외부에 바인딩되는 것을 방지하는 방법을 찾고 있습니다. localhost:50000 - localhost:50050이 허용되는 범위라고 가정합니다. 임시 포트의 범위를 변경하고 싶지 않습니다.
매우 특정한 범위의 로컬 포트에 대한 바인딩을 허용하기 위해 프로세스에 권한을 부여하는 것이 가능합니까? 내 애플리케이션이 컨테이너 친화적이면 이 방법이 작동하지만 Docker 추상화 계층 없이 이 작업을 수행해야 합니다.
애플리케이션은 바인딩할 로컬 포트 5개를 무작위로 선택하는 바인딩(0)을 시도합니다.
답변1
프로세스를 별도의 IP 네임스페이스로 격리할 수 있습니다(참고자료 참조 man ip-netns
). 어쨌든 모든 트래픽을 그곳으로 전달해야 하기 때문에 어느 포트에 바인딩되어 있는지는 중요하지 않습니다.
외부 세계에서는 프로세스가 올바른 포트를 사용하고 있는 것처럼 보입니다( netstat
연결을 만들기 위한 것이 아니라 연결을 만들기 위해).
답변2
항상 루트가 아닌 동일한 사용자로 프로세스를 실행하는 경우 모듈을 사용하여 iptables
지정된 포트가 아닌 다른 포트로의 트래픽을 삭제할 수 있습니다 owner
.
시스템이 SELinux를 실행 중인 경우 애플리케이션을 제한하는 정책을 작성하는 것이 더 나은 옵션일 수 있으며 소스 코드에서 아무것도 변경할 필요가 없습니다. 유사한 도구폴간지시작하는 데 유용할 수 있습니다.