CAP_NET_RAW는 무엇을 합니까?

CAP_NET_RAW는 무엇을 합니까?

매뉴얼 페이지에서 원시 소켓을 사용할 수 있다는 것을 알고 있지만 "투명 프록시를 위해 모든 주소에 바인딩"이 무엇을 의미하는지 이해하지 못합니다. 권한 있는 포트에 바인딩하려면 다른 기능이 필요하다는 것을 알고 있으므로 어떤 포트에도 바인딩할 수 없다는 것을 알고 있습니다. 프록시 주소에 바인딩하고 있음을 Linux에 알리는 방법이 있습니까?

답변1

에서 인용이 보안 SE 답변:

CAP_NET_RAW: 발신자 위조, 잘못된 형식의 패킷 전송 등을 포함하여 모든 유형의 패킷이 위조될 수 있습니다. 이는 또한 모든 주소에 대한 바인딩을 허용합니다(발신자를 위조하는 기능과 관련하여 장치를 가장할 수 있으며 "투명"에 합법적인 프록시). ", 매뉴얼 페이지에 따르면 공격자의 관점에서 이 용어는 중간자(man-in-the-middle)와 동의어입니다.)

답변2

예.

http://man7.org/linux/man-pages/man7/ip.7.html

콘센트 옵션

...

IP_FREEBIND(리눅스 2.4부터)

활성화된 경우 이 부울 옵션은 로컬이 아니거나 존재하지 않는 IP 주소(아직)에 대한 바인딩을 허용합니다. 이를 통해 애플리케이션이 바인딩을 시도할 때 기본 네트워크 인터페이스나 지정된 동적 IP 주소가 작동하지 않고도 소켓에서 수신 대기할 수 있습니다. 이 옵션은 아래 설명된 소켓별 ip_nonlocal_bind /proc 인터페이스와 동일합니다.

당신은 또한 볼 수 있습니다

IP_TRANSPARENT (리눅스 2.6.24부터)

이 부울 옵션을 설정하면 이 소켓에서 투명 프록시가 활성화됩니다. 이 소켓 옵션을 사용하면 호출 애플리케이션이 로컬이 아닌 IP 주소에 바인딩되고 외부 주소가 로컬 엔드포인트인 클라이언트 및 서버로 실행될 수 있습니다. 참고: 이를 위해서는 TProxy 상자(즉, IP_TRANSPARENT 소켓 옵션을 사용하여 애플리케이션을 호스팅하는 시스템)를 통해 외부 주소로 향하는 패킷을 라우팅하도록 라우팅이 설정되어야 합니다. 이 소켓 옵션을 활성화하려면 수퍼유저 권한(CAP_NET_ADMIN 기능)이 필요합니다.

iptables TPROXY 대상을 사용하는 TProxy 리디렉션을 사용하려면 리디렉션 소켓에 이 옵션을 설정해야 합니다.

(다른 매뉴얼 페이지에 따르면누구나CAP_NET_ADMIN 또는 CAP_NET_RAW이면 충분합니다. IP_FREEBIND에도 이러한 기능이 필요하기를 바랍니다.)

관련 정보