IPTables 방화벽/라우터/게이트웨이는 사용자의 아웃바운드 트래픽을 차단해야 합니다.

IPTables 방화벽/라우터/게이트웨이는 사용자의 아웃바운드 트래픽을 차단해야 합니다.

여러 개의 ethX 인터페이스가 있습니다.

  • eth0인터넷에 연결되었습니다.
  • eth1신뢰할 수 있는 네트워크에 연결되었습니다.
  • eth2네트워크에 연결하려면 사용 규칙을 적용해야 합니다.

내가 원하는 것은 "보기 쉬운" 규칙을 유지하기 위해 분리되어 자체 체인(신뢰할 수 있는/신뢰할 수 없는)으로 들어가는 것입니다 eth1.eth2

:INPUT DROP
-A INPUT ! -i eth0 -j ACCEPT    # allows INPUT on traffic not internet based
... # More rules for eth0 allowing PING and shunting most everything else
-A INPUT -i eth1 -j trusted
-A INPUT -i eth2 -j untrusted

이러한 문제로 인해 OUTPUT 및 FORWARD는 현재 ACCEPT로 설정되어 있습니다.

지금은 eth1그냥 연쇄 가면무도회에 뛰어들면 되는데, 지금까지는 전혀 괜찮았는데, eth2시도한 대로 잘 안 되서 어떻게 조작해야 할지 혼란스럽습니다.

eth2내 생각에는 허용된 모든 포트/프로토콜을 나열하는 것이지만 지금까지는 방화벽 서버의 DNS/DHCP가 아니라 연결된 장치를 통해 아무 것도 연결할 수 없기 때문에 작동하지 않습니다 .

:untrusted
-A untrusted -i eth2 -p tcp -m tcp --dport 80 -j ACCEPT

나에게 필요한 것은 기본적으로 다음을 "말하는" 일련의 규칙입니다.

  1. 나가는 인터넷 트래픽이 eth0ping되지 않으면 삭제됩니다.
  2. eth1인터넷에 연결되어 있으면 eth0수락하세요 ( )
  3. eth2TCP 포트 80을 통해 인터넷에 액세스하는 경우 해당 포트를 수락하고 다른 모든 항목은 삭제합니다.
  4. 인터넷에 접속하려면 다음을 통해 위장을 사용하세요.eth0

어떤 아이디어나 제안이라도 대단히 감사하겠습니다!

답변1

-A OUTPUT -o eth0 -p icmp --icmp-type ping -j ACCEPT
-A OUTPUT -o eth0 -j DROP

-A FORWARD -i eth1 -o eth0 -j ACCEPT
-A FORWARD -i eth0 -o eth1 -m state --state ESTABLISHED,RELATED -j ACCEPT

-A FORWARD -i eth2 -o eth0 -p tcp --dport 80 -j ACCEPT
-A FORWARD -i eth2 -o eth0 -j DROP
-A FORWARD -i eth0 -o eth2 -m state --state ESTABLISHED,RELATED -j ACCEPT

*nat
-A POSTROUTING -s 192.168.2.0/24 -o eth0 -j MASQUERADE

마지막 줄을 Network에서 192.168.2.0/24Network로 변경합니다. eth2이렇게 하면 eth2네트워크에서 발생하는 패킷만 가장됩니다.

또한 정책에 의존하기보다는 체인 끝에서 패킷을 삭제하는 규칙을 명시적으로 추가하는 것을 선호합니다.

이는 질문의 핵심 사항을 다루어야 합니다.

관련 정보