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



답변

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

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 / netfilter에 대한 Iptables Tutorial 이 가장 유용한 문서라는 것을 알았습니다 .


답변

자세한 내용은 / proc / net / ipt_recent / SSH에서 찾을 수 있습니다.

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


답변

보다

/proc/net/ipt_recent/YOURNAME

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


답변

간단한 라이너 하나입니다 :

$ iptables -L -n --line


답변

입력 주소 스푸핑과 같이 내가하는 일은 체인을 정의하는 것입니다 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구성을 쉽게 읽을 수 있다는 이점이 있습니다. 규칙을 더 많이 추가할수록 특정 작업에 개별 체인을 사용하게 된 것을 기쁘게 생각합니다.


답변

“질문은 차단 된 IP 주소를 어떻게 나열합니까?”입니다.

금지 된 체인 만들기 :

iptables -N BANNED
iptables -F BANNED

로깅 체인을 만듭니다.

iptables -N BANNEDLOG
iptables -F BANNEDLOG
iptables -A BANNEDLOG -j LOG --log-prefix "BANNED:" --log-level 6
iptables -A BANNEDLOG -j DROP

대부분의 다른 규칙 전에 INPUT 체인의 금지 된 체인으로 점프 추가

...
iptables -A INPUT -j BANNED
...

이제 금지 된 체인에 ipaddress를 추가하십시오 :

flock -w 5 /var/lock/iptables -c 'iptables -A BANNED -s 140.130.20.202/32 -i eth0 -m comment --comment "2012-03-19 23:49:33 accesslog" -j BANNEDLOG'
etc...

주석 옵션이있는 데이터베이스처럼 사용할 수도 있으므로 많은 프로세스에서 iptables를 자주 업데이트 할 때 flock이 중요한 이유와 이유 등을 알 수 있습니다. iptables에는 잠금 기능이 내장되어 있지 않습니다.

금지 된 체인에서 금지 된 주소 및 규칙을 보려면

iptables -S BANNED

정렬 된 고유 ipaddress를 보려면

iptables -S BANNED | egrep -o '[0-9]+\.[0-9]+\.[0-9]+\.[0-9]+' | sort -u

내 서버에서 syslog 파일과 웹 로그를 확인하는 데몬이 많이 있으므로 누군가가 불쾌한 일을 시도하면 유형과 심각도 및 이전 공격 수에 따라 며칠 동안 주소가 자동으로 차단됩니다. 정보는 mysql 데이터베이스에 로그인하여 주기적으로 만료됩니다. 또한 주소는 mysql 복제를 통해 클러스터의 다른 모든 컴퓨터에 배포되므로 보호되고 동기화됩니다. 내 소프트웨어는 네트워크 소유자를 찾아서 ISP에 불만 사항을 메일로 보냅니다.

10 년 동안 일한 후 모든 사람들이 곧 사용할 수 있도록 노력하겠습니다. 현재 약 150 만 개의 IP 주소 기록과 수십만 건의 메일 및 ssh 공격이보고되어 네트워크를 정리하는 데 도움이됩니다. 더 많이 사용한다면 더 많은 영향을 미치기를 바랍니다.


답변