OUTPUT 트래픽을 제한하기 위해 iptables를 사용하면 SSH가 종료되는 이유

OUTPUT 트래픽을 제한하기 위해 iptables를 사용하면 SSH가 종료되는 이유

IP 주소 집합으로 나가는 연결을 제한하는 간단한 iptables 구성을 만들려고 합니다. 그러나 OUTPUT 규칙을 구성하려고 할 때마다 SSH 연결이 종료됩니다.

이 문제를 해결하기 위해 들어오는 모든 트래픽을 허용하고 포트 53에서 IP 8.8.8.8에 대한 나가는 트래픽만 허용한다고 가정해 보겠습니다.

이것은 내 시작 iptables 구성입니다.

Chain INPUT (policy ACCEPT)
target     prot opt source               destination

Chain FORWARD (policy DROP)
target     prot opt source               destination
DOCKER-USER  all  --  anywhere             anywhere
DOCKER-ISOLATION-STAGE-1  all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere             ctstate RELATED,ESTABLISHED
DOCKER     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere
ACCEPT     all  --  anywhere             anywhere

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination

Chain DOCKER (1 references)
target     prot opt source               destination
ACCEPT     tcp  --  anywhere             ip-172-17-0-2.eu-central-1.compute.internal  tcp dpt:9090

Chain DOCKER-ISOLATION-STAGE-1 (1 references)
target     prot opt source               destination
DOCKER-ISOLATION-STAGE-2  all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-ISOLATION-STAGE-2 (1 references)
target     prot opt source               destination
DROP       all  --  anywhere             anywhere
RETURN     all  --  anywhere             anywhere

Chain DOCKER-USER (1 references)
target     prot opt source               destination
RETURN     all  --  anywhere             anywhere

이제 다음과 같이 나가는 트래픽을 제한하려고 합니다.

iptables -I OUTPUT -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
iptables -P OUTPUT DROP

두 번째 명령을 실행하는 인스턴스에서 SSH 연결이 차단되어 서버를 다시 시작해야 합니다.

어쩌면 iptables나 ssh에 대한 나의 이해가 잘못되었을 수도 있습니다. 내 생각에는 OUTPUT 체인이 서버에서 시작된 나가는 연결을 제어하며 포트 22에서 서버에 연결하는 기능에 영향을 주어서는 안 된다는 것입니다. 또한 포트 80 및 443의 다른 모든 수신 연결이 종료되므로 SSH만이 아닙니다.

답변1

이제 이해가 된 것 같습니다.

iptables -I OUTPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
iptables -A OUTPUT -d 127.0.0.0/8 -j ACCEPT
iptables -A OUTPUT -d 8.8.8.8 -p udp --dport 53 -j ACCEPT
iptables -P OUTPUT DROP

이렇게 하면 서버에서 시작된 연결에서 나가는 모든 트래픽이 차단됩니다. 그러나 들어오는 연결에 의해 시작된 연결에는 적용되지 않습니다.

관련 정보