iptables: 일부 IP 주소를 제외한 대부분의 IP 주소에 대한 포트 액세스를 차단하려고 시도할 때 실패했습니다.

iptables: 일부 IP 주소를 제외한 대부분의 IP 주소에 대한 포트 액세스를 차단하려고 시도할 때 실패했습니다.

을 사용하고 있습니다 Debian 8 linux.

일부 IP 주소 그룹을 제외하고 대부분의 IP 주소에서 몇 개의 포트로 들어오는 액세스를 차단하려고 합니다. 다음을 수행하고 있지만 작동하지 않는 것 같습니다.

% sudo /sbin/iptables -v -A INPUT -p tcp -m set '!' --match-set allow-list src -m multiport --dports 110,143,993,995 -j DROP

에 없는 IP 주소에서 이러한 포트에 액세스하려고 시도할 때마다 allow-list해당 시도는 계속 성공합니다.

다음은 처음 몇 줄입니다 allow-list.

% sudo /sbin/ipset list allow-list
Name: allow-list
Type: hash:net
Revision: 6
Header: family inet hashsize 16384 maxelem 262144
Size in memory: 687888
References: 2
Members:
125.8.0.0/13
160.94.0.0/15
104.37.68.0/22
205.233.22.0/23
[ ... more CIDR entries ... ]

현재 iptables 구성은 다음과 같습니다.

% sudo /sbin/iptables -L
Chain INPUT (policy ACCEPT)
target     prot opt source               destination         
DROP       tcp  --  anywhere             anywhere             ! match-set allow-list src multiport dports pop3,imap2,imaps,pop3s

Chain FORWARD (policy ACCEPT)
target     prot opt source               destination         

Chain OUTPUT (policy ACCEPT)
target     prot opt source               destination         

내가 뭘 잘못했나요?

미리 감사드립니다.

답변1

이제 내가 뭘 잘못했는지 깨달았습니다. 다음 수정 사항이 나에게 효과적이었습니다.

% sudo /sbin/iptables -v -I INPUT -p tcp -m multiport --dports 110,143,993,995                                   -j DROP
% sudo /sbin/iptables -v -I INPUT -p tcp -m multiport --dports 110,143,993,995 -m set --match-set allow-list src -j ALLOW

즉, 먼저허용하다해당 IP는 allow-list포트 목록을 통해 접속 가능하며,그 다음에이 포트 목록을 통해 액세스하려는 다른 모든 IP를 제거하십시오.

-p tcp또한 처음에는 TCP 포트를 처리할 때 필요한 옵션을 생략했습니다 .

고쳐 쓰다-A INPUT: 위에서 잘못 사용한 것으로 나타났습니다 . 올바른 것으로 변경했습니다 -I INPUT.

추가 업데이트: ...그리고 에 대해서는 -I규칙을 변경해야 합니다. 이 경우 이전에 정의해야 합니다 DROP.ALLOW

관련 정보