/etc/shorewall/rules
추가한 규칙은 잘 설정되어 있는 것을 보니 DOCKER
해안벽 규칙에서 설정한 규칙보다 먼저 필터링 규칙이 적용되어 있습니다.
DOCKER-USER
나는 이것이 iptables에서 docker 관련 규칙을 설정하는 데 사용될 수 있다는 것을 보았습니다 . Shorewall이 DOCKER-USER
테이블에 규칙을 추가하도록 하는 방법이 있습니까 ?
답변1
Shorewall은 이를 기본적으로 지원하지 않는 것 같으며 제작자도 그렇게 하는 데 관심이 없는 것 같습니다.
저는 Shorewall과 Docker를 물리적 시스템에서 실행한다면 적어도 그 중 하나를 가상 머신에서 실행할 것이라고 여러 번 말했습니다. 이를 수행하려면 어떤 트래픽이 Docker로 전송되는지 결정하기 위해 Shorewall에서 생성된 규칙 세트가 필요하지만 이를 통해 두 제품이 서로 영향을 주지 않고 이해하기 쉬운 보안 프레임워크가 보장됩니다.
또한 다시 수행해야 한다면 Shorewall에서 Docker 지원을 구현하지 않을 것입니다. 나는 이것이 실수라고 생각한다.
그러나 일부 원시 iptable을 자세히 살펴보고 싶다면 Shorewall 시작/중지 파일에 명령을 넣을 수 있습니다. 아래 예에서는 enp8s0
이더넷 인터페이스입니다. (0) 체인을 생성하고(Docker가 이 작업을 수행하지 않는 경우 재부팅 시), (1) 컨테이너 외부로 설정된 트래픽을 허용하고, (3) 포트 80 및 443이 이더넷 인터페이스에 도달하도록 허용하고, (4) 로그를 기록합니다. (5) 내 이더넷 연결에서 DOCKER-USER에 도착하는 다른 모든 트래픽을 삭제합니다.
/etc/shorewall/start
:
iptables -L DOCKER-USER >/dev/null || iptables -N DOCKER-USER
iptables -I DOCKER-USER 1 -i enp8s0 -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -I DOCKER-USER 2 -i enp8s0 -m conntrack --ctstate INVALID -j DROP
iptables -I DOCKER-USER 3 -i enp8s0 --match multiport -p tcp --dports 80,443 -j ACCEPT
iptables -I DOCKER-USER 4 -i enp8s0 -m conntrack --ctstate NEW -j LOG --log-prefix "DOCKER-USER_DROP "
iptables -I DOCKER-USER 5 -i enp8s0 -m conntrack --ctstate NEW -j DROP
/etc/shorewall/stop
: 이렇게 하면 여러 shorewall restart
s가 규칙을 복제하지 않고 Docker가 입력한 기본 RETURN 규칙이 계속 존재하도록 보장됩니다.
iptables -F DOCKER-USER
iptables -I DOCKER-USER -j RETURN
그래서 간단하게 shorewall check && shorewall restart
. 전후 확인을 사용할 수도 있습니다 iptables -nL DOCKER-USER -v
.