Linux에서 TCP 포트에 대한 액세스를 잠글 수 있나요?

Linux에서 TCP 포트에 대한 액세스를 잠글 수 있나요?

단일 노드 Elasticsearch 시스템을 보호하려고 합니다. 기본적으로 저는 Elasticsearch를 역방향 프록시(nginx) 뒤에 배치하고 모든 사용자나 프로세스가 Elasticsearch와 통신할 수 있는 유일한 방법이 프록시를 통해서인지 확인하고 싶습니다.

Elaticsearch가 Unix 소켓에서 수신 대기를 지원한다면 이는 사소한 일입니다. 소켓 파일에 적절한 권한을 설정하면 완료됩니다. 하지만 이로 인해하지만 사실은 그렇지 않아요, TCP 포트에서만 수신할 수 있습니다.

나는 다음과 같은 내용을 읽은 적이 있습니다.네트워크 네임스페이스작동할 수 있을 것 같지만 경험이 전혀 없습니다.

Elasticsearch와 통신할 수 있는 머신의 유일한 프로세스/사용자가 nginx인지 확인하는 간단하고 안전한 방법이 있습니까?

답변1

루트가 아닌 로컬 사용자의 공격을 방지하기 위해 네트워크 네임스페이스를 사용합니다.

일반적으로 네트워크 콘텐츠는 사용자/그룹 관리와 분리되어 있고 두 가지를 혼합할 수 있지만 iptables오버헤드가 추가되기 때문에 이는 아마도 가장 간단한 솔루션일 것입니다.

네트워크 네임스페이스는 루트만이 프로세스를 네임스페이스 안팎으로 이동할 수 있다는 사실에만 의존합니다.

따라서 (ns = 네임스페이스)와 같은 설정이 필요합니다.

main ns ---- nginx ns ---- elasticsearch ns

연결은 가상 이더넷(veth) 쌍과 자체 LAN 세그먼트를 통해 이루어집니다. 즉, 기본 네임스페이스의 각 프로세스는 nginx 네임스페이스에만 액세스할 수 있으며 elasticsearch 네임스페이스에는 직접 액세스할 수 없습니다(이 네임스페이스에서 프로세스를 시작할 수 없는 경우).

네트워킹의 기본 사항(LAN 세그먼트, 넷마스킹, 라우팅 및 기본 라우팅)을 알아야 합니다. ip netns ...네트워크 공간을 생성 및 관리하고 네임스페이스에서 프로세스를 시작하기 위한 명령줄 도구입니다. ip link ...veth-pair를 생성하기 위한 명령줄 도구입니다.

xterm네트워크 구성을 보고 수정할 수 있도록 각 네임스페이스에서 시작하는 것이 좋습니다 . 모든 것이 작동하고 나면 스크립트를 작성하기만 하면 됩니다.

약간의 실험이 필요하지만 어렵지 않습니다. 이보다 더 쉬운 방법은 생각나지 않습니다.

편집하다

네임스페이스 사용을 시작하려면 다음 스크립트를 사용해 보세요.이 답변, 또는 다음을 살펴보세요이 문제.

당신이 어디에 갇혀 있는지 잘 모르겠습니다. 네트워크 네임스페이스. 각 네임스페이스를 물리적 컴퓨터의 나머지 부분과 파일 시스템 및 기타 사항을 공유하는 자체 네트워크 가상 컴퓨터로 생각하십시오. 따라서 네임스페이스를 처리하는 것은 LAN의 컴퓨터에 연결하는 것과 같습니다. 중요한 도구는가상 이더넷 쌍, 두 개의 네트워크 네임스페이스를 연결하는 가상 LAN 케이블로 생각할 수 있습니다.

관련 정보