내 iptables 출력은 다음과 같습니다.
Chain INPUT (policy ACCEPT)
num target prot opt source destination
1 DROP all -- 0.0.0.0/0 0.0.0.0/0 match-set sshd src
Chain FORWARD (policy ACCEPT)
num target prot opt source destination
Chain OUTPUT (policy ACCEPT)
num target prot opt source destination
이 "sshd" 세트가 이미 iptables에 연결되어 있는지 어떻게 확인할 수 있나요?
감사해요
답변1
이것IP 세트참조 카운터가 내장되어 있습니다. 그래서 참조할 때마다iptables, 해당 참조 카운터가 증가합니다. 내가 아는 한, 오직IP 세트메타세트 list:set
합계iptables인용하다IP 세트. 사용하지 않거나 list:set
변경하지 않을 경우 직접 쿼리할 수 있습니다.IP 세트(와 함께 ipset list
) 참조 여부를 확인합니다.iptables.
예:
# ipset create sshd hash:ip
# ipset list
Name: sshd
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 88
References: 0
Number of entries: 0
Members:
# iptables -A INPUT -m set --match-set sshd src -j DROP
# ipset list sshd
Name: sshd
Type: hash:ip
Revision: 4
Header: family inet hashsize 1024 maxelem 65536
Size in memory: 88
References: 1
Number of entries: 0
Members:
참조 횟수가 증가합니다. 이 세트를 사용하여 새 명령을 추가하면 iptables
2로 늘어납니다. 등.
XML 형식 출력은 올바른 도구를 사용한 스크립팅에 유용할 수 있습니다. 예를 들어:
# references=$(ipset -terse -output xml list | xmlstarlet sel -t -v '/ipsets/ipset[@name="sshd"]/header/references')
# echo $references
2
답변2
-C
플래그 인을 사용하여 iptables
컬렉션이 존재하는지 확인할 수 있습니다 .
sudo iptables -C INPUT -m set --match-set sshd src -j DROP
컬렉션이 존재하지 않으면 반환 코드 > 0입니다.