네트워크 외부에서는 모든 SMTP를 차단하려고 하지만 내부 메일 서버 주소에서는 차단하지 않으려고 합니다.
그래서 내가 놓친 것이 있는지 아니면 내 메일 서버에 대한 현재 iptable 규칙을 개선할 수 있는지 궁금합니다.
iptables -I FORWARD -p tcp --dport 25 -j DROP
iptables -I FORWARD -p tcp --dport 25 -j LOG --log-prefix "FORWARD-SMTP-DROP: "
iptables -I FORWARD -p tcp -s <SMTP IP HERE> --dport 25 -j ACCEPT
iptables -I FORWARD -p tcp -d <SMTP IP HERE> --dport 25 -j ACCEPT
iptables -I OUTPUT -p tcp -m multiport --dport 25,465,587 -s ! <SMTP IP HERE> -j DROP
iptables -I OUTPUT -p tcp -m multiport --dport 25,465,587 -s ! <SMTP IP HERE> -j LOG --log-prefix "OUTPUT-SMTP-DROP: "
미리 감사드립니다 :)
답변1
iptables 표준 정책이 FORWARD 체인에 있는 경우 DROP
첫 번째 줄을 제거할 수 있습니다. 또한 (보안 강화를 위해) 라인 3과 4에 smtp 트래픽에 대한 들어오고 나가는 인터페이스를 추가할 수 있습니다.
iptables -I FORWARD -o <OUTGOING IF> -i <INGOING IF> -p tcp -s <SMTP IP HERE> --dport 25 -j ACCEPT
iptables -I FORWARD -o <OUTGOING IF> -i <INGOING IF> -p tcp -d <SMTP IP HERE> --dport 25 -j ACCEPT
방화벽의 올바른 인터페이스 이름을 추가하기만 하면 됩니다. 이유는 간단합니다. IP 주소는 쉽게 스푸핑될 수 있지만 트래픽이 들어오고 나가는 물리적 인터페이스는 쉽게 스푸핑할 수 없기 때문입니다. 그 외에는 규칙이 괜찮은 것 같습니다. 예상대로 작동하는지, 예상치 못한 동작이 있는지 확인해보세요.
위대한 다스 라비치
답변2
FORWARD 체인의 기본 정책이 ACCEPT인 경우:
iptables -I FORWARD -p tcp --dport 25 -o [outgoing iface] -s ! [internal smtp ip] \
-m state --state NEW -j DROP
이상적으로는 기본 정책을 DROP으로 설정해야 합니다. 이를 위해서는 원하는 트래픽만 허용하면 되며, 명시적으로 허용하지 않은 트래픽은 거부됩니다.
iptables -P FORWARD DROP # set FORWARD policy to DROP
iptables -I FORWARD -o [outgoing iface] -s [internal smtp ip] \
-m state --state NEW,ESTABLISHED -j ACCEPT
규칙에는 항상 TCP 상태를 포함해야 하며 FORWARD 테이블을 사용하는 경우 수신/발신 인터페이스 옵션을 사용하여 규칙의 방향을 정의 -m state --state
해야 합니다 . 들어오거나 나가는 인터페이스를 정의하지 않으면 규칙이 명확하지 않으며 특정 방향으로 적용되지 않습니다. -i
-o