iptables를 사용하여 포트 25 차단(아웃바운드만 해당)

iptables를 사용하여 포트 25 차단(아웃바운드만 해당)

최근 다음 규칙을 사용하여 OpenVZ 7 노드에서 포트 25를 차단하기 시작했습니다.

iptables -I FORWARD -p tcp --dport 25 -j DROP

이것은 잘 작동하지만 인바운드와 아웃바운드를 모두 차단하는 것 같지만 아웃바운드만 차단하고 싶습니다. 가능합니까?

이것이 의미가 있다면 다음 명령을 사용하여 특정 IP 주소에 대해 포트 25를 다시 열었습니다.

iptables -I FORWARD 1 -d 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT
iptables -I FORWARD 1 -s 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT

답변1

원래 답변을 너무 빨리 읽었고 컨테이너화를 다루고 있다는 사실을 눈치채지 못했기 때문에 도움이 되지 않았기 때문에 삭제했습니다. 다음 설명은 무시할 수 있습니다(iptables 활동을 기록하는 방법을 알고 싶지 않은 경우).

컨테이너의 인터페이스 이름을 보면 운이 좋을 수도 있습니다.

iptables -A FORWARD -o docker0 -p tcp --dport 25 -j DROP

docker0인터페이스 이름이 어디에 있습니까? 앞에서 언급했듯이 컨테이너의 트래픽은 FORWARD 체인(역시 컨테이너화됨)을 통과하므로 여기서 OUTPUT 및 INPUT 체인은 가치가 없습니다.

답변2

Kahn 덕분에 완전히 작동했다고 말할 수 있어 기쁩니다. OpenVZ 7을 실행하는 다른 사람들을 위한 솔루션은 다음과 같습니다.

다음 명령을 실행하십시오.

iptables -A FORWARD -o br0 -p tcp --dport 25 -j DROP

그러면 br0(VM에서 상속된 인터페이스)의 아웃바운드 포트 25가 제거됩니다.

그런 다음 특정 IP 주소를 열어야 하는 경우 다음을 실행합니다.

iptables -I FORWARD 1 -s 192.168.0.1 -p tcp -m tcp --dport 25 -j ACCEPT

답변3

Ubuntu 22.04 컨테이너( FROM ubuntu:jammy)에서는 다음 명령을 사용해야 했습니다.

  • 명령 --cap-add=NET_ADMIN에 추가되었습니다 .docker run

  • sudo iptables-legacy -A OUTPUT -o eth0 -p tcp --dport 25 -j DROP

그렇지 않은 경우 iptables-legacy, 내가 얻는 것은 여전히 ​​아웃바운드 포트를 허용 unknown option "--dport" 하지 않는 것입니다.-A OUTPUT

관련 정보