Network Namespace
Last updated
Last updated
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE) GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
네트워크 네임스페이스는 네트워크 스택의 격리를 제공하는 리눅스 커널 기능으로, 각 네트워크 네임스페이스가 독립적인 네트워크 구성, 인터페이스, IP 주소, 라우팅 테이블 및 방화벽 규칙을 가질 수 있도록 합니다. 이 격리는 각 컨테이너가 다른 컨테이너 및 호스트 시스템과 독립적인 네트워크 구성을 가져야 하는 컨테이너화와 같은 다양한 시나리오에서 유용합니다.
새로운 네트워크 네임스페이스가 생성되면, **루프백 인터페이스(lo)**를 제외한 완전히 격리된 네트워크 스택으로 시작합니다. 이는 새로운 네트워크 네임스페이스에서 실행되는 프로세스가 기본적으로 다른 네임스페이스나 호스트 시스템의 프로세스와 통신할 수 없음을 의미합니다.
veth 쌍과 같은 가상 네트워크 인터페이스를 생성하고 네트워크 네임스페이스 간에 이동할 수 있습니다. 이를 통해 네임스페이스 간 또는 네임스페이스와 호스트 시스템 간의 네트워크 연결을 설정할 수 있습니다. 예를 들어, veth 쌍의 한 쪽 끝을 컨테이너의 네트워크 네임스페이스에 배치하고, 다른 쪽 끝을 호스트 네임스페이스의 브리지 또는 다른 네트워크 인터페이스에 연결하여 컨테이너에 네트워크 연결을 제공합니다.
네임스페이스 내의 네트워크 인터페이스는 다른 네임스페이스와 독립적으로 자신의 IP 주소, 라우팅 테이블 및 방화벽 규칙을 가질 수 있습니다. 이를 통해 서로 다른 네트워크 네임스페이스의 프로세스가 서로 다른 네트워크 구성을 가질 수 있으며, 마치 별도의 네트워크 시스템에서 실행되는 것처럼 작동할 수 있습니다.
프로세스는 setns()
시스템 호출을 사용하여 네임스페이스 간에 이동하거나, unshare()
또는 clone()
시스템 호출을 사용하여 CLONE_NEWNET
플래그와 함께 새로운 네임스페이스를 생성할 수 있습니다. 프로세스가 새로운 네임스페이스로 이동하거나 생성할 때, 해당 네임스페이스와 관련된 네트워크 구성 및 인터페이스를 사용하기 시작합니다.
새로운 인스턴스의 /proc
파일 시스템을 --mount-proc
매개변수를 사용하여 마운트하면, 새로운 마운트 네임스페이스가 해당 네임스페이스에 특정한 프로세스 정보에 대한 정확하고 격리된 뷰를 갖도록 보장합니다.
또한, 루트 사용자일 경우에만 다른 프로세스 네임스페이스에 들어갈 수 있습니다. 그리고 디스크립터가 없으면 다른 네임스페이스에 들어갈 수 없습니다 (예: /proc/self/ns/net
).
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)