ฉันจะแสดงที่อยู่ IP ที่ถูกบล็อกโดย iptables ได้อย่างไร


16

เพื่อป้องกันการโจมตีด้วยเดรัจฉานบังคับ 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 -L INPUT -v -nแสดง IP ที่ถูกบล็อกทั้งหมด
แบบไดนามิก

คำตอบ:


16

ทางเลือกหนึ่งคือการบันทึกแพ็กเก็ตที่ถูกทิ้งของคุณด้วยกฎเช่น:

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กฎ จากนั้นคุณสามารถ grep ไฟล์ syslog เพื่ออะไรก็ได้ด้วย "FW_DROPPED" ในนั้นและรายการของ 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 Tutorialเป็นเอกสารที่มีประโยชน์ที่สุดสำหรับ iptables / netfilter


ใช่นี่คือวิธีที่จะทำ
Brent

สิ่งนี้จะทำให้คุณต้องทำซ้ำกฎของคุณเนื่องจากคุณไม่ได้บันทึกและวางกฎเดียวกัน
David Pashley

3
มันจะดียิ่งขึ้นถ้าเขาสร้างห่วงโซ่ผู้ใช้ที่เขาบันทึกและวางแพ็กเก็ตที่ละเมิด ด้วยการทำเช่นนี้การทำซ้ำที่ไม่จำเป็นจะถูกลบออก มันสามารถทำได้เช่นนี้: การโจมตี iptables -N; iptables -A อินพุต -i eth0 -p tcp --dport 22 -m state - รัฐใหม่ -m ล่าสุด - อัปเดต - วินาที 60 - ยอด 8 - rttl - ชื่อ SSH -j โจมตี; iptables -A โจมตี -j LOG --log- คำนำหน้า "FW_DROPPED:"; iptables -A โจมตี -j DROP
Cristian Ciupitu

1
ตกลง ตาราง / โซ่เป็นวิธีที่จะไป; จุดรวมของ iptables จริงๆ ฉันสร้างตารางแยกต่างหากสำหรับการยอมรับการทิ้งแบบเงียบ ๆ ถูกปฏิเสธด้วยเสียงทิ้งถูกน้ำท่วมที่น่าสงสัยการโพรบที่สงสัยว่าน่าสงสัยการสแกนที่น่าสงสัยประเภทที่ไม่รู้จักและการรับส่งข้อมูลที่ดู FW ของฉันอ้างอิงจากสคริปต์เก่านี้ (คำเตือน: การโปรโมตตนเอง): code.google.com/p/klondike-firewall/source/browse/trunk/
yukondude

1
โมดูล ipt_recent ที่ ipozgaj และ David Pashley อ้างอิงนั้นเป็นการเพิ่มที่ดีแม้ว่ามันจะไม่สามารถให้เหตุผลที่ละเอียดเหมือนกันกับที่ IP ถูกทิ้งไว้ได้ ประวัติศาสตร์อันยาวนานของการโจมตีด้วย timestamps เป็นความคิดที่ดีที่จะใช้เทคนิคทั้งสองในคอนเสิร์ต
yukondude


4

ดูที่

/proc/net/ipt_recent/YOURNAME

โดยที่ YOURNAME เป็นชื่อที่คุณใช้กับ - ชื่อตัวเลือกในกฎ iptables ของคุณ


ใน distros (เช่น Debian) พา ธ ที่ถูกต้องคือ:/proc/net/xt_recent/[list-name]
itachi


1

สิ่งที่ฉันทำเช่นการปลอมแปลงที่อยู่อินพุทคือการกำหนดสายโซ่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การกำหนดค่าของคุณได้ง่ายขึ้น เมื่อคุณเพิ่มกฎมากขึ้นเรื่อย ๆ คุณจะดีใจที่คุณใช้การเชื่อมโยงแต่ละรายการสำหรับการกระทำที่แตกต่างกัน


คุณตรวจจับแพ็คเก็ตที่ถูกหลอกได้อย่างไร? จากประสบการณ์ของฉันมันเป็นไปไม่ได้ในกรณีทั่วไป
MarkR

ด้านบนเป็นเพียงตัวอย่าง ที่นี่ฉันกำลังมองหาแพ็คเก็ตใด ๆ ที่มาถึงเครือข่าย INPUT ที่มาจากอุปกรณ์ภายนอก แต่ก็อ้างว่ามาจากที่อยู่ IP ภายในเครือข่ายของฉัน ในกรณีนี้ฉันสามารถตรวจจับการปลอมแปลงที่อยู่ได้อย่างแน่นอน แต่ใช่ในกรณีทั่วไปสิ่งต่าง ๆ จะแตกต่างกัน
Eddie

1

"คำถามคือ: ฉันจะแสดงรายการที่อยู่ IP ที่ถูกบล็อกได้อย่างไร"

สร้างเชน BANNED:

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

เพิ่มข้ามไปยังแบนที่ถูกห้ามในห่วงโซ่การป้อนข้อมูลก่อนกฎอื่น ๆ ส่วนใหญ่

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

ตอนนี้เพิ่ม ipaddresses ไปยังเชนที่ถูกแบน:

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 กำลังได้รับการอัปเดตบ่อยครั้งในหลาย ๆ กระบวนการ - ปรากฏว่า iptables ไม่มีการล็อคใด ๆ

วิธีดูที่อยู่และกฎที่ถูกแบนในเชนที่ถูกแบน:

iptables -S BANNED

วิธีดูเฉพาะไอแพดที่ไม่ซ้ำกัน:

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

ฉันมี daemons จำนวนหนึ่งที่ทำงานบนเซิร์ฟเวอร์ของฉันเพื่อตรวจสอบไฟล์ syslog และเว็บบล็อกดังนั้นหากมีสิ่งใดที่น่ารังเกียจที่ใครบางคนกำลังพยายามที่อยู่อีเมลของพวกเขาจะถูกแบนโดยอัตโนมัติเป็นเวลาสองสามวันขึ้นอยู่กับประเภทและความรุนแรง ข้อมูลถูกบันทึกลงในฐานข้อมูล mysql และหมดอายุเป็นระยะ ที่อยู่จะถูกแจกจ่ายไปยังเครื่องอื่น ๆ ทุกเครื่องในคลัสเตอร์ผ่านการจำลองแบบ mysql ดังนั้นจึงได้รับการปกป้องและซิงค์อยู่เสมอ ซอฟต์แวร์ของฉันยังค้นหาเจ้าของเครือข่ายและส่งคำร้องเรียนไปยัง ISP

หลังจาก 10 ปีของการทำงานฉันหวังว่าจะทำให้ทุกคนสามารถใช้งานได้ในไม่ช้า ขณะนี้ฉันมีประวัติที่อยู่ IP ประมาณ 1.5 ล้านคนและมีรายงานการโจมตีเมลและ ssh หลายแสนรายการช่วยล้างเครือข่าย ถ้าใช้มากกว่านี้ฉันก็หวังว่ามันจะมีผลกระทบมากกว่านี้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.