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. input 을 허용해야 하는데 그게 state무슨 state뜻인가요? 이는 out이전에 트래픽이 귀하의 서버에서 이 주소로 흘러갔다는 것을 의미합니다! 따라서 해당 주소에 대해 완전히 차단하면 output규칙이 일치하지 않습니다.

그렇기 때문에 모든 노력은 불가능하고 state오직 에서만 이루어질 수 있습니다 input.

일부 해킹된 솔루션이 있을 수 있습니다. 하지만 주어진 옵션으로는 이것이 불가능합니다.

폴리스티렌

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

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

output연결을 허용할 뿐만 아니라 input연결이 올바르게 발생한 경우에만 허용하는 노크 방식을 구성하기만 하면 됩니다 knocking.

관련 정보