
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
. 점점 더 많은 규칙을 추가하면 특정 작업에 개별 체인을 사용하게 되어 기쁠 것입니다.