공격을 피하기 위해 도커 인스턴스 내에 일부 수신 규칙을 배치하는 것이 합리적이지만 도커 이미지가 연결된 업스트림 라우터의 아웃 바운드 (인터넷) 액세스를 제한해야합니다. 그 이유는 인스턴스 내부의 방화벽 규칙으로 아웃 바운드 액세스를 차단하려고하면 인스턴스가 손상되면 공격자가 해당 규칙을 제거 할 수 있기 때문입니다. 인스턴스의 라우터를 통한 발신을 차단하면 손상이 발생한 경우에도 아웃 바운드 액세스를 차단할 수 있습니다. 침입자는 라우터를 손상시켜야합니다.
필터링이 컨테이너의 호스트를위한 것이라는 설명을받은 후, 달성하려는 것이 조금 더 명확합니다. 이 경우 호스트에서 다음과 유사한 규칙을 추가합니다.
iptables -A FORWARD -s lo.cal.sub.net -d con.tai.ner.ip -j ACCEPT
iptables -A FORWARD -s con.tai.ner.ip -d lo.cal.sub.net -j ACCEPT
iptables -A FORWARD -s ! lo.cal.sub.net -d con.tai.ner.ip -p tcp --dport sftp -j ACCEPT
iptables -A FORWARD -s con.tai.ner.ip -d ! lo.cal.sub.net -p tcp --sport sftp -j ACCEPT
iptables -A FORWARD -s con.tai.ner.ip -m state --state related,established -j ACCEPT
iptables -A FORWARD -s con.tai.ner.ip -j DROP
처음 두 규칙은 호스트와 컨테이너 간의 액세스를위한 것입니다. 세 번째 규칙은 (대략적으로) SFTP로 향하는 호스트의 서브넷이 아닌 것은 우리가 괜찮다고 말합니다. 네 번째는 기본적으로 두 번째에서 세 번째에 이르는 아웃 바운드 규칙입니다. 다섯 번째 규칙은 모든 것을 포괄하는 규칙이며 (사용되는 다른 관련 포트가있는 경우) 필요하지는 않지만 제거 할 수 있습니다. 마지막 규칙은 호스트 서브넷 이외의 다른 것에 대한 액세스를 방지하는 마법입니다. 처음 몇 규칙에는 액세스 권한이 부여되므로 앞의 규칙 중 어느 것도 적용되지 않는 한 트리거되지 않습니다. 여기에서 갈 수 없습니다 " 외부로부터의 인바운드 트래픽은 세 번째 및 네 번째 규칙에 따라 충족됩니다.