iptables에 의해 차단된 IP 주소를 어떻게 나열합니까?

iptables에 의해 차단된 IP 주소를 어떻게 나열합니까?

SSH에 대한 무차별 대입 공격을 방지하기 위해 몇 가지를 추가했습니다.iptables 규칙(아래에). 문제는 차단된 IP 주소를 어떻게 나열할 수 있는가입니다.

(1)
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --set --name SSH
iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl --name SSH -j DROP

답변1

한 가지 옵션은 다음과 같은 규칙을 사용하여 삭제된 패킷을 기록하는 것입니다.

iptables -A INPUT -i eth0 -p tcp --dport 22 -m state --state NEW -m recent --update --seconds 60 --hitcount 8 --rttl -j LOG --log-prefix "FW_DROPPED: "

규칙 바로 앞에 삽입하세요 DROP. 그런 다음 "FW_DROPPED"가 포함된 모든 항목에 대해 syslog 파일을 grep하면 IP 목록이 표시됩니다. 로그 파일의 항목은 다음과 같습니다.

Jun  3 08:05:57 some-machine kernel: [15852451.420557] FW_DROPPED: IN=eth0 OUT= MAC=00:50:ba:4a:d9:e3:00:12:17:3a:e3:64:08:00 SRC=228.23.45.189 DST=192.168.1.1 LEN=48 TOS=0x00 PREC=0x00 TTL=106 ID=10941 PROTO=TCP SPT=58212 DPT=22 WINDOW=65535 RES=0x00 SYN URGP=0

따라서 "SRC=" 다음에 나오는 내용을 잘라내면 삭제된 IP가 표시됩니다. 이를 정렬하여 중복 항목을 제거하면 목록이 생성됩니다.

나는 찾았다IPtables 튜토리얼iptables/netfilter에 대한 가장 유용한 문서가 될 것입니다.

답변2

/proc/net/ipt_recent/SSH에서 자세한 내용을 확인할 수 있습니다.

이 기사더 많은 정보가 있습니다.

답변3

보다

/proc/net/ipt_recent/YOURNAME

여기서 YOURNAME은 iptables 규칙에서 --name 옵션과 함께 사용한 이름입니다.

답변4

예를 들어 입력 주소 스푸핑을 위해 내가 하는 일은 체인을 정의하는 것입니다 SPOOF_REJECT.

iptables -N SPOOF_REJECT
iptables -A SPOOF_REJECT -j LOG --log-prefix "Input spoof detected: "
iptables -A SPOOF_REJECT -j REJECT

그런 다음 스푸핑된 경우 이 체인으로 패킷을 보냅니다.

iptables -A INPUT -i $EXT_DEV1 -s $INT_NET -j SPOOF_REJECT
iptables -A INPUT -i $EXT_DEV2 -s $INT_NET -j SPOOF_REJECT

삭제하거나 거부한 각 패킷 범주에 대해 이와 같은 작업을 수행하여 syslog에서 찾을 줄을 얻은 다음 주기적으로 grep, cut, sort를 수행하여 이러한 로그 줄에서 IP 주소만 가져올 수 있습니다.

각 범주에 대해 개별 체인을 사용하면 구성이 더 간단해지고 구성 을 읽기가 더 쉬워진다는 이점이 있습니다 iptables. 점점 더 많은 규칙을 추가하면 특정 작업에 개별 체인을 사용하게 되어 기쁠 것입니다.

관련 정보