iptables를 사용하여 특정 포트에 화이트리스트를 구현하는 방법은 무엇입니까?

iptables를 사용하여 특정 포트에 화이트리스트를 구현하는 방법은 무엇입니까?

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

관련 정보