Iptables 아웃바운드 차단이 인바운드 거부

Iptables 아웃바운드 차단이 인바운드 거부

특정 IP 주소에 대한 아웃바운드 연결만 차단하려고 하는데, 동일한 IP 주소로부터의 인바운드 연결은 허용하고 싶습니다.

아웃바운드 연결 차단에 대해 제가 이해한 바로는해서는 안 된다인바운드 연결이 성공적으로 이루어진 경우 차단됩니다.

저는 기본적으로 다음과 같은 규칙을 설정했습니다.

--append OUTPUT --jump DROP --destination x.x.x.x

설정된 연결을 허용하려면 다음을 수행하세요.

--append INPUT --in-interface eth0 --match state --state RELATED,ESTABLISHED --jump ACCEPT

이 IP 주소가 서버에 연결을 시도할 때 연결이 허용되기를 원하지만 서버가 아웃바운드 연결을 시도할 때 연결이 불가능합니다.

에 대한 아웃바운드 연결을 만들기 위해 서버에 대한 전체 액세스를 차단하고 싶습니다 x.x.x.x. 그러나 해당 IP의 사용자가 서버에 액세스하려는 경우 특정 포트의 사이트를 방문할 수 있어야 합니다.

답변1

시도한 방화벽 규칙이 거의 완료되었습니다. 10.10.10.10해당 주소로의 아웃바운드 트래픽을 중지하면서 호스트로부터의 인바운드 트래픽을 허용하려면 다음이 필요합니다 .

  1. 인바운드 허용(아마도 모든 포트로)
  2. 설정된 인바운드 연결에 대한 아웃바운드 응답 허용
  3. 남은 아웃바운드 트래픽 차단

그래서,

iptables -A INPUT --src 10.10.10.10 --jump ACCEPT

iptables -A OUTPUT --match state --state RELATED,ESTABLISHED --jump ACCEPT
iptables -A OUTPUT --dst 10.10.10.10 --jump DROP

나중에 도달하는 규칙 이 INPUT있거나 정책이 그런 식으로 설정 되지 않는 한 실제로 규칙이 필요하지 않습니다 .DENYREJECT

답변2

당신은 잘못 알고 있습니다! 내가 이해하는 것은 다음과 같습니다.

우선, 당신의 input규칙을 살펴보세요. 의 입력을 허용해야 하는데 state, 무슨 state뜻인가요? 이는 out이전에 트래픽이 귀하의 서버에서 이 주소로 이동했음을 의미합니다 ! 따라서 output(이 주소에 대해) 완전히 차단하면 이 규칙은 절대 일치하지 않습니다 .

이것이 바로 귀하의 완전한 노력이 불가능하고 state에서만 가능한 이유입니다 input.

해킹된 솔루션이 있을 수 있습니다. 그러나 주어진 옵션으로는 불가능합니다.

추신

귀하의 질문 후에 나는 이전 주제를 다시 확인하고 무엇을 추측했습니다. 귀하의 게시물을 다시 읽은 후 이것이 바로 귀하가 원하는 것임을 깨달았습니다. 보다포트노킹.

요청에 구성 요소를 추가하여 더욱 향상됩니다. 무작위성.

노크 방식을 구성하고 output연결을 허용할 뿐만 아니라 input올바른 경우에만 연결을 허용 knocking하십시오.

관련 정보