![IPTables 방화벽/라우터/게이트웨이는 사용자의 아웃바운드 트래픽을 차단해야 합니다.](https://linux55.com/image/61453/IPTables%20%EB%B0%A9%ED%99%94%EB%B2%BD%2F%EB%9D%BC%EC%9A%B0%ED%84%B0%2F%EA%B2%8C%EC%9D%B4%ED%8A%B8%EC%9B%A8%EC%9D%B4%EB%8A%94%20%EC%82%AC%EC%9A%A9%EC%9E%90%EC%9D%98%20%EC%95%84%EC%9B%83%EB%B0%94%EC%9A%B4%EB%93%9C%20%ED%8A%B8%EB%9E%98%ED%94%BD%EC%9D%84%20%EC%B0%A8%EB%8B%A8%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4..png)
여러 개의 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
나에게 필요한 것은 기본적으로 다음을 "말하는" 일련의 규칙입니다.
- 나가는 인터넷 트래픽이
eth0
ping되지 않으면 삭제됩니다. eth1
인터넷에 연결되어 있으면eth0
수락하세요 ( )eth2
TCP 포트 80을 통해 인터넷에 액세스하는 경우 해당 포트를 수락하고 다른 모든 항목은 삭제합니다.- 인터넷에 접속하려면 다음을 통해 위장을 사용하세요.
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/24
Network로 변경합니다. eth2
이렇게 하면 eth2
네트워크에서 발생하는 패킷만 가장됩니다.
또한 정책에 의존하기보다는 체인 끝에서 패킷을 삭제하는 규칙을 명시적으로 추가하는 것을 선호합니다.
이는 질문의 핵심 사항을 다루어야 합니다.