dport
나는 iptables를 사용하여 기본적으로 특정 들어오는 트래픽을 차단 하지만 소스 IP 또는 MAC 주소가 일부 화이트리스트에 있는 경우 들어오는 트래픽을 허용하는 일련의 규칙을 구현하려고 합니다 .
DROP
지금까지는 체인( INPUT
/ 등)에 전역 정책을 적용 할 수 있다는 것만 알고 있지만 OUTPUT
특정 포트에서 들어오는 연결에만 이 정책을 적용하는 방법은 잘 모르겠습니다.
답변1
귀하의 설명에 따르면 이것은 iptables의 상당히 간단한 문제입니다. 3단계로 할게요.
전략에 새 체인을 추가하세요.
iptables -N MYCHAIN
INPUT
처리할 대상 포트에 대한 체인의 포트 목록을 정의합니다.
iptables -A INPUT -p <protocol, either tcp or udp> -m <again, protocol, match the '-p' switch value> --dport <portnum> -j MYCHAIN
그것이 하는 일은 특정 포트에 대한 규칙을 정의한 다음 지정된 체인(이 경우 MYCHAIN )으로 "점프"하는 것입니다.
이제 해당 포트에 대한 트래픽을 허용/거부하도록 MYCHAIN에 규칙을 설정하세요.
iptables -A MYCHAIN -s <source_IP> -j ACCEPT
iptables -A MYCHAIN -s <other_source_IP> -j ACCEPT
iptables -A MYCHAIN -j DROP
마지막 규칙에서는 물론 , REJECT
대신 을 사용할 수 있습니다 DROP
. 사용자 매뉴얼( man iptables
)에는 표시되는 트래픽을 기록하거나 제한하는 데 사용할 수 있는 추가 매개변수가 표시됩니다. 고급 규칙에 대한 온라인 자습서도 있습니다.
답변2
기본 정책을 설정하세요. 기본적으로 다음 주어진 규칙과 일치하지 않는 패킷은 삭제됩니다.
iptables -P INPUT DROP
맞춤형 체인을 생성하세요. 주어진 조건(예: 소스 주소가 10.0.0.1)을 충족하는 패킷을 이 체인에 전달합니다.
iptables -N CUSTOM
시작된 연결을 수락하고 루프백 인터페이스에서 연결을 수락합니다.
iptables -A INPUT -m conntrack --ctstate RELATED,ESTABLISHED -j ACCEPT
iptables -A INPUT -i lo -j ACCEPT
10.0.0.1(인터페이스 eth0에 도달)에서 CUSTOM 체인으로 새 TCP 연결을 전달합니다.
iptables -s 10.0.0.1 -i eth0 -p tcp -m conntrack --ctstate NEW -j CUSTOM
특정 포트를 허용하는 사용자 정의 체인에 규칙을 연결합니다.
iptables -A CUSTOM -p tcp -m multiport --dports 22,80 -j ACCEPT